name: test

on: [push, pull_request]

jobs:
  unit-tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [10.x, 12.x, 14.x, 15.x]
    steps:
    - name: checkout
      uses: actions/checkout@v2
    - name: setup Node.js v${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm install

    - run: npm run lint
    - run: npm run test-unit

  integration-tests:
    needs: unit-tests
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [10.x, 12.x, 14.x, 15.x]
    steps:
    - name: checkout
      uses: actions/checkout@v2
    - name: setup Node.js v${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm install

    - run: npm run lint
    - run: npm run test-integration

  e2e-tests:
    needs: integration-tests
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [10.x]
    steps:
    - name: checkout
      uses: actions/checkout@v2
    - name: setup Node.js v${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm install

    - run: npm run lint
    - run: npm run test-e2e