name: Test # Controls when the action will run. on: # Triggers the workflow on pull request events but only for the main branch pull_request: branches: [main] push: branches: [main] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: permissions: contents: read pull-requests: read # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: - name: Checkout uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3 id: changes with: predicate-quantifier: 'every' filters: | changed: - "!**/*.md" - "!**/*.mdx" - "!**/_meta.json" - "!**/_nav.json" - "!**/dictionary.txt" - name: Setup Node.js if: steps.changes.outputs.changed == 'true' uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: node-version: 24.19.0 package-manager-cache: false - name: Install Pnpm if: steps.changes.outputs.changed == 'true' uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 with: run_install: true - name: Build Packages if: steps.changes.outputs.changed == 'true' run: node --run build - name: Run Rust Tests if: steps.changes.outputs.changed == 'true' run: cargo test --profile ci --workspace --locked - name: Build Native Binding if: steps.changes.outputs.changed == 'true' run: pnpm --filter rstack build:native:ci - name: Check Generated Native Files if: steps.changes.outputs.changed == 'true' run: git diff --exit-code -- packages/rstack/binding.cjs packages/rstack/binding.d.cts - name: Run Test if: steps.changes.outputs.changed == 'true' && runner.os != 'Windows' run: node --run test # Run package tests serially on Windows to avoid resource contention between nested test workers. - name: Run Test (Windows) if: steps.changes.outputs.changed == 'true' && runner.os == 'Windows' run: pnpm --workspace-concurrency=1 --filter "./packages/**" test