configurationcodeceptionenvironments

Codeception environment configuration not working


Codeception: Configuration file(s) placed in tests/_envs are not working. I am trying to run my acceptance tests in multiple environments (ex. dev, qa, staging, prod). So I have setup dev.yml, qa.yml, staging.yml and prod.yml files under tests/_env directory. Each of those separate environment I am overriding the WebDriver - url.

file - dev.yml

modules:
    config:
        WebDriver:
            url: 'dev.mysite.local'

Then when I try to run the acceptance test suite using one of the environment, ex

./vendor/bin/codecept run acceptance --env dev 

It doesn’t pull in the dev configuration, but instead uses the default configuration from acceptance.suite.yml file. What am I doing wrong?


Solution

  • There is a bug in the codeception/configuration.php file where a wrong regular expression has been used, which prevents .yml file from being loaded. However, dist.yml files loads just fine. They have already pushed a change for this bug.

    In case you don't have this changeset, you can manually change it on your codeception/configuration.php file or simply use the dist.yml extension.

    Wrong regex:

    $envFiles = Finder::create()
            ->files()
            ->name('*{.dist}.yml')
            ->in($path)
            ->depth('< 1');
    

    Correction:

        $envFiles = Finder::create()
            ->files()
            ->name('*.yml')
            ->in($path)
            ->depth('< 1');
    

    Thanks to sjableka for the answer posted on the Codeception repo.