Codeceptjs Docker

CodeceptJS packed into container with the Nightmare, Protractor, Puppeteer, and WebDriverIO drivers.

How to Use

This image comes with the necessary dependencies and packages to execute CodeceptJS tests. Mount in your CodeceptJS config directory into the /tests directory in the docker container.

Sample mount: -v path/to/codecept.json:/tests

CodeceptJS runner is available inside container as codeceptjs.


You can execute CodeceptJS with Puppeteer or Nightmare locally with no extra configuration.

docker run --net=host -v $PWD:/tests codeception/codeceptjs

To customize execution call codeceptjs command:

# run tests with steps
docker run --net=host -v $PWD:/tests codeception/codeceptjs codeceptjs run --steps

# run tests with @user in a name
docker run --net=host -v $PWD:/tests codeception/codeceptjs codeceptjs run --grep "@user"

Docker Compose

version: '2'
    image: codeception/codeceptjs
      - firefox
      - web
      - .:/tests
    image: node
    command: node app/server.js
      - .:/app
    image: selenium/standalone-firefox-debug:2.53.0
      - '4444'
      - '5900'

Linking Containers

If using the Protractor or WebDriverIO drivers, link the container with a Selenium Standalone docker container with an alias of selenium. Additionally, make sure your codeceptjs.conf.js contains the following to allow CodeceptJS to identify where Selenium is running.

  helpers: {
    WebDriverIO: {
      host: process.env.HOST
$ docker run -d -P --name selenium-chrome selenium/standalone-chrome

# Alternatively, selenium/standalone-firefox can be used

$ docker run -it --rm -v /<path_to_codeceptjs_test_dir>/:/tests/ --link selenium-chrome:selenium codeception/codeceptjs

You may run use -v $(pwd)/:tests/ if running this from the root of your CodeceptJS tests directory. Note: The output of your test run will appear in your local directory if your output path is ./output in the CodeceptJS config Note: If running with the Nightmare driver, it is not necessary to run a selenium docker container and link it. So --link selenium-chrome:selenium may be omitted


To build this image:

docker build -t codeception/codeceptjs .

Passing Options

Options can be passed by calling codeceptjs:

docker run -v $PWD:/tests codeception/codeceptjs codeceptjs run --debug

Alternatively arguments to codecept run command can be passed via CODECEPT_ARGS environment variable. For example to run your tests with debug output:

version: '2'
    image: codeception/codeceptjs
      - CODECEPT_ARGS=--debug
      - .:/tests