6858e45dbe
Operator wants CI to run on dev pushes (not just PR-to-main) but path-scoped so Go-only diffs don't run web tests and vice versa. The old test.yml ran everything on PR-to-main only; the new shape is two focused workflows that each path-filter their own scope. - test-web.yml — paths: web/**. Runs npm ci + npm run check + vitest. Drops the npm run build step (vitest doesn't need the bundle; the go:embed placeholder lives in web/build/index.html and never needs the test job to rebuild it). - test-go.yml — paths: **/*.go, go.mod, go.sum, sqlc.yaml, internal/**, cmd/**. Runs go vet + golangci-lint + go test -short -race. Both trigger on push to dev/main and PR to main. Tag pushes are not covered — release.yml owns the tag-build path and tests have already passed by the time a tag lands. Drops the gomod-detect guard from test.yml — go.mod has been present since M1 and is required for any Go file to exist anyway.
46 lines
908 B
YAML
46 lines
908 B
YAML
name: test-web
|
|
|
|
# Web SPA: vitest + svelte-check. Runs on push to dev/main and PRs to
|
|
# main, scoped to web/** changes only — Go-only or Flutter-only diffs
|
|
# don't trigger this workflow.
|
|
|
|
on:
|
|
push:
|
|
branches: [dev, main]
|
|
paths:
|
|
- 'web/**'
|
|
- '.forgejo/workflows/test-web.yml'
|
|
pull_request:
|
|
branches: [main]
|
|
paths:
|
|
- 'web/**'
|
|
- '.forgejo/workflows/test-web.yml'
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: go-ci
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: web
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '22'
|
|
cache: 'npm'
|
|
cache-dependency-path: web/package-lock.json
|
|
|
|
- name: Install deps
|
|
run: npm ci
|
|
|
|
- name: Type-check + svelte-check
|
|
run: npm run check
|
|
|
|
- name: Vitest
|
|
run: npm test
|