Codeceptjs Docker

# 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.conf.js:/tests

CodeceptJS runner is available inside container as codeceptjs.

# Locally

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'
services:
  codeceptjs:
    image: codeception/codeceptjs
    depends_on:
      - firefox
      - web
    volumes:
      - .:/tests
  web:
    image: node
    command: node app/server.js
    volumes:
      - .:/app
  firefox:
    image: selenium/standalone-firefox-debug:2.53.0
    ports:
      - '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

# Build

To build this image:

docker build -t codeception/codeceptjs .
  • this directory will be added as /codecept insde container
  • tests directory is expected to be mounted as /tests
  • codeceptjs is a synlink to /codecept/bin/codecept.js

To build this image with your desired Node version:

docker build -t codeception/codeceptjs . --build-arg NODE_VERSION=12.10.0

# 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'
services:
  codeceptjs:
    image: codeception/codeceptjs
    environment:
      - CODECEPT_ARGS=--debug
    volumes:
      - .:/tests

You can also use run-workersto run tests by passing NO_OF_WORKERS, additionally, you can pass more params like showing the debug info as the following example:

version: '2'
services:
  codeceptjs:
    image: codeception/codeceptjs
    environment:
      - NO_OF_WORKERS=3
      - CODECEPT_ARGS=--debug
    volumes:
      - .:/tests
Last Updated: 2/19/2020, 12:14:08 AM