core/.github/workflows/workbench-ui.yml

61 lines
1.5 KiB
YAML

name: workbench-ui
# Frontend verification lane (Wave R brief R0a). Before this workflow,
# workbench-ui changes merged with no frontend CI at all — smoke.yml and
# full-pytest.yml are Python-only.
#
# The path filter includes this workflow file itself so changes to the
# lane are validated by the lane.
on:
pull_request:
paths:
- "workbench-ui/**"
- ".github/workflows/workbench-ui.yml"
push:
branches: [main]
paths:
- "workbench-ui/**"
- ".github/workflows/workbench-ui.yml"
permissions:
contents: read
concurrency:
group: workbench-ui-${{ github.ref }}
cancel-in-progress: true
jobs:
build-and-test:
name: build + vitest
runs-on: ubuntu-latest
timeout-minutes: 15
defaults:
run:
working-directory: workbench-ui
steps:
- name: checkout
uses: actions/checkout@v4
- name: set up pnpm
uses: pnpm/action-setup@v4
with:
# actions ignore working-directory; point at the pinned
# "packageManager" field explicitly (single source of truth)
package_json_file: workbench-ui/package.json
- name: set up node
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
cache-dependency-path: workbench-ui/pnpm-lock.yaml
- name: install dependencies
run: pnpm install --frozen-lockfile
- name: build (tsc + vite)
run: pnpm build
- name: vitest (full suite must pass AND exit)
run: pnpm test