- Added acceptance tests for the Newsletters page

- Added a shim to make PhantomJS work with React (temporary workaround)
- Removed asset compilation during acceptance testing
Closes #111
This commit is contained in:
MrCasual
2015-09-07 20:03:47 -04:00
parent 4b8259edf4
commit 2cc24ae965
4 changed files with 68 additions and 17 deletions

View File

@ -95,7 +95,6 @@ class RoboFile extends \Robo\Tasks {
function testAcceptance($file = null) {
$this->loadEnv();
$this->compileAll();
$this->_exec('vendor/bin/codecept build');
$this
->taskExec('phantomjs --webdriver=4444')

View File

@ -1,6 +1,5 @@
<?php
/**
* Inherited Methods
* @method void wantToTest($text)
@ -15,18 +14,19 @@
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = null)
*
* @SuppressWarnings(PHPMD)
*/
class AcceptanceTester extends \Codeception\Actor
{
use _generated\AcceptanceTesterActions;
*/
class AcceptanceTester extends \Codeception\Actor {
use _generated\AcceptanceTesterActions;
/**
* Define custom actions here
*/
public function login() {
$this->amOnPage('/wp-login.php');
$this->fillField('Username', getenv('WP_TEST_USER'));
$this->fillField('Password', getenv('WP_TEST_PASSWORD'));
$this->click('Log In');
}
/**
* Define custom actions here
*/
public function login() {
if($this->loadSessionSnapshot('login')) return;
$this->amOnPage('/wp-login.php');
$this->fillField('Username', getenv('WP_TEST_USER'));
$this->fillField('Password', getenv('WP_TEST_PASSWORD'));
$this->click('Log In');
$this->saveSessionSnapshot('login');
}
}

View File

@ -1,15 +1,66 @@
<?php
class NewslettersPageCest {
use Helper\Acceptance;
class NewslettersPageCest {
function _before(AcceptanceTester $I) {
$I->login();
$I->resizeWindow(1024, 768);
$this->firstElementInList = '//*[@id="newsletters"]/div/div/table/tbody/tr[1]';
$this->waitTime = 2;
}
function iCanSeeTheTitle(AcceptanceTester $I) {
$I->amOnPage('/wp-admin/admin.php?page=mailpoet-newsletters');
$I->see('Newsletters');
}
function iCanAddNewsletterFromListingPage(AcceptanceTester $I) {
$I->see('No newsletters found');
$I->click('New', '#newsletters');
$I->fillField('Subject', 'first newsletter');
$I->fillField('Body', 'some body');
$I->click('Save');
$I->waitForText('1 item', $this->waitTime);
}
function iCanAddNewsletterFromNewNewsletterPage(AcceptanceTester $I) {
$I->amOnPage('/wp-admin/admin.php?page=mailpoet-newsletters#/form');
$I->fillField('Subject', 'second newsletter');
$I->fillField('Body', 'some body');
$I->click('Save');
$I->waitForText('2 item', $this->waitTime);
}
function iCanSortNewsletterBySubject(AcceptanceTester $I) {
$I->click('Subject');
$I->waitForText('first', $this->waitTime, $this->firstElementInList);
$I->click('Subject');
$I->waitForText('second', $this->waitTime, $this->firstElementInList);
}
function iCanSortNewsletterByCreatedDate(AcceptanceTester $I) {
$I->click('Created on');
$I->waitForText('first', $this->waitTime, $this->firstElementInList);
$I->click('Created on');
$I->waitForText('second', $this->waitTime, $this->firstElementInList);
}
function iCanSearchNewsletters(AcceptanceTester $I) {
$searchTerm = 'second';
$I->fillField('Search', $searchTerm);
$I->click('Search');
$I->waitForText($searchTerm, $this->waitTime, $this->firstElementInList);
}
function iCanSeeMobileView(AcceptanceTester $I) {
$listingHeadings = '//*[@id="newsletters"]/div/div/table/thead';
$I->resizeWindow(640, 480);
$I->dontSee('Created on', $listingHeadings);
$I->dontSee('Last modified', $listingHeadings);
$I->see('Subject', $listingHeadings);
}
function _after(AcceptanceTester $I) {
}

View File

@ -23,6 +23,7 @@
<!-- javascripts -->
<%= javascript(
'acceptance_test_phantomjs_shim.js',
'vendor.js',
'mailpoet.js',
'admin.js'