--- layout: doc title: Configuration - Codeception - Documentation --- # Configuration ## Global Configuration: `codeception.yml` The global configuration file `codeception.yml` is generated by the `codecept bootstrap` command. Alphabetical list of options: ### `actor_suffix` Sets the suffix for "Actor" classes. Default: `Tester`. If you set it to `Ninja` and generate a new `api` test suite, you will get an `ApiNinja` actor class. ### `bootstrap` Bootstrap script that will be executed before all suites. A script should be put into `tests` directory. ### `coverage` [CodeCoverage](https://codeception.com/docs/11-Codecoverage#Configuration) settings. ### `extends` Allows you to specify a file (relative to the `codeception.yml` file) that holds some already pre-defined values. This can be used to always use the same configuration for modules or whatever. ### `extensions` Allows to enable and configure [Codeception extensions](https://codeception.com/docs/08-Customization#Extension), [Group Objects](https://codeception.com/docs/08-Customization#Group-Objects), and [Custom Commands](https://codeception.com/docs/08-Customization#Custom-Commands). ### `gherkin` [Gherkin options](https://codeception.com/docs/07-BDD#Configuration). ### `include` Include additional Codeception configurations for [multiple applications setup](https://codeception.com/docs/08-Customization#Namespaces). ### `modules` Allows to create shared module configuration for all included suites. {% highlight yaml %} modules: config: Db: dsn: '' user: '' password: '' dump: tests/_data/dump.sql {% endhighlight %} ### `namespace` Sets the namespace under which all new tests and support classes will be generated. Allows to configure [multiple test setups for one runner](https://codeception.com/docs/08-Customization#Namespaces). ### `params` Allows to pass [external parameters](https://codeception.com/docs/06-ModulesAndHelpers#Dynamic-Configuration-With-Parameters) into module configuration. ### `paths` Directories used by Codeception. Default values: {% highlight yaml %} paths: tests : tests # where the tests stored data : tests/_data # directory for fixture data support: tests/_support # directory for support code output : tests/_output # directory for output envs : tests/_envs # directory for environment configuration {% endhighlight %} ### `reporters` Allows to [change default reporters](https://codeception.com/docs/08-Customization#Custom-Reporters) of Codeception ### `settings` Provide additional options for the test runner. They may dramatically change the way Codeception is executed. For instance, take a note of `shuffle` option which allows to randomize tests execution order and `lint` option that toggles parsing a test file (using `php -l`) before loading it. Syntax example: {% highlight yaml %} settings: colors: true {% endhighlight %} Possible settings: * `backup_globals: true`: Controls whether PHPUnit attempts to backup global variables, see https://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.backupGlobals * `be_strict_about_changes_to_global_state: false`: PHPUnit can be strict about tests that manipulate global state, see https://phpunit.de/manual/current/en/risky-tests.html#risky-tests.global-state-manipulation * `colors: true`: By default this is false on Windows. Use [ANSICON](https://github.com/adoxa/ansicon) to colorize output. * `convert_deprecations_to_exceptions: false` Converts E_DEPRECATED and E_USER_DEPRECATED events to exceptions. Introduced in Codeception 4.2.0 * `disallow_test_output: false`: PHPUnit can be strict about output during tests, see https://phpunit.de/manual/current/en/risky-tests.html#risky-tests.output-during-test-execution * `editor_url: 'atom://core/open/file?filename=%%file%%&line=%%line%%'`: In the console output, the test runner will replace all references to files with "clickable" URL's, allowing you to open the file directly in your IDE. Depending on your operating system, you may have to set up an appropriate uri handler. Syntax for some common editors (same as in [PHPStan](https://phpstan.org/user-guide/output-format#opening-file-in-an-editor)): * PhpStorm: `'phpstorm://open?file=%%file%%&line=%%line%%'` * Visual Studio Code: `'vscode://file/%%file%%:%%line%%'` * Atom: `'atom://core/open/file?filename=%%file%%&line=%%line%%'` * `error_level: E_ALL & ~E_STRICT & ~E_DEPRECATED`: Set the error_reporting level. You can specify either a predefined constant or an integer value, see https://www.php.net/manual/en/function.error-reporting.php and https://www.php.net/manual/en/errorfunc.constants.php * `memory_limit: 1024M`: Tests (especially functional) can take a lot of memory. We set a high limit for them by default. * `lint: true`: Enable/disable syntax of test files before loading. For PHP < 7 `exec('php -l')` is used. Disable if you need to speed up tests execution. * `log_incomplete_skipped: false`: Log the incomplete and skipped tests into junit report ,see https://phpunit.de/manual/current/en/appendixes.configuration.html Section logging > junit * `report_useless_tests: false`: PHPUnit can be strict about tests that do not test anything, see https://phpunit.de/manual/current/en/risky-tests.html#risky-tests.useless-tests * `shuffle: true`: Randomize test order * `strict_xml: false`: Generate XML JUnit report using strict schema. Avoid putting additional report fields like steps or scenario names to it. Required for XML reports on Jenkins CI ## Suite Configuration: `unit.suite.yml`, `functional.suite.yml` etc. Each suite has its own configuration inside the directory set by `paths: tests: ` in `codeception.yml`. Alphabetical list of options: ### `actor` Name of the "Actor" class of the current suite. ### `bootstrap` Bootstrap script that will be executed before current suite. A script should be put into suite directory. ### `coverage` Per suite [CodeCoverage](https://codeception.com/docs/11-Codecoverage#Configuration) settings. ### `env` Override any configuration per [environment](https://codeception.com/docs/07-AdvancedUsage#Environments). ### `error_level` [error level](https://codeception.com/docs/04-FunctionalTests#Error-Reporting) for runner in the current suite. Can be specified for unit, integration, functional tests. Passes value to `error_reporting` function. ### `extends` Allows you to specify a file (relative to `*.suite.yml`) that holds some already pre-defined values. This can be used to always use the same configuration for modules or whatever. ### `gherkin` Per suite [Gherkin](https://codeception.com/docs/07-BDD#Configuration) settings. ### `groups` [groups](https://codeception.com/docs/07-AdvancedUsage#Groups) with the list of tests of for corresponding group. ### `formats` [formats](https://codeception.com/docs/07-AdvancedUsage#Formats) with the list of extra test format classes. ### `modules` List of enabled modules with their configuration. {% highlight yaml %} modules: enabled: - PhpBrowser: # built-in modules are listed by their names url: http://localhost # module configuration - Db # Module without configuration (or inherited from `codeception.yml`) - \Helper\Acceptance # helper names are listed by their class names, starting with `\` # Additional modules configuration; can be used for modules which are not currently enabled config: WebDriver: browser: firefox disabled: - WebDriver # modules disabled for this suite {% endhighlight %} ### `namespace` Default namespace of actor, support classes and tests. ### `suite_namespace` Default namespace for new tests of this suite (ignores `namespace` option) ## Configuration Templates: `*.dist.yml` To provide the same configuration template for your development team, you can create a `codeception.dist.yml` config file, which will be loaded before `codeception.yml`. The dist config provides shared options, while local `codeception.yml` files override them on a per-installation basis. Therefore, `codeception.yml` should be ignored by your VCS system. Config templates can also be used for suite configuration, by creating a `suitename.suite.dist.yml` file. Configuration loading order: 1. `codeception.dist.yml` 2. `codeception.yml` 3. `acceptance.suite.dist.yml` 4. `acceptance.suite.yml` 5. environment config