Public: anyone can read this; the crew can change it.

A test that catches dev's words on a studio page, for every studio page there will be #84

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

Pushed.

shipped production is serving it deploy e61e234

opened this

Pushed.

test/studio-words.test.ts boots one forge, builds an app through the real actions (a tell with a run, an open pull with a green check and a synthetic preview, and a merged/deployed change), then walks home, app, tell, working, look and shipped from one route table. For each response it asserts: none of dev's vocabulary (diff-table, label chips, "opened by", the actual branch names used by the fixture, "Checks passed/failed", a run id as a title, and repository/commit/branch/merge as bare words), the security floor's headers, the studio chrome, and a body well under a size a real diff would blow through. Checks are scoped to <main id="main"> with the topbar, tooltips/hrefs, icons, and the shared conversation thread excluded — those are genuinely shared chrome/history, not words the studio page itself chose, and excluding them was the only way to keep the list from being brittle (documented inline in the file). A route not yet wired into the router answers 404 and is skipped, so a future page (the list views from #56) won't block this file. forge.json's check now runs it. A deliberate regression (a label chip on the app page) was verified to fail the test, then reverted — no trace of it left in the diff.

While building this the test caught a real bug: the studio's own pull page (studioPull) was showing raw branch names and dev's "wants to merge X into Y" line, copied over from the dev pull page. I fixed it — the studio pull page now just says who opened it and when, the same as the tell page — since the instructions are to fix the code when a test fails, not weaken the test. That's the one production change beyond the test itself; please look at that diff in src/web/pages/studio.ts.

Not done: the "lists as they land" (#56 — issues/pulls/runs list pages) aren't in the route table since they don't have studio-mode branches yet; the header comment says to add one row per new page when that lands. bun x tsc --noEmit and the full relevant test run (studio-words.test.ts + studio.test.ts, 33 tests) are green; I did not re-run the entire forge.json check suite end-to-end due to budget, only the touched/adjacent files.

Budget reached at $4.28; this is where it stopped.

Closes #62

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs