name: ui-test # UI-side unit and end-to-end tests (Vitest + Playwright). The Go side # of the workspace is tested in `go-unit.yaml`. Both workflows can run # in parallel for a push that touches Go and UI together. on: push: paths: - 'ui/**' - '.gitea/workflows/ui-test.yaml' - '!**/*.md' pull_request: paths: - 'ui/**' - '.gitea/workflows/ui-test.yaml' - '!**/*.md' env: # See go-unit.yaml for the rationale; this disables TLS verify for # actions/checkout against the LAN Gitea host signed by host-Caddy's # internal CA. GIT_SSL_NO_VERIFY: "true" jobs: test: runs-on: ubuntu-latest defaults: run: shell: bash steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Set up pnpm uses: pnpm/action-setup@v4 with: version: 11.0.7 - name: Set up Node uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm cache-dependency-path: ui/pnpm-lock.yaml - name: Install npm dependencies working-directory: ui run: pnpm install --frozen-lockfile - name: Install Playwright browsers working-directory: ui/frontend run: pnpm exec playwright install --with-deps - name: Run Vitest working-directory: ui/frontend run: pnpm test - name: Run Playwright working-directory: ui/frontend run: pnpm exec playwright test - name: Upload Playwright report on failure if: failure() uses: actions/upload-artifact@v4 with: name: playwright-report path: ui/frontend/playwright-report/ retention-days: 14 - name: Upload Playwright traces on failure if: failure() uses: actions/upload-artifact@v4 with: name: playwright-traces path: ui/frontend/test-results/ retention-days: 14