version: 2

dockerbuild: &dockerbuild
  steps:
    - checkout
    - setup_remote_docker:
        docker_layer_caching: true
    - run:
        name: "Pull submodules"
        command: |
          git submodule init
          git submodule sync
          git submodule update
    - run:
        name: Install dependencies
        command: |
          npm install
        when: on_success
    - run:
        name: Test
        command: npm run test
        when: on_success

jobs:
  "node-16":
    <<: *dockerbuild
    docker:
      - image: circleci/node:16.5.0
  "node-18":
    <<: *dockerbuild
    docker:
      - image: node:18.12.1
  "node-20":
    <<: *dockerbuild
    docker:
      - image: node:20.0.0

workflows:
  version: 2
  build:
    jobs:
      - "node-16"
      - "node-18"
      - "node-20"

