version: 2.1

orbs:
  node: circleci/node@5.1.0
  browser-tools: circleci/browser-tools@1.5.2

executor: &executor
  executor:
    name: node/default

commands:
  install_packages:
    description: "Installing packages..."
    steps:
      - node/install-packages
  build:
    description: "Building project..."
    steps:
      - run: npm run build
  test:
    description: "Testing..."
    steps:
      - run: npm run test-local
  install_chrome_n_firefox:
    description: "Installing chrome..."
    steps:
      - browser-tools/install-browser-tools

jobs:
  build-and-test:
    docker:
      - image: cimg/node:16.18.0-browsers

    <<: *executor
    steps:
      - checkout
      - restore_cache:
          key: dependency-cache-{{ checksum "package-lock.json" }}
      - install_packages
      - save_cache:
          key: dependency-cache-{{ checksum "package-lock.json" }}
          paths:
            - node_modules
            - ~/.cache/yarn

      - build
      - install_chrome_n_firefox
      - test

workflows:
  test:
    jobs:
      - build-and-test

