portrino / codeception-helper-module
Generic helper module for codeception acceptance testing
Installs: 2 187
Dependents: 1
Suggesters: 0
Security: 0
Stars: 4
Watchers: 8
Forks: 2
Open Issues: 1
Requires
- codeception/codeception: ~2.3
- composer/semver: ~1.4.2
- ocramius/package-versions: ~1.1.3
- symfony/process: ~3.3.10 || ~2.7
Requires (Dev)
- phpstan/phpstan: ^0.8
- phpunit/phpunit: ~6.4
- squizlabs/php_codesniffer: ~3.0.2
README
Collection of modules for codeception acceptance testing with TYPO3 and Shopware. You can use this module as base for your codeception acceptance testsuite. It provides a set of modules, abstract page objects and interfaces to make acceptance testing a bit cleaner and easier in context of TYPO3 and Shopware.
Installation
You need to add the repository into your composer.json file
composer require --dev portrino/codeception-helper-module
Modules
You can use module(s) as any other codeception module, by adding '\Codeception\Module\Portrino******' to the enabled modules in your codeception suite configurations.
Database module
modules: enabled: - \Portrino\Codeception\Module\Database: depends: Db no_reset: true # do not reset database after testsuite
Update codeception build
codecept build
Methods
truncateTableInDatabase($table)
Truncates the $table
.
$I->truncateTableInDatabase($table);
deleteFromDatabase($table, $criteria)
Deletes the row(s) from $table
matching the $criteria
$I->deleteFromDatabase($table, $criteria);
TYPO3 module
modules: enabled: - \Portrino\Codeception\Module\Typo3: depends: Asserts domain: www.example.com
Update codeception build
codecept build
Methods
executeCommand
Executes the specified typo3_console $command
.
$I->executeCommand($command, $arguments = [], $environmentVariables = [])
executeSchedulerTask
Executes tasks that are registered in the scheduler module.
$I->executeSchedulerTask($taskId, $force = false, $environmentVariables = [])
flushCache
Flushes TYPO3 core caches first and after that, flushes caches from extensions.
$I->flushCache($force = false, $filesOnly = false)
flushCacheGroups
Flushes all caches in specified groups. Valid group names are by default:
- all
- lowlevel
- pages
- system
$I->flushCacheGroups($groups)
importIntoDatabase
Import $file into database.
$I->importIntoDatabase($file)
Shopware module
modules: enabled: - \Portrino\Codeception\Module\Shopware: depends: Asserts bin-dir:
Update codeception build
codecept build
Methods
executeCommand
Executes the specified shopware_console $command
.
$I->executeCommand($command, $arguments = [], $environmentVariables = []);
runSqlCommand
Executes SQL query in shopware_console.
$I->runSqlCommand($sql);
activatePlugin
Activates Shopware plugin.
$I->activatePlugin($plugin);
installPlugin
Install Shopware plugin. If activate = true, the plugin will be activated after installation.
$I->installPlugin($plugin, $activate);
refreshPluginList
Refresh Shopware plugin-list. You need to call this sometimes before installing a plugin.
$I->refreshPluginList();
regenerateThemeCache
Regenerates the theme-cache.
$I->regenerateThemeCache();
clearCache
Clear Shopware cache.
$I->clearCache();
setPluginConfiguration
Set configuration of Shopware plugin by plugin-name, configuration-key and configuration-value.
- you'll be able to set cofigurations for a specified shop by using the $shop parameter
$I->setPluginConfiguration($plugin, $key, $value, $shop = 1);
Interfaces
You should use our constants defined in some interfaces to prevent typos and make refactoring easier.
TYPO3
\Portrino\Codeception\Interfaces\DatabaseTables\Typo3Database
\Portrino\Codeception\Interfaces\Cookies\Typo3Cookie
\Portrino\Codeception\Interfaces\Commands\Typo3Command
Example:
$I->seeInDatabase( \Portrino\Codeception\Interfaces\DatabaseTables\Typo3::PAGES, [ 'uid' => 123, ] );
Shopware
\Portrino\Codeception\Interfaces\DatabaseTables\ShopwareDatabase
\Portrino\Codeception\Interfaces\Cookies\ShopwareCookie
\Portrino\Codeception\Interfaces\Commands\ShopwareCommand
$I->seeInDatabase( \Portrino\Codeception\Interfaces\DatabaseTables\Shopware::ARTICLE, [ 'id' => 123, ] );
Fixtures Helper
For the sake of simplicity we added an little Helper for the Codeception Fixture feature.
Please add in your _bootstrap.php file
'__model' => \Portrino\Codeception\Model\Typo3\Typo3FrontendUser::class,
as the first entry in your Fixture array. your Fixture has to look like
\Codeception\Util\Fixtures::add( 'your_fixture_name', [ '__model' => \Portrino\Codeception\Model\Typo3\Typo3FrontendUser::class, 'fixtureValueX' => 'X', 'fixtureValueY' => 'Y' ] );
now you'll be able to use your Fixture with our adapted Fixtures class
\Portrino\Codeception\Util\Fixtures::get('your_fixture_name');
Hints
Use codeception with shopware
Due the fact that shopware only supports some very old versions of packages like guzzlehttp/guzzle
or symfony/process
,
we advise you to put all the testing stuff into a indepented composer.json file under a seperate location like web/tests/Codeception/
. Do not add codeception\codeception
package into the root composer.json of shopware - you will get trouble.
Autoloading
To autoload vendor packages you have to require_once the autoload.php in your composers _bootstrap.php
file.
require_once(__DIR__ . '/../../../../web/autoload.php');
Authors
- André Wuttig - Initial work, Unit Tests - aWuttig
- Leopold Engst - Unit Tests, Documentation - leen2104
- Axel Böswetter - Bugfixes - EvilBMP
See also the list of contributors who participated in this project.