TASK: Add acceptance tests with codeception
This commit is contained in:
parent
918e398ee1
commit
cfa83dc865
12 changed files with 2320 additions and 27 deletions
10
codeception.yml
Normal file
10
codeception.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
paths:
|
||||
tests: tests
|
||||
output: tests/_output
|
||||
data: tests/_data
|
||||
support: tests/_support
|
||||
envs: tests/_envs
|
||||
actor_suffix: Tester
|
||||
extensions:
|
||||
enabled:
|
||||
- Codeception\Extension\RunFailed
|
|
@ -30,7 +30,15 @@
|
|||
"workshop/example-extension": "@dev"
|
||||
},
|
||||
"require-dev": {
|
||||
"typo3/cms-lowlevel": "*"
|
||||
"typo3/cms-lowlevel": "*",
|
||||
"codeception/codeception": "^2.5",
|
||||
"typo3-console/php-server-command": "^0.2.0",
|
||||
"typo3/testing-framework": "^4.11"
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Codappix\\Tests\\": "tests/Classes"
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"typo3/cms": {
|
||||
|
|
2115
composer.lock
generated
2115
composer.lock
generated
File diff suppressed because it is too large
Load diff
61
tests/Classes/Acceptance/Typo3Environment.php
Normal file
61
tests/Classes/Acceptance/Typo3Environment.php
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
namespace Codappix\Tests\Acceptance;
|
||||
|
||||
/*
|
||||
* Copyright (C) 2018 Daniel Siepmann <coding@daniel-siepmann.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
use Codeception\Event\TestEvent;
|
||||
use Codeception\Event\SuiteEvent;
|
||||
use Codeception\Events;
|
||||
use PHPUnit\Framework\TestSuite;
|
||||
use TYPO3\CMS\Core\Utility\ArrayUtility;
|
||||
use TYPO3\TestingFramework\Core\Acceptance\Extension\BackendEnvironment;
|
||||
|
||||
class Typo3Environment extends BackendEnvironment
|
||||
{
|
||||
public function _initialize()
|
||||
{
|
||||
ArrayUtility::mergeRecursiveWithOverrule($this->config, [
|
||||
// 'typo3DatabaseDriver' => 'pdo_sqlite',
|
||||
'typo3DatabaseDriver' => 'pdo_mysql',
|
||||
'typo3DatabaseHost' => 'localhost',
|
||||
'typo3DatabaseUsername' => 'testing',
|
||||
'typo3DatabasePassword' => 'testing',
|
||||
'typo3DatabaseName' => 'workshopgitlabtesting',
|
||||
'typo3DatabasePort' => '3306',
|
||||
'coreExtensionsToLoad' => [
|
||||
'core',
|
||||
'extbase',
|
||||
'fluid',
|
||||
'fluid_styled_content',
|
||||
'frontend',
|
||||
'backend',
|
||||
],
|
||||
'testExtensionsToLoad' => [
|
||||
'typo3conf/ext/example_extension',
|
||||
],
|
||||
'xmlDatabaseFixtures' => [
|
||||
dirname(__FILE__) . '/../../acceptance/fixtures/full.xml',
|
||||
],
|
||||
]);
|
||||
|
||||
parent::_initialize();
|
||||
}
|
||||
}
|
0
tests/_data/.gitkeep
Normal file
0
tests/_data/.gitkeep
Normal file
2
tests/_output/.gitignore
vendored
Normal file
2
tests/_output/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
*
|
||||
!.gitignore
|
26
tests/_support/AcceptanceTester.php
Normal file
26
tests/_support/AcceptanceTester.php
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* Inherited Methods
|
||||
* @method void wantToTest($text)
|
||||
* @method void wantTo($text)
|
||||
* @method void execute($callable)
|
||||
* @method void expectTo($prediction)
|
||||
* @method void expect($prediction)
|
||||
* @method void amGoingTo($argumentation)
|
||||
* @method void am($role)
|
||||
* @method void lookForwardTo($achieveValue)
|
||||
* @method void comment($description)
|
||||
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
|
||||
*
|
||||
* @SuppressWarnings(PHPMD)
|
||||
*/
|
||||
class AcceptanceTester extends \Codeception\Actor
|
||||
{
|
||||
use _generated\AcceptanceTesterActions;
|
||||
|
||||
/**
|
||||
* Define custom actions here
|
||||
*/
|
||||
}
|
10
tests/_support/Helper/Acceptance.php
Normal file
10
tests/_support/Helper/Acceptance.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
namespace Helper;
|
||||
|
||||
// here you can define custom actions
|
||||
// all public methods declared in helper class will be available in $I
|
||||
|
||||
class Acceptance extends \Codeception\Module
|
||||
{
|
||||
|
||||
}
|
2
tests/_support/_generated/.gitignore
vendored
Normal file
2
tests/_support/_generated/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
*
|
||||
!.gitignore
|
18
tests/acceptance.suite.yml
Normal file
18
tests/acceptance.suite.yml
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Codeception Test Suite Configuration
|
||||
#
|
||||
# Suite for acceptance tests.
|
||||
# Perform tests in browser using the WebDriver or PhpBrowser.
|
||||
# If you need both WebDriver and PHPBrowser tests - create a separate suite.
|
||||
|
||||
actor: AcceptanceTester
|
||||
modules:
|
||||
enabled:
|
||||
-
|
||||
PhpBrowser:
|
||||
url: http://127.0.0.1:8080
|
||||
-
|
||||
\Helper\Acceptance
|
||||
|
||||
extensions:
|
||||
enabled:
|
||||
- Codappix\Tests\Acceptance\Typo3Environment
|
37
tests/acceptance/AddressCest.php
Normal file
37
tests/acceptance/AddressCest.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
class AddressCest
|
||||
{
|
||||
public function listsExistingRecords(AcceptanceTester $I)
|
||||
{
|
||||
$I->amOnPage('/plugin');
|
||||
$I->see('Codappix GmbH');
|
||||
}
|
||||
|
||||
public function canEditRecord(AcceptanceTester $I)
|
||||
{
|
||||
$I->amOnPage('/plugin');
|
||||
$I->see('Edit');
|
||||
$I->click('Edit');
|
||||
|
||||
$I->see('Editing: Codappix GmbH');
|
||||
$I->fillField(['id' => 'companyName'], 'TYPO3 Camp Rhein Ruhr');
|
||||
$I->click('Update');
|
||||
|
||||
$I->amOnPage('/plugin');
|
||||
$I->see('TYPO3 Camp Rhein Ruhr');
|
||||
}
|
||||
|
||||
public function zipValidatesAgainst5Digits(AcceptanceTester $I)
|
||||
{
|
||||
$I->amOnPage('/plugin');
|
||||
$I->see('Edit');
|
||||
$I->click('Edit');
|
||||
|
||||
$I->see('Editing: TYPO3 Camp Rhein Ruhr');
|
||||
$I->fillField(['id' => 'zip'], '123');
|
||||
$I->click('Update');
|
||||
|
||||
$I->see('Please provide a valid ZIP consisting of 5 digits.');
|
||||
}
|
||||
}
|
56
tests/acceptance/fixtures/full.xml
Normal file
56
tests/acceptance/fixtures/full.xml
Normal file
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dataset>
|
||||
<pages>
|
||||
<uid>1</uid>
|
||||
<pid>0</pid>
|
||||
<title>Plugin page</title>
|
||||
<doktype>1</doktype>
|
||||
<deleted>0</deleted>
|
||||
<perms_everybody>15</perms_everybody>
|
||||
<slug>/plugin</slug>
|
||||
</pages>
|
||||
|
||||
<sys_template>
|
||||
<uid>1</uid>
|
||||
<pid>1</pid>
|
||||
<title>Main TypoScript Rendering</title>
|
||||
<sitetitle>New TYPO3 site</sitetitle>
|
||||
<hidden>0</hidden>
|
||||
<starttime>0</starttime>
|
||||
<endtime>0</endtime>
|
||||
<root>1</root>
|
||||
<clear>1</clear>
|
||||
<include_static_file>EXT:fluid_styled_content/Configuration/TypoScript/,EXT:fluid_styled_content/Configuration/TypoScript/Styling/</include_static_file>
|
||||
<config><![CDATA[page = PAGE
|
||||
page.100 =< styles.content.get
|
||||
]]></config>
|
||||
<nextLevel></nextLevel>
|
||||
<basedOn></basedOn>
|
||||
<deleted>0</deleted>
|
||||
<includeStaticAfterBasedOn>0</includeStaticAfterBasedOn>
|
||||
<static_file_mode>0</static_file_mode>
|
||||
</sys_template>
|
||||
|
||||
<tt_content>
|
||||
<uid>1</uid>
|
||||
<pid>1</pid>
|
||||
<hidden>0</hidden>
|
||||
<sorting>256</sorting>
|
||||
<CType>list</CType>
|
||||
<colPos>0</colPos>
|
||||
<pages>1</pages>
|
||||
<list_type>exampleextension_address</list_type>
|
||||
<header>Address Plugin</header>
|
||||
</tt_content>
|
||||
|
||||
<tx_exampleextension_domain_model_address>
|
||||
<uid>1</uid>
|
||||
<pid>1</pid>
|
||||
<company_name>Codappix GmbH</company_name>
|
||||
<street>Hövelstraße</street>
|
||||
<house_number>32</house_number>
|
||||
<zip>41238</zip>
|
||||
<city>Mönchengladbach</city>
|
||||
<country>Deutschland</country>
|
||||
</tx_exampleextension_domain_model_address>
|
||||
</dataset>
|
Loading…
Reference in a new issue