UNPKG

codeceptjs

Version:

Modern Era Acceptance Testing Framework for NodeJS

138 lines (103 loc) 3.57 kB
# 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. ```sh docker run --net=host -v $PWD:/tests codeception/codeceptjs ``` To customize execution call `codeceptjs` command: ```sh # 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 ```yaml 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. ```javascript ... helpers: { WebDriverIO: { ... host: process.env.HOST ... } } ... ``` ```sh $ 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: ```sh 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: ```sh 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: ```yaml version: '2' services: codeceptjs: image: codeception/codeceptjs environment: - CODECEPT_ARGS=--debug volumes: - .:/tests ``` You can also use `run-workers`to run tests by passing `NO_OF_WORKERS`, additionally, you can pass more params like showing the debug info as the following example: ```yaml version: '2' services: codeceptjs: image: codeception/codeceptjs environment: - NO_OF_WORKERS=3 - CODECEPT_ARGS=--debug volumes: - .:/tests ```