name: Unit Tests

on: [push, pull_request]

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18.x]
    steps:
      - uses: actions/checkout@v3

      - uses: pnpm/action-setup@v2
        # uses version from "packageManager" field in package.json

      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          cache: pnpm
          node-version: ${{ matrix.node-version }}

      - name: Install Packages
        run: |
          pnpm install --frozen-lockfile
        env:
          CYPRESS_CACHE_FOLDER: .cache/Cypress

      - name: Run Unit Tests
        run: |
          pnpm run ci --coverage

      - name: Upload Coverage to Coveralls
        # it feels a bit weird to use @master, but that's what the docs use
        # (coveralls also doesn't publish a @v1 we can use)
        # https://github.com/marketplace/actions/coveralls-github-action
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          flag-name: unit
