chore(deps): bump the npm-minor-patch group across 1 directory with 8 updates #509
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| # Stale-green guard. A PR can show a green CI run that was executed BEFORE a | |
| # breaking commit landed on the base branch — merging it would ship a broken | |
| # main. This job FAILS if the PR branch does not contain origin/<base> as an | |
| # ancestor, forcing an "Update branch" before the PR can merge. | |
| up-to-date-with-base: | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Fail if PR branch is behind its base branch | |
| run: | | |
| BASE="${{ github.event.pull_request.base.ref }}" | |
| git fetch origin "${BASE}" --depth=1 | |
| if git merge-base --is-ancestor "origin/${BASE}" HEAD; then | |
| echo "PR branch contains origin/${BASE} — up to date." | |
| else | |
| echo "::error::PR branch is behind origin/${BASE}. Update the branch (merge/rebase ${BASE}) and re-run CI so it validates against current base." | |
| exit 1 | |
| fi | |
| build-and-test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: '22' | |
| cache: 'npm' | |
| - run: npm ci | |
| # Wave 1 contract-drift gate (docs/ci/01-CI-INTEGRATION-DESIGN.md): | |
| # src/api/generated.ts is openapi-typescript output from the committed | |
| # openapi.snapshot.json. Fail the PR if the committed types are stale vs | |
| # the snapshot (mirrors how api/ gates openapi.snapshot.json). This keeps | |
| # the UI's derived wire types faithful to the api contract, so a backend | |
| # field rename fails `tsc` below instead of breaking prod at runtime. | |
| - run: npm run gen:api-types:check | |
| # `npm run build` runs `tsc && vite build && node scripts/prerender.mjs`. | |
| # The prerender step is part of CI — a local `vite build` alone is NOT a | |
| # valid gate. `npm run gate` (package.json) runs this exact sequence. | |
| # `prebuild` regenerates generated.ts, so the build always reflects the | |
| # committed snapshot. | |
| - run: npm run build | |
| - run: npm test | |
| # Wave 5 — push the gated-test result to New Relic so a red run is | |
| # studyable from an NR dashboard, not just the GitHub Actions log. | |
| # if: always() records a FAILED tsc/build/vitest as InstantCITestRun | |
| # result=fail + InstantCITestFailure. No-ops cleanly without the NR secret. | |
| - name: Emit CI result to New Relic | |
| if: always() | |
| uses: ./.github/actions/nr-ci-event | |
| with: | |
| license-key: ${{ secrets.NEW_RELIC_LICENSE_KEY }} | |
| account-id: ${{ secrets.NEW_RELIC_ACCOUNT_ID }} | |
| result: ${{ job.status == 'success' && 'pass' || 'fail' }} | |
| suite: build-and-test | |
| pr-number: ${{ github.event.pull_request.number }} | |
| failed-step: ${{ job.status != 'success' && 'gen:api-types:check / build (tsc+vite+prerender) / vitest' || '' }} | |
| repo: ${{ github.repository }} | |
| workflow: ${{ github.workflow }} | |
| branch: ${{ github.ref_name }} | |
| commit-sha: ${{ github.sha }} | |
| log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
| event-name: ${{ github.event_name }} | |
| actor: ${{ github.actor }} | |
| playwright: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: '22' | |
| cache: 'npm' | |
| - run: npm ci | |
| - run: npx playwright install --with-deps chromium | |
| - run: VITE_NO_PROXY=1 npx playwright test --project=chromium | |
| # Wave 5 — record the mocked-Playwright suite outcome in NR | |
| # (suite=playwright) so a red is visible on the CI-health dashboard. | |
| # No-ops without the NR secret. | |
| - name: Emit Playwright result to New Relic | |
| if: always() | |
| uses: ./.github/actions/nr-ci-event | |
| with: | |
| license-key: ${{ secrets.NEW_RELIC_LICENSE_KEY }} | |
| account-id: ${{ secrets.NEW_RELIC_ACCOUNT_ID }} | |
| result: ${{ job.status == 'success' && 'pass' || 'fail' }} | |
| suite: playwright | |
| pr-number: ${{ github.event.pull_request.number }} | |
| failed-step: ${{ job.status != 'success' && 'playwright (mocked, chromium)' || '' }} | |
| repo: ${{ github.repository }} | |
| workflow: ${{ github.workflow }} | |
| branch: ${{ github.ref_name }} | |
| commit-sha: ${{ github.sha }} | |
| log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
| event-name: ${{ github.event_name }} | |
| actor: ${{ github.actor }} |