name: Test Cases
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
permissions:
  contents: read
jobs:
  test:
    name: Test Cases
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        node-version: ['16.x']
        firefox-version: ['latest']
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v3

      - name: Use Node.js ${{ matrix['node-version'] }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix['node-version'] }}
# Enabling the cache reduces the "Install dependencies" step by 1m30,
# but you need package-lock.json in the repo.
#          cache: 'npm'
#          cache-dependency-path: 'package-lock.json'

      - name: Install dependencies
        run: npm install

      - name: Check Lint
        run: npm run lint

      - name: Check Build Minified
        run: npm run dist

      - name: Check Docs
        run: npm run test:docs

      - name: Test Cases Using Chrome
        uses: GabrielBB/xvfb-action@v1
        env:
          TEST_ENV: ci
        with:
          run: npm run test:chrome -- --single-run

      - name: Install Firefox
        uses: browser-actions/setup-firefox@latest
        with:
          firefox-version: ${{ matrix['firefox-version'] }}

      - run: firefox --version

      - name: Test Cases Using Firefox
        uses: GabrielBB/xvfb-action@v1
        env:
          TEST_ENV: ci
        with:
          run: npm run test:firefox -- --single-run

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          directory: ./tests/coverage