This page is pulled from project's readme. Links could be broken.

Latest Stable Version Total Downloads Build Status Scrutinizer Code Quality PHP Versions Tested StyleCI Dependency Status License Donate via PayPal Hire Typist Tech

Create throw away composer projects for Codeception tests.


Because it good to test your code in a more realistic environment.

The Goals, or What This Module Does?

Create throw away composer projects for Codeception tests.

Before each test:

  • Copy composer project files to a temporary directory
  • Config local packages paths
  • Install package via composer
  • Change directory into the temporary directory

After each test:

  • Delete the temporary directory


Installation should be done via composer, details of how to install composer can be found at

$ composer require typisttech/codeception-composer-project-module --dev


In your Codeception config file (e.g: acceptance.suite.yml or acceptance.yml):

This is the minimal config:

        - ComposerProject:
            projectRoot: 'path/to/composer/project'
                - Cli
                - Filesystem

This is the full config:

        - ComposerProject:
            projectRoot: 'path/to/composer/project'
            composerInstallFlags: '--no-interaction --quiet'
            symlink: 'true'
                - 'tests/_data/dummy'
                - 'tests/_data/another-dummy'
                - Cli
                - Filesystem


Required String

Example: tests/_data/project

Path to the composer project directory, relative to the root directory (where codeception.yml is located). This directory must contain a composer.json file.


Optional String

Example: --no-interaction --verbose --no-ansi

Default: --no-interaction --quiet

Extra flags to pass in during composer install.

See: $ composer help install


Optional Boolean in single quotes

Example: 'false'

Default: 'true'

Should the local packages be symlink-ed or not.

See: Composer document


Optional Array of strings


- 'tests/_data/dummy'
- 'tests/_data/another-dummy'

Default: The root directory (where codeception.yml is located).

Paths to local packages, relative to the root directory (where codeception.yml is located).

See: Composer document



Change directory to the temporary project directory

  • @return void




Run a composer command

  • @param string $command
    • @param bool $failNonZero Optional. Default: true Fails If exit code is > 0.
    • @return void


$I->runComposerCommand('update --verbose');

// This is equivalent to running `$ composer update --verbose` in the console.


Run composer install with composerInstallFlags

  • @return void




Get the path to the temporary project directory

Note: Return value maybe a symbolic link.

  • @return string



// To ensure real path:
$tmpProjectDir = $I->getTmpProjectDir();
$tmpProjectDir = realpath($tmpProjectDir);

Frequently Asked Questions

I want to see what Codeception Composer Project Module have done for me?

Run the tests with the --debug flag.

Codeception Composer Project Module will log debug message to the console.

What to do when composer install fail or not install the latest version?

Your requirements could not be resolved to an installable set of packages.

Make sure you have package version constraints and minimum stability set up correctly.

    "require": {
        "dummy/dummy": "*"
    "minimum-stability": "dev"

What to do when the tests are too slow?

Note: These methods might not suitable for your use case.

Does it works on codeception/base?

Yes. This module works on both codeception/codeception and codeception/base

Do you have real life examples that use this composer plugin?

Here you go:


Donate via PayPal Donate via PayPal

Love Codeception Composer Project Module? Help me maintain Codeception Composer Project Module, a donation here can help with it.

Donate Monero

Send Monero to my public address: 43fiS7JzAK7eSHCpjTL5J1JYqPb6pvM2dGex7aoFZ5u5e5QRg6NKNnFGXqPh6C53E3M8UvqzemVt43uLgimwDpW41zXUHAp

Mine me some Monero

  1. Open one of the follow web pages open on your computer
  2. Start the miner
  3. Adjust threads and CPU usages
  4. Keep it running

If you have an AdBlocker:


Why don't you hire me?

Ready to take freelance WordPress jobs. Contact me via the contact form here or, via email [email protected]

Want to help in other way? Want to be a sponsor?

Contact: Tang Rufus


To setup a developer workable version you should run these commands:

$ composer create-project --keep-vcs --no-install typisttech/codeception-composer-project-module:dev-master
$ cd codeception-composer-project-module
$ composer install

Running the Tests

Codeception Composer Project Module run tests on Codeception.

Run the tests:

$ composer test

We also test all PHP files against PSR-2: Coding Style Guide.

Check the code style with $ composer check-style and fix it with $ composer fix-style.


Please provide feedback! We want to make this library useful in as many projects as possible. Please submit an issue and point out what you do and don't like, or fork the project and make suggestions. No issue is too small.

Change log

Please see CHANGELOG for more information on what has changed recently.


If you discover any security related issues, please email [email protected] instead of using the issue tracker.


Please see CONTRIBUTING and CODE_OF_CONDUCT for details.


Codeception Composer Project Module is a Typist Tech project and maintained by Tang Rufus, freelance developer for hire.

Full list of contributors can be found here.


The MIT License (MIT). Please see License File for more information.