Running checks & tests

Most code checks and tests can be run via Composer commands.

Composer scripts

For most development-related tasks, this extension provides Composer scripts. If you are working locally, you can run them using composer <scriptname>. If you are working with ddev, you can run them with ddev composer <scriptname>. You do not need to start or build the containers for this as this happens automatically.

The code-quality-related Composer scripts make use of the PHIVE-installed tools. This means that for non-ddev-based development, you need to run phive install before you can use the Composer scripts.

You can run composer (or ddev composer) to display a list of all available Composer commands and scripts. For all custom Composer scripts there are descriptions in the script-description section of the composer.json.

Running code checks

You can currently run these code checks on the command line (if working locally without ddev, omit the ddev part):

ddev composer ci

Runs all dynamic and static code checks.

ddev composer ci:composer:normalize

Checks the composer.json.

ddev composer ci:json:lint

Lints the JSON files.

ddev composer ci:php

Runs all static checks for the PHP files.

ddev composer ci:php:cs-fixer

Checks the code style with the PHP Coding Standards Fixer (PHP-CS-Fixer).

ddev composer ci:php:lint

Lints the PHP files for syntax errors.

ddev composer ci:php:sniff

Checks the code style with PHP_CodeSniffer (PHPCS).

ddev composer ci:php:stan

Checks the PHP types using PHPStan.

ddev composer ci:static

Runs all static code checks (syntax, style, types).

ddev composer ci:ts:lint

Lints the TypoScript files.

ddev composer ci:yaml:lint

Lints the YAML files.

ddev composer fix:php

Runs all fixers for the PHP code.

ddev composer fix:php:cs

Fixes the code style with PHP-CS-Fixer.

ddev composer fix:php:sniff

Fixes the code style with PHP_CodeSniffer.

ddev composer phpstan:baseline

Updates the PHPStan baseline file to match the code.

Running unit and functional tests

You can currently run these tests and coverages on the command line (if working locally without ddev, omit the ddev part):

ddev composer ci:coverage

Runs the ci:coverage script as defined in composer.json.

ddev composer ci:coverage:functional

Generates the code coverage report for functional tests.

ddev composer ci:coverage:merge

Merges the code coverage reports for unit and functional tests.

ddev composer ci:coverage:unit

Generates the code coverage report for unit tests.

ddev composer ci:dynamic

Runs all PHPUnit tests (unit and functional).

ddev composer ci:tests

Runs all PHPUnit tests (unit and functional).

ddev composer ci:tests:functional

Runs the functional tests.

ddev composer ci:tests:unit

Runs the unit tests.

Running unit and functional tests in PHPStorm

General setup

  • Open File > Settings > PHP > Test Frameworks.

  • (*) Use Composer autoloader.

  • Path to script: select .Build/vendor/autoload.php in your project folder.

In the Run configurations, edit the PHPUnit configuration and use these settings so this configuration can serve as a template:

  • Directory: use the Tests/Unit directory in your project.

  • (*) Use alternative configuration file.

  • Use .Build/vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml in your project folder.

  • Add the following environment variables:

    • typo3DatabaseUsername

    • typo3DatabasePassword

    • typo3DatabaseHost

    • typo3DatabaseName

Unit tests configuration

In the Run configurations, copy the PHPUnit configuration and use these settings:

  • Directory: use the Tests/Unit directory in your project

Functional tests configuration

In the Run configurations, copy the PHPUnit configuration and use these settings:

  • Directory: use the Tests/Functional directory in your project.

  • (*) Use alternative configuration file.

  • Use .Build/vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml.