name: ci on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: test: name: test (${{ matrix.os }} ยท node ${{ matrix.node }}) runs-on: ${{ matrix.os }} timeout-minutes: 15 strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] node: ["20", "22"] steps: - name: Checkout uses: actions/checkout@v6 - name: Setup Node ${{ matrix.node }} uses: actions/setup-node@v6 with: node-version: ${{ matrix.node }} cache: npm - name: Install dependencies run: npm ci - name: Check run: npm run check - name: Unit tests run: npm test - name: Package smoke run: npm pack --dry-run