version: 2.1
orbs:
  ship: authok/ship@0.3.1
parameters:
  docker_image:
    type: string
    default: circleci/node:16-browsers
jobs:
  build:
    docker:
      - image: << pipeline.parameters.docker_image >>
    steps:
      - checkout
      - ship/node-install-packages
      - run: npm run lint
      - run: npm run build:prod
      - run: npm run test:ci
      - run:
          name: Upload coverage
          command: ./node_modules/.bin/codecov
      - store_artifacts:
          path: projects/playground/e2e/videos
      - store_artifacts:
          path: projects/playground/e2e/screenshots
      - store_test_results:
          path: projects/playground/test-results
      - store_test_results:
          path: projects/authok-angular/test-results
  browserstack:
    docker:
      - image: << pipeline.parameters.docker_image >>
    working_directory: ~/repo
    steps:
      - checkout
      - ship/node-install-packages
      - run: npx concurrently --raw --kill-others --success first "npm:start:local" "wait-on http://127.0.0.1:4200/ && browserstack-cypress run --build-name $CIRCLE_BRANCH"
workflows:
  build_and_test:
    jobs:
      - build
      - browserstack:
          requires:
            - build
          context:
            - browserstack-env
      - ship/node-publish:
          publish-command: npm run build:prod && cp README.md ./dist/authok-angular/ && npm publish ./dist/authok-angular
          app-directory: "projects/authok-angular"
          requires:
            - browserstack
          context:
            - publish-npm
            - publish-gh
          filters:
            branches:
              only:
                - master
