diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index d7deb80..157c794 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -12,6 +12,7 @@ Keep this file under 200 lines — anything longer is content bloat, not memory. - [learnings/recheck-open-prs-at-pr-open](learnings/2026-05-26-recheck-open-prs-at-pr-open.md) — session-start grep is insufficient; re-grep `list_pull_requests` right before `create_pull_request` to catch parallel-session races (PR #18 vs #20 ENG-25) - [learnings/closed-pr-receives-review-after-close](learnings/2026-05-26-closed-pr-receives-review-after-close.md) — Closed PR can still get a REQUEST_CHANGES review seconds after dup-close; don't reopen, surface to sibling PR + Linear (PR #18 vs #20 ENG-25 race) - [learnings/review-feedback-fanout](learnings/2026-05-26-review-feedback-fanout.md) — multiple REQUEST_CHANGES comments fire multiple manager sessions; fetch + check head-branch commits newer than the reviewer comment before doing work (PR #20) +- [learnings/pw-capture-script-needs-executable-path](learnings/2026-05-26-pw-capture-script-needs-executable-path.md) — Ad-hoc `node`-driven Playwright capture scripts must pass `executablePath` directly; `tests/global-setup.ts` only self-heals when launched via the test runner ## Decisions - [decisions/mcp-for-small-writes-checkout-for-big](decisions/2026-05-26-mcp-for-small-writes-checkout-for-big.md) — Single-file writes go through GitHub MCP; multi-file or test-needing changes use the mounted checkout + `git push` diff --git a/.claude/memory/learnings/2026-05-26-pw-capture-script-needs-executable-path.md b/.claude/memory/learnings/2026-05-26-pw-capture-script-needs-executable-path.md new file mode 100644 index 0000000..cf1d64f --- /dev/null +++ b/.claude/memory/learnings/2026-05-26-pw-capture-script-needs-executable-path.md @@ -0,0 +1,3 @@ +# Ad-hoc Playwright capture scripts must pass `executablePath` + +`tests/global-setup.ts` self-heals the cached browser path (outer `chromium-{wanted}` symlink and inner `chrome-headless-shell-linux64/chrome-headless-shell` layout) **only** when Playwright is launched via the test runner — it's wired as `globalSetup` in `playwright.config.ts`. One-shot capture scripts run via `node /workspace/repo/.pr-capture.cjs` (the step 4(j) flow in the manager prompt) bypass `globalSetup` entirely, so the launch fails with "Executable doesn't exist" even on a sandbox with a working cached browser. Fix: launch with `executablePath: '/opt/pw-browsers/chromium-1194/chrome-linux/chrome'` (the full chrome binary). Sidesteps the headless-shell layout question altogether.