fix(#110,#112): revert pal-e-docs-app rename + switch Playwright to preview webServer #111

Open
forgejo_admin wants to merge 2 commits from 110-revert-rename into main
Contributor

Summary

PR #90 renamed pal-e-apppal-e-docs-app across 13 files, but the hostname pal-e-docs-app.tail5b443a.ts.net does not exist. Every Woodpecker pipeline since has failed at the Playwright test step with ERR_NAME_NOT_RESOLVED, blocking build-and-push and update-kustomize-tag. As a result PRs #105 (role extraction + routing) and #109 (My Notes + identity dashboard) merged to main but never reached the cluster — deployed pod is still on PR #95 (76f316b).

This PR reverts every pal-e-docs-app token back to pal-e-app. The Forgejo repo was never actually renamed (verified via API); no repo rename is being performed here. The name pal-e-app is the canonical identifier per definition-app (parallels westside-app, mcd-tracker-app); pal-e-docs-app is not a valid identifier under convention-dictionary-authority.

Scope extension (#112): Reverting the hostname alone does not fully fix CI — tests would still run against a stale prod deployment, deadlocking PR code behind its own deploy. An additional commit switches Playwright to use its webServer block so tests build and serve the PR's own frontend on http://localhost:4173. See "Changes" below.

Changes

For #110 (rename revert): 12 of the 13 files enumerated in issue #110 were modified (the 13th, src/lib/keycloak.ts, was already correct):

  • .env.exampleVITE_KEYCLOAK_CLIENT_ID default back to pal-e-app
  • .woodpecker.yamlPLAYWRIGHT_BASE_URL, Kaniko repo, OVERLAY env var
  • CLAUDE.md — title, remote URL
  • README.md — title
  • e2e/auth.spec.ts, e2e/home.spec.ts, e2e/public-readiness.spec.ts — doc comments
  • k8s/deployment.yaml — deployment name, labels, container name, image repo
  • k8s/service.yaml — service name, labels, selector
  • package.json, package-lock.jsonname field
  • playwright.config.ts — default baseURL, comment

For #112 (Playwright preview webServer):

  • playwright.config.ts — uncomment the webServer block (command: npm run build && npm run preview, url: http://localhost:4173, timeout bumped to 180s for CI). Default baseURL flipped to http://localhost:4173 so tests target the locally-served PR build, not stale prod.
  • .woodpecker.yamlPLAYWRIGHT_BASE_URL set to http://localhost:4173 in the test step so the Playwright container matches the config. Comment added pointing to issue #112.

Out of scope per issue body (separate follow-ups): orphan Keycloak client cleanup, orphan Harbor project cleanup, missing story:app-definition row, missing arch-pal-e-app note. PR #275's decouple-update-from-test pattern is explicitly NOT applied — tests must gate deploys.

Test Plan

Verifies AC list from issue #110:

  • All 13 files reverted: every pal-e-docs-app token → pal-e-app (file #13 src/lib/keycloak.ts was already correct, 12 files modified)
  • Repo-wide check: grep -rn 'pal-e-docs-app' --exclude-dir=.git --exclude-dir=node_modules . returns zero matches
  • Cross-repo defensive check: grep -rn 'pal-e-docs-app' in ~/pal-e-deployments returns zero matches (no cross-contamination)
  • npm run check passes (0 errors)
  • npm run lint passes (clean)
  • npm run build passes (SvelteKit adapter-static build successful)
  • npm run test:unit passes (71/71 tests)
  • CI on this PR passes through update-kustomize-tag (no skipped step) — to be verified post-push
  • pal-e-deployments receives [skip ci] pal-e-app: update image tag to <sha> commit on merge to main
  • ArgoCD rolls pal-e-app deployment to a commit ≥ 4454c8d (PR #109 merge SHA)
  • Manual verification post-deploy: https://pal-e-app.tail5b443a.ts.net/notes renders My Notes for logged-in user (PR #109); admin role lands on /dashboard, non-admin on /notes post-login (PR #105). Gate on kubectl rollout status deployment/pal-e-app -n pal-e-app.
  • Comment on issue #87 noting the rename was reverted and why; leave closed unless requestor reopens

Additional AC from issue #112 (Playwright preview webServer):

  • playwright.config.ts webServer block is active (uncommented)
  • baseURL default is http://localhost:4173
  • .woodpecker.yaml test step env var matches http://localhost:4173
  • Local npm run build / npm run check / npm run lint still clean with config change
  • CI test step boots npm run preview and runs Playwright against it — to be verified post-push

Review Checklist

  • Scope matches issue #110 exactly — only the 13 enumerated files (12 modified, 1 already correct)
  • Additional scope #112 limited to playwright.config.ts webServer + .woodpecker.yaml env var
  • No scope creep — no orphan Keycloak / Harbor cleanup, no story-page edits, no arch-pal-e-app note creation
  • PR #275's decouple-update-from-test pattern NOT applied
  • No Forgejo repo rename performed
  • All tokens reverted via pal-e-docs-apppal-e-app substitution; no other edits
  • Local validation: check / lint / build / test:unit all clean
  • Branch name follows {issue-number}-{kebab-case-purpose} convention: 110-revert-rename
  • pal-e-deployments NOT modified in this PR
  • definition-app — canonical naming: pal-e-app is correct, pal-e-docs-app is not
  • convention-dictionary-authority — dictionary precedence
  • feedback_naming_convention.md — pal-e-docs = project, pal-e-api = backend, pal-e-app = frontend
  • feedback_landing_vs_app.md — app = authenticated experience
  • review-1015-2026-04-16-r2 — ticket review (APPROVED, round 2)
  • Forgejo issue: #110
  • Forgejo issue: #112 (Playwright webServer scope extension)
  • Blocked-by-this PRs that will finally ship: #105, #109
  • PR #90 — the rename being reverted (closed #87)
  • PR #275 in pal-e-platform — separate fix; intentionally NOT applied here

Closes #110
Closes #112

## Summary PR #90 renamed `pal-e-app` → `pal-e-docs-app` across 13 files, but the hostname `pal-e-docs-app.tail5b443a.ts.net` does not exist. Every Woodpecker pipeline since has failed at the Playwright `test` step with `ERR_NAME_NOT_RESOLVED`, blocking `build-and-push` and `update-kustomize-tag`. As a result PRs #105 (role extraction + routing) and #109 (My Notes + identity dashboard) merged to `main` but never reached the cluster — deployed pod is still on PR #95 (`76f316b`). This PR reverts every `pal-e-docs-app` token back to `pal-e-app`. The Forgejo repo was never actually renamed (verified via API); no repo rename is being performed here. The name `pal-e-app` is the canonical identifier per `definition-app` (parallels `westside-app`, `mcd-tracker-app`); `pal-e-docs-app` is not a valid identifier under `convention-dictionary-authority`. **Scope extension (#112):** Reverting the hostname alone does not fully fix CI — tests would still run against a stale prod deployment, deadlocking PR code behind its own deploy. An additional commit switches Playwright to use its `webServer` block so tests build and serve the PR's own frontend on `http://localhost:4173`. See "Changes" below. ## Changes **For #110 (rename revert):** 12 of the 13 files enumerated in issue #110 were modified (the 13th, `src/lib/keycloak.ts`, was already correct): - `.env.example` — `VITE_KEYCLOAK_CLIENT_ID` default back to `pal-e-app` - `.woodpecker.yaml` — `PLAYWRIGHT_BASE_URL`, Kaniko `repo`, `OVERLAY` env var - `CLAUDE.md` — title, remote URL - `README.md` — title - `e2e/auth.spec.ts`, `e2e/home.spec.ts`, `e2e/public-readiness.spec.ts` — doc comments - `k8s/deployment.yaml` — deployment name, labels, container name, image repo - `k8s/service.yaml` — service name, labels, selector - `package.json`, `package-lock.json` — `name` field - `playwright.config.ts` — default `baseURL`, comment **For #112 (Playwright preview webServer):** - `playwright.config.ts` — uncomment the `webServer` block (command: `npm run build && npm run preview`, url: `http://localhost:4173`, timeout bumped to 180s for CI). Default `baseURL` flipped to `http://localhost:4173` so tests target the locally-served PR build, not stale prod. - `.woodpecker.yaml` — `PLAYWRIGHT_BASE_URL` set to `http://localhost:4173` in the `test` step so the Playwright container matches the config. Comment added pointing to issue #112. Out of scope per issue body (separate follow-ups): orphan Keycloak client cleanup, orphan Harbor project cleanup, missing `story:app-definition` row, missing `arch-pal-e-app` note. PR #275's decouple-update-from-test pattern is explicitly NOT applied — tests must gate deploys. ## Test Plan Verifies AC list from issue #110: - [x] All 13 files reverted: every `pal-e-docs-app` token → `pal-e-app` (file #13 `src/lib/keycloak.ts` was already correct, 12 files modified) - [x] Repo-wide check: `grep -rn 'pal-e-docs-app' --exclude-dir=.git --exclude-dir=node_modules .` returns **zero matches** - [x] Cross-repo defensive check: `grep -rn 'pal-e-docs-app'` in `~/pal-e-deployments` returns **zero matches** (no cross-contamination) - [x] `npm run check` passes (0 errors) - [x] `npm run lint` passes (clean) - [x] `npm run build` passes (SvelteKit adapter-static build successful) - [x] `npm run test:unit` passes (71/71 tests) - [ ] CI on this PR passes through `update-kustomize-tag` (no skipped step) — **to be verified post-push** - [ ] `pal-e-deployments` receives `[skip ci] pal-e-app: update image tag to <sha>` commit on merge to main - [ ] ArgoCD rolls `pal-e-app` deployment to a commit ≥ `4454c8d` (PR #109 merge SHA) - [ ] Manual verification post-deploy: `https://pal-e-app.tail5b443a.ts.net/notes` renders My Notes for logged-in user (PR #109); admin role lands on `/dashboard`, non-admin on `/notes` post-login (PR #105). Gate on `kubectl rollout status deployment/pal-e-app -n pal-e-app`. - [ ] Comment on issue #87 noting the rename was reverted and why; leave closed unless requestor reopens Additional AC from issue #112 (Playwright preview webServer): - [x] `playwright.config.ts` `webServer` block is active (uncommented) - [x] `baseURL` default is `http://localhost:4173` - [x] `.woodpecker.yaml` test step env var matches `http://localhost:4173` - [x] Local `npm run build` / `npm run check` / `npm run lint` still clean with config change - [ ] CI `test` step boots `npm run preview` and runs Playwright against it — **to be verified post-push** ## Review Checklist - [x] Scope matches issue #110 exactly — only the 13 enumerated files (12 modified, 1 already correct) - [x] Additional scope #112 limited to `playwright.config.ts` webServer + `.woodpecker.yaml` env var - [x] No scope creep — no orphan Keycloak / Harbor cleanup, no story-page edits, no `arch-pal-e-app` note creation - [x] PR #275's decouple-update-from-test pattern NOT applied - [x] No Forgejo repo rename performed - [x] All tokens reverted via `pal-e-docs-app` → `pal-e-app` substitution; no other edits - [x] Local validation: `check` / `lint` / `build` / `test:unit` all clean - [x] Branch name follows `{issue-number}-{kebab-case-purpose}` convention: `110-revert-rename` - [x] `pal-e-deployments` NOT modified in this PR ## Related Notes - `definition-app` — canonical naming: `pal-e-app` is correct, `pal-e-docs-app` is not - `convention-dictionary-authority` — dictionary precedence - `feedback_naming_convention.md` — pal-e-docs = project, pal-e-api = backend, pal-e-app = frontend - `feedback_landing_vs_app.md` — app = authenticated experience - `review-1015-2026-04-16-r2` — ticket review (APPROVED, round 2) - Forgejo issue: #110 - Forgejo issue: #112 (Playwright webServer scope extension) - Blocked-by-this PRs that will finally ship: #105, #109 - PR #90 — the rename being reverted (closed #87) - PR #275 in `pal-e-platform` — separate fix; intentionally NOT applied here Closes #110 Closes #112
fix(#110): revert pal-e-docs-app rename to restore CI
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline failed
594a5a0a54
PR #90 renamed pal-e-app to pal-e-docs-app across 13 files. The hostname
pal-e-docs-app.tail5b443a.ts.net does not exist, so every Woodpecker
pipeline since has failed at the Playwright test step with
ERR_NAME_NOT_RESOLVED, blocking build-and-push and update-kustomize-tag.

As a result PRs #105 and #109 merged to main but never reached the cluster
(pod still on PR #95 image). The rename also contradicts definition-app
in the canonical dictionary (pal-e-app parallels westside-app,
mcd-tracker-app).

Reverts every pal-e-docs-app token to pal-e-app in the 12 files PR #90
touched that still contained the rename (keycloak.ts already correct).
Forgejo repo was never actually renamed and is not renamed here.

Closes #110
Author
Contributor

PR #111 Review

DOMAIN REVIEW

Tech stack: SvelteKit + TypeScript frontend, k8s manifests, Woodpecker CI YAML. This is a pure revert/rename PR — no behavioral code changes, only string substitutions.

Diff scope verification (12 files modified, 23/23 +/-):

  • .env.example — Keycloak VITE_KEYCLOAK_CLIENT_ID reverted to pal-e-app
  • .woodpecker.yamlPLAYWRIGHT_BASE_URL, Kaniko repo, OVERLAY all reverted
  • CLAUDE.md, README.md — titles + remote URL reverted
  • e2e/auth.spec.ts, e2e/home.spec.ts, e2e/public-readiness.spec.ts — doc comments only
  • k8s/deployment.yaml — name, labels, container name, image repo all reverted (critical — matches service selector)
  • k8s/service.yaml — name, labels, selector all reverted
  • package.json, package-lock.json — name field reverted
  • playwright.config.ts — default baseURL + comment reverted

13th file claim verification: Fetched src/lib/keycloak.ts from both main and 110-revert-rename branches via Forgejo raw endpoint — both contain pal-e-app (not pal-e-docs-app). The dev agent's claim is CORRECT. (Local stale worktree at /home/ldraney/pal-e-app still shows the old tokens, but the actual Forgejo main branch does not. PR #95 (76f316b) appears to have contained the already-correct version of this file, and PR #90 missed it during the rename.)

Repo rename verification: GET /repos/forgejo_admin/pal-e-app returns full_name: "forgejo_admin/pal-e-app" — no rename was ever performed. This is consistent with the PR body and issue #110.

Repo-wide scan (PR branch): Forgejo code search pal-e-docs-app returns hits only on the main branch (the 12 files this PR modifies). PR branch 110-revert-rename returns zero matches for the enumerated files. Clean.

k8s manifest correctness: Deployment name, selector.matchLabels.app, template.metadata.labels.app, container name, and service selector.app + metadata.labels.app all consistently reverted to pal-e-app — label selector continuity preserved. Image reference reverted to harbor.tail5b443a.ts.net/pal-e-app/app:....

CI/CD pipeline chain correctness: .woodpecker.yaml now aligns Kaniko repo: pal-e-app/app, OVERLAY: "pal-e-app", and PLAYWRIGHT_BASE_URL: https://pal-e-app.tail5b443a.ts.net — the three variables that must all agree for the test→build→update chain to deploy the live hostname.

BLOCKERS

None.

NITS

  1. CI pipeline #124 failed at the check step with ETXTBSY on node_modules/esbuild/bin/esbuild during npm ci. This is NOT the Playwright DNS error — it's a race condition on the esbuild binary (likely a concurrent file-write/exec issue, transient Woodpecker filesystem quirk). The Playwright step never ran because build and test were skipped after check failed. Recommendation: restart pipeline #124. If the rerun passes check, the real test is whether Playwright now resolves pal-e-app.tail5b443a.ts.net (the actual hostname that exists). A flaky ETXTBSY is not a fix-the-PR blocker — it's an infra retry. If it fails again on restart with the same error, there's a separate infra ticket needed (but that is NOT this PR's responsibility).
  2. Consider deleting the stale local worktree /home/ldraney/pal-e-app after merge — it's still on a pre-PR state and caused me a false-alarm check during review.

SOP COMPLIANCE

  • Branch named 110-revert-rename — follows {issue-number}-{kebab-case-purpose} convention
  • PR body has all 5 required sections: ## Summary, ## Changes, ## Test Plan, ## Review Checklist, ## Related Notes
  • Closes #110 present at end of body
  • No secrets, .env files, or credentials committed (.env.example only contains placeholder Keycloak client ID)
  • No scope creep: no orphan Keycloak client cleanup, no Harbor project cleanup, no story-page edits, no arch-pal-e-app note creation, no PR #275 decouple-update-from-test pattern applied — all deferred as stated
  • Commit message descriptive (fix(#110): revert pal-e-docs-app rename to restore CI)
  • No Forgejo repo rename performed (verified via API)
  • Diff is surgical — 23 additions, 23 deletions, only string substitutions (no behavioral changes)

PROCESS OBSERVATIONS

  • Deployment frequency impact: This PR, once merged and CI passes, unblocks the deploy chain that's been broken since PR #90 (rename merged). PRs #105 (role extraction) and #109 (My Notes + identity dashboard) already merged to main but are sitting stale in the repo — deployed pod is still on 76f316b (PR #95). Merging #111 should trigger the build→update-kustomize-tag→ArgoCD chain for the first time in two weeks.
  • Change failure risk: Very low. Pure string substitution, k8s label-selector continuity preserved, no semantic code changes, all local validation (check/lint/build/test:unit) already green per PR body.
  • Documentation gap: None introduced by this PR. The underlying naming lesson (definition-app, convention-dictionary-authority) is already documented — PR #90 was the violation, this PR restores conformance.
  • Post-merge validation checklist (for the validator, not blocking this PR):
    1. pal-e-deployments receives [skip ci] pal-e-app: update image tag to <sha> commit.
    2. ArgoCD rolls pal-e-app deployment to a commit >= 4454c8d (PR #109 merge SHA).
    3. https://pal-e-app.tail5b443a.ts.net/notes renders My Notes view for authenticated users.
    4. Admin role lands on /dashboard, non-admin on /notes post-login.

VERDICT: APPROVED

This is a textbook surgical revert. Scope matches issue #110 exactly, diff is 23/23 symmetric, k8s label-selector continuity is preserved, CI variable chain is coherent, no scope creep, no repo rename, no secrets. The one CI failure on #124 is an infra ETXTBSY transient on the check step unrelated to the PR content — restart pipeline; if Playwright then resolves pal-e-app.tail5b443a.ts.net, the fix worked. If Playwright fails with a NEW DNS-resolution error for a different hostname, that's a follow-up ticket, not a re-review on this PR.

Approved to merge pending Lucas's explicit go-ahead (per feedback_no_merge_without_approval).

## PR #111 Review ### DOMAIN REVIEW **Tech stack:** SvelteKit + TypeScript frontend, k8s manifests, Woodpecker CI YAML. This is a pure revert/rename PR — no behavioral code changes, only string substitutions. **Diff scope verification (12 files modified, 23/23 +/-):** - `.env.example` — Keycloak `VITE_KEYCLOAK_CLIENT_ID` reverted to `pal-e-app` - `.woodpecker.yaml` — `PLAYWRIGHT_BASE_URL`, Kaniko `repo`, `OVERLAY` all reverted - `CLAUDE.md`, `README.md` — titles + remote URL reverted - `e2e/auth.spec.ts`, `e2e/home.spec.ts`, `e2e/public-readiness.spec.ts` — doc comments only - `k8s/deployment.yaml` — name, labels, container name, image repo all reverted (critical — matches service selector) - `k8s/service.yaml` — name, labels, selector all reverted - `package.json`, `package-lock.json` — name field reverted - `playwright.config.ts` — default `baseURL` + comment reverted **13th file claim verification:** Fetched `src/lib/keycloak.ts` from both `main` and `110-revert-rename` branches via Forgejo raw endpoint — both contain `pal-e-app` (not `pal-e-docs-app`). The dev agent's claim is CORRECT. (Local stale worktree at `/home/ldraney/pal-e-app` still shows the old tokens, but the actual Forgejo `main` branch does not. PR #95 (`76f316b`) appears to have contained the already-correct version of this file, and PR #90 missed it during the rename.) **Repo rename verification:** `GET /repos/forgejo_admin/pal-e-app` returns `full_name: "forgejo_admin/pal-e-app"` — no rename was ever performed. This is consistent with the PR body and issue #110. **Repo-wide scan (PR branch):** Forgejo code search `pal-e-docs-app` returns hits only on the `main` branch (the 12 files this PR modifies). PR branch `110-revert-rename` returns zero matches for the enumerated files. Clean. **k8s manifest correctness:** Deployment `name`, `selector.matchLabels.app`, `template.metadata.labels.app`, container `name`, and service `selector.app` + `metadata.labels.app` all consistently reverted to `pal-e-app` — label selector continuity preserved. Image reference reverted to `harbor.tail5b443a.ts.net/pal-e-app/app:...`. **CI/CD pipeline chain correctness:** `.woodpecker.yaml` now aligns Kaniko `repo: pal-e-app/app`, `OVERLAY: "pal-e-app"`, and `PLAYWRIGHT_BASE_URL: https://pal-e-app.tail5b443a.ts.net` — the three variables that must all agree for the test→build→update chain to deploy the live hostname. ### BLOCKERS None. ### NITS 1. **CI pipeline #124 failed at the `check` step with `ETXTBSY` on `node_modules/esbuild/bin/esbuild`** during `npm ci`. This is NOT the Playwright DNS error — it's a race condition on the esbuild binary (likely a concurrent file-write/exec issue, transient Woodpecker filesystem quirk). The Playwright step never ran because `build` and `test` were skipped after `check` failed. **Recommendation: restart pipeline #124.** If the rerun passes check, the real test is whether Playwright now resolves `pal-e-app.tail5b443a.ts.net` (the actual hostname that exists). A flaky `ETXTBSY` is not a fix-the-PR blocker — it's an infra retry. If it fails again on restart with the same error, there's a separate infra ticket needed (but that is NOT this PR's responsibility). 2. Consider deleting the stale local worktree `/home/ldraney/pal-e-app` after merge — it's still on a pre-PR state and caused me a false-alarm check during review. ### SOP COMPLIANCE - [x] Branch named `110-revert-rename` — follows `{issue-number}-{kebab-case-purpose}` convention - [x] PR body has all 5 required sections: `## Summary`, `## Changes`, `## Test Plan`, `## Review Checklist`, `## Related Notes` - [x] `Closes #110` present at end of body - [x] No secrets, `.env` files, or credentials committed (`.env.example` only contains placeholder Keycloak client ID) - [x] No scope creep: no orphan Keycloak client cleanup, no Harbor project cleanup, no story-page edits, no `arch-pal-e-app` note creation, no PR #275 decouple-update-from-test pattern applied — all deferred as stated - [x] Commit message descriptive (`fix(#110): revert pal-e-docs-app rename to restore CI`) - [x] No Forgejo repo rename performed (verified via API) - [x] Diff is surgical — 23 additions, 23 deletions, only string substitutions (no behavioral changes) ### PROCESS OBSERVATIONS - **Deployment frequency impact:** This PR, once merged and CI passes, unblocks the deploy chain that's been broken since PR #90 (rename merged). PRs #105 (role extraction) and #109 (My Notes + identity dashboard) already merged to main but are sitting stale in the repo — deployed pod is still on `76f316b` (PR #95). Merging #111 should trigger the build→update-kustomize-tag→ArgoCD chain for the first time in two weeks. - **Change failure risk:** Very low. Pure string substitution, k8s label-selector continuity preserved, no semantic code changes, all local validation (check/lint/build/test:unit) already green per PR body. - **Documentation gap:** None introduced by this PR. The underlying naming lesson (`definition-app`, `convention-dictionary-authority`) is already documented — PR #90 was the violation, this PR restores conformance. - **Post-merge validation checklist** (for the validator, not blocking this PR): 1. `pal-e-deployments` receives `[skip ci] pal-e-app: update image tag to <sha>` commit. 2. ArgoCD rolls `pal-e-app` deployment to a commit `>= 4454c8d` (PR #109 merge SHA). 3. `https://pal-e-app.tail5b443a.ts.net/notes` renders My Notes view for authenticated users. 4. Admin role lands on `/dashboard`, non-admin on `/notes` post-login. ### VERDICT: APPROVED This is a textbook surgical revert. Scope matches issue #110 exactly, diff is 23/23 symmetric, k8s label-selector continuity is preserved, CI variable chain is coherent, no scope creep, no repo rename, no secrets. The one CI failure on #124 is an infra `ETXTBSY` transient on the `check` step unrelated to the PR content — restart pipeline; if Playwright then resolves `pal-e-app.tail5b443a.ts.net`, the fix worked. If Playwright fails with a NEW DNS-resolution error for a different hostname, that's a follow-up ticket, not a re-review on this PR. Approved to merge pending Lucas's explicit go-ahead (per `feedback_no_merge_without_approval`).
test(#112): switch Playwright to preview webServer on :4173
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline failed
30f405ed2f
Uncomments the webServer block in playwright.config.ts so `npx playwright
test` builds the PR's own frontend and serves it on localhost:4173 via
`npm run preview`. Flips baseURL default to http://localhost:4173 to
match, and updates the CI env var accordingly.

This replaces the prior "test against stale prod" pattern that deadlocked
PR code behind its own deployment. Tests now validate the PR's actual
frontend against the live pal-e-docs backend.

Backend CORS for the preview origin is tracked separately in
pal-e-deployments (not this PR).

Closes #112

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
forgejo_admin changed title from fix(#110): revert pal-e-docs-app rename to restore CI to fix(#110,#112): revert pal-e-docs-app rename + switch Playwright to preview webServer 2026-04-17 06:15:13 +00:00
Author
Contributor

Scope extended to also close #112.

Added commit 30f405e on top of 594a5a0:

  • playwright.config.ts — uncommented the webServer block so npx playwright test runs npm run build && npm run preview and drives tests against http://localhost:4173. Flipped the default baseURL to match. Bumped webServer timeout to 180s for CI headroom.
  • .woodpecker.yaml — set PLAYWRIGHT_BASE_URL=http://localhost:4173 in the test step and added a comment pointing at issue #112.

Rationale: the #110 rename revert alone still leaves CI deadlocked — tests would pass or fail based on stale prod, not the PR's own code. The preview-webServer pattern gates the build on the actual PR build.

Intentionally NOT applied: PR #275's decouple-update-from-test pattern. Tests still gate deploys per issue #110's explicit constraint.

Local: npm run check, npm run lint, npm run build all clean. Playwright not run locally (per scope — CI will run).

Scope extended to also close #112. Added commit `30f405e` on top of `594a5a0`: - `playwright.config.ts` — uncommented the `webServer` block so `npx playwright test` runs `npm run build && npm run preview` and drives tests against `http://localhost:4173`. Flipped the default `baseURL` to match. Bumped webServer timeout to 180s for CI headroom. - `.woodpecker.yaml` — set `PLAYWRIGHT_BASE_URL=http://localhost:4173` in the `test` step and added a comment pointing at issue #112. Rationale: the #110 rename revert alone still leaves CI deadlocked — tests would pass or fail based on stale prod, not the PR's own code. The preview-webServer pattern gates the build on the actual PR build. Intentionally NOT applied: PR #275's decouple-update-from-test pattern. Tests still gate deploys per issue #110's explicit constraint. Local: `npm run check`, `npm run lint`, `npm run build` all clean. Playwright not run locally (per scope — CI will run).
Commenting is not possible because the repository is archived.
No reviewers
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/pal-e-app!111
No description provided.