mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-10-23 03:27:43 +09:00
Opening a folder while the previous listing was still loading let the slow answer land last and set the current path back, pulling the user into the folder they had just left. Only the newest browse may now write.
90 lines
3.1 KiB
YAML
90 lines
3.1 KiB
YAML
name: Frontend CI
|
|
|
|
# Run the warning ratchet, repository integrity checks, unit tests and browser
|
|
# regressions. Release Build Smoke Test separately compiles the production app.
|
|
#
|
|
# backend/app/** is in the paths because check-html-sinks scans it too (for
|
|
# `|safe`, `Markup(`, `render_template_string`), so a backend-only commit can
|
|
# introduce a sink this must catch.
|
|
|
|
on:
|
|
push:
|
|
branches: [dev]
|
|
paths:
|
|
- 'frontend/**'
|
|
- 'backend/app/**'
|
|
- 'scripts/check-html-sinks.mjs'
|
|
- '.github/workflows/frontend-ci.yml'
|
|
pull_request:
|
|
branches: [main, dev]
|
|
paths:
|
|
- 'frontend/**'
|
|
- 'backend/app/**'
|
|
- 'scripts/check-html-sinks.mjs'
|
|
- '.github/workflows/frontend-ci.yml'
|
|
workflow_call:
|
|
|
|
jobs:
|
|
lint:
|
|
name: lint
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '22'
|
|
cache: npm
|
|
cache-dependency-path: frontend/package-lock.json
|
|
- name: Install dependencies
|
|
working-directory: frontend
|
|
run: npm ci
|
|
- name: Lint
|
|
# Reject errors and warning growth by file/rule, then run all integrity
|
|
# checks chained by package.json. Keep the baseline reviewed in Git.
|
|
working-directory: frontend
|
|
run: npm run lint
|
|
- name: Unit tests
|
|
# node --test over src/**/__tests__ — pure-logic modules, no jsdom.
|
|
working-directory: frontend
|
|
run: npm test
|
|
- name: Install browser for regressions
|
|
working-directory: frontend
|
|
run: npx playwright install --with-deps chromium
|
|
- name: Settings browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:browser
|
|
- name: Settings surfaces and assistant browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:settings-ui
|
|
- name: Shared controls browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:controls
|
|
- name: Metrics and widget browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:metrics
|
|
- name: Authentication and layout hooks browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:hooks
|
|
- name: Backup request and form browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:backups
|
|
- name: SVG sanitizer browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:sanitize-svg
|
|
- name: Terminal log viewer browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:terminal-logs
|
|
- name: Docker tabs browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:docker-tabs
|
|
- name: File Manager browser regressions
|
|
working-directory: frontend
|
|
run: npm run test:file-manager
|
|
- name: Upload Settings screenshots
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: settings-browser-screenshots
|
|
path: frontend/test-results/
|
|
if-no-files-found: ignore
|