name: deploy on: push: branches: [main] workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: pages cancel-in-progress: true jobs: build-deploy: runs-on: ubuntu-latest # The job is npm, the node test suite, and a vite build. A cap means a # wedged step releases the runner instead of holding its only job slot. timeout-minutes: 15 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 - run: npm ci # The node end-to-end test synthesizes datasets and runs every # built-in algorithm through numbl, so it gates the deploy without # needing a browser or a microphone. The playwright smoke test needs # a system Chrome and stays local. - run: npm test # configure-pages runs before the build on mochi. The page is built # with relative URLs (vite base './'), so the base path it reports is # not needed here, but the ordering is the one that would work if it # were. - uses: actions/configure-pages@v5 - run: npm run build - uses: actions/upload-pages-artifact@v3 with: path: dist - uses: actions/deploy-pages@v4