version: 2
templates:
  # Test the build **only** no webdriver
  build-steps: &build-steps
    - checkout
    - run:
        name: "Create artifacts directory"
        command: mkdir /tmp/artifacts
    - restore_cache:
        key: v1-dependencies-{{ arch }}-{{ checksum "package.json" }}

    - run: npm install

    - save_cache:
        paths:
          - node_modules
        key: v1-dependencies-{{ arch }}-{{ checksum "package.json" }}

    - run: mkdir -p /tmp/artifacts/logs
    - run: npm run build
    - run: npm run lint
    - run: npm run lint-styles
    - store_artifacts:
        path: /tmp/artifacts
        destination: /artifacts
  # Test in webdriver
  wdio-steps: &wdio-steps
    - checkout
    - run:
        name: "Create artifacts directory"
        command: mkdir /tmp/artifacts
    - restore_cache:
        key: v1-dependencies-{{ arch }}-{{ checksum "package.json" }}

    - run: npm install

    - save_cache:
        paths:
          - node_modules
        key: v1-dependencies-{{ arch }}-{{ checksum "package.json" }}

    - run: mkdir -p /tmp/artifacts/logs
    - run: npm run build
    - run: npm run profiling-build
    - run: npm run lint
    - run: npm run lint-styles
    - run: DOCKER_HOST=localhost npm test
    - run: ./node_modules/.bin/istanbul report --include /tmp/artifacts/coverage/coverage.json --dir /tmp/artifacts/coverage html lcov
    - store_artifacts:
        path: /tmp/artifacts
        destination: /artifacts
jobs:
  build-linux-node-v10:
    docker:
      - image: node:10
      - image: selenium/standalone-chrome:3.141.59
    working_directory: ~/repo-linux-node-v10
    steps: *wdio-steps
  build-linux-node-v12:
    docker:
      - image: node:12
    working_directory: ~/repo-linux-node-v12
    steps: *build-steps
  build-linux-node-v13:
    docker:
      - image: node:13
    working_directory: ~/repo-linux-node-v13
    steps: *build-steps
  build-osx-node-v10:
    macos:
      xcode: "9.0"
    dependencies:
      override:
        - brew install node@10
    working_directory: ~/repo-osx-node-v10
    steps: *build-steps
  build-osx-node-v12:
    macos:
      xcode: "9.0"
    dependencies:
      override:
        - brew install node@12
    working_directory: ~/repo-osx-node-v12
    steps: *build-steps
  build-osx-node-v13:
    macos:
      xcode: "9.0"
    dependencies:
      override:
        - brew install node@13
    working_directory: ~/repo-osx-node-v13
    steps: *build-steps

workflows:
  version: 2
  build:
    jobs:
      - build-linux-node-v10
      - build-linux-node-v12
      - build-linux-node-v13
      - build-osx-node-v10
      - build-osx-node-v12
      - build-osx-node-v13