CodeceptJS Docker & Self-Hosted Deployment

GitHub

Supercharged End 2 End Testing Framework for NodeJS

RAW Compose
1. Pull Image (DOCKERHUB) docker pull codeception/codeceptjs
2. Docker Run (1-Click Launch) docker run -d --name codeceptjs --restart always codeception/codeceptjs:latest
3. Podman Run podman run -d --name codeceptjs --restart always codeception/codeceptjs:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/codeception/codeceptjs:latest
5. ORAS Pull (OCI Artifact) oras pull codeception/codeceptjs:latest
6. Compose Deployment docker compose up -d
test/docker-compose.yml
Download .yml
version: '3'
services:
  test-unit:
    build: ..
    entrypoint: /codecept/node_modules/.bin/mocha
    command: test/unit
    working_dir: /codecept
    volumes:
      - ..:/codecept
      - node_modules:/codecept/node_modules

  test-runner:
    image: node:12.13-slim
    entrypoint: /codecept/node_modules/.bin/mocha
    command: test/runner
    working_dir: /codecept
    volumes:
      - ..:/codecept
      - node_modules:/codecept/node_modules

  test-helpers:
    build: ..
    entrypoint: /codecept/node_modules/.bin/mocha --invert --fgrep Appium
    command: test/helper
    working_dir: /codecept
    env_file: .env
    depends_on:
      - selenium.chrome
      - php
      - json_server
    volumes:
      - ..:/codecept
      - node_modules:/codecept/node_modules

  test-rest:
    build: ..
    entrypoint: /codecept/node_modules/.bin/mocha
    command: test/rest
    working_dir: /codecept
    env_file: .env
    depends_on:
      - json_server
    volumes:
      - ..:/codecept
      - node_modules:/codecept/node_modules

  test-graphql:
    build: ..
    entrypoint: /codecept/node_modules/.bin/mocha
    command: test/graphql
    working_dir: /codecept
    env_file: .env
    depends_on:
      - json_server-graphql
    volumes:
      - ..:/codecept
      - node_modules:/codecept/node_modules

  test-runner:
    build: ..
    entrypoint: /codecept/node_modules/.bin/mocha
    command: test/runner
    working_dir: /codecept
    volumes:
      - ..:/codecept
      - node_modules:/codecept/node_modules

  test-acceptance.webdriverio:
    build: ..
    env_file: .env
    environment:
      - CODECEPT_ARGS=-c codecept.WebDriver.js --grep @WebDriverIO --debug
    depends_on:
      - php
      - selenium.chrome
    volumes:
      - ./acceptance:/tests
      - ./data:/data
      - ./support:/support
      - node_modules:/node_modules

  test-acceptance.nightmare:
    build: ..
    env_file: .env
    environment:
      - CODECEPT_ARGS=-c codecept.Nightmare.js --grep @Nightmare
    depends_on:
      - php
      - selenium.chrome
    volumes:
      - ./acceptance:/tests
      - ./data:/data
      - ./support:/support
      - node_modules:/node_modules

  test-acceptance.puppeteer:
    build: ..
    env_file: .env
    environment:
      - CODECEPT_ARGS=-c codecept.Puppeteer.js --grep @Puppeteer
    depends_on:
      - php
    volumes:
      - ./acceptance:/tests
      - ./data:/data
      - ./support:/support
      - node_modules:/node_modules

  test-acceptance.testcafe:
    build: ..
    env_file: .env
    environment:
      # TODO Add a testcafe tag
      - CODECEPT_ARGS=-c codecept.Testcafe.js --grep @Puppeteer
    depends_on:
      - php
    volumes:
      - ./acceptance:/tests
      - ./data:/data
      - ./support:/support
      - node_modules:/node_modules

  test-acceptance.protractor:
    build: ..
    env_file: .env
    environment:
      - CODECEPT_ARGS=-c codecept.Protractor.js --grep @Protractor --verbose
    depends_on:
      - php
      - selenium.chrome
    volumes:
      - ./acceptance:/tests
      - ./data:/data
      - ./support:/support
      - node_modules:/node_modules

  selenium.chrome:
    image: selenium/standalone-chrome:3.141.59-oxygen
    shm_size: 2g
    ports:
      - 4444:4444

  php:
    image: php:7.0
    command: php -S 0.0.0.0:8000 -t /test/data/app
    ports:
      - 8000:8000
    volumes:
      - .:/test

  json_server:
    build: ..
    entrypoint: []
    command: npm run json-server
    working_dir: /codecept
    expose:
      - 8010
    volumes:
      - ..:/codecept
      - node_modules:/codecept/node_modules

  json_server-graphql:
    build: ..
    entrypoint: []
    command: npm run json-server:graphql
    working_dir: /codecept
    expose:
      - 8020
    volumes:
      - ..:/codecept
      - node_modules:/codecept/node_modules

volumes:
  node_modules: