.github/workflows/test.yml

Summary

Maintainability
Test Coverage
name: test

on:
  push:
    branches: [main, dev]
  pull_request:
    branches: [dev]

permissions:
  contents: read

jobs:
  build:
    permissions:
      checks: write # for coverallsapp/github-action to create new checks
      contents: read # for actions/checkout to fetch code
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [18.x, 20.x]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
      - uses: actions/checkout@v2
      - name: Local Unit Test ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci
      - run: make lint
      - run: make unit-test
      # Skip saucelabs test https://github.com/riot/riot/issues/2989
      - name: Saucelabs Crossbrowser Testing
        if: ${{ success() && github.event_name != 'pull_request' && matrix.node-version == '20.x' }}
        env:
          SAUCELABS: 1
          SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
          SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
        run: make e2e-test
      - name: Coveralls
        if: ${{ success() && github.event_name != 'pull_request' && matrix.node-version == '20.x' }}
        uses: coverallsapp/github-action@master
        with:
          path-to-lcov: ./coverage/lcov.info
          github-token: ${{ secrets.GITHUB_TOKEN }}