Entry

GitHub Actions: run JavaScript tests

Solution

Note: the first example uses npm. For Yarn, see below

NPM:

# .github/workflows/test.yml
name: Run tests

on: [ push, pull_request, workflow_call ]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci
      - run: npm test

Using it in other workflows:

# .github/workflows/publish.yml
name: Publish npm package

on:
  push:
    tags:
      - "*"

jobs:
  test:
    uses: ./.github/workflows/test.yml

  github-release:
    runs-on: ubuntu-latest
    needs: [test]
    steps:
      # ...

Yarn:

# .github/workflows/test.yml
name: Run tests

on: [ push, pull_request, workflow_call ]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: yarn install --immutable 
      - run: yarn test

Yarn:

# .github/workflows/test.yml
name: Run tests

on: [push, pull_request, workflow_call]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: yarn install --immutable 
      - run: yarn test