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

Fast studio, part 1: the studio's pages and live fragment run in one forge, under budget, in test/studio-pages.test.ts #1284

open not picked up yet opened this
opened this

For P0 Trust, under the fast suite (#1242). This is one of three pieces split out of #1245, which was parked twice.

test/studio.test.ts took 196.9 s alone. Its 175 tests sit in 37 describe blocks, and 36 of them boot their own forge in beforeAll. This piece takes the blocks from describe("the studio") through describe("the app's live fragment …"): today that is lines 115 to 3939, seven blocks.

Done looks like

  • [ ] Those seven blocks move into test/studio-pages.test.ts and share one forge and server, booted once in beforeAll. They are gone from test/studio.test.ts.
  • [ ] bun test test/studio-pages.test.ts runs in 10 s or less, and every test in it takes 1 s or less. The pull quotes the timing.
  • [ ] test/studio-pages.test.ts is added to GATE in scripts/gate.ts in the same push, and test/check-list.test.ts passes.
  • [ ] The pull's check is green.

How (the owner, on #1242: chop and rewrite, not trim). Above each test, write the invariant it proves in one line. Then write the fastest test that proves that line. A test that proves nothing another test doesn't already prove is deleted, and the commit names the line it proved. Boot one forge and one server per file, in beforeAll. Use a fake clock, never Bun.sleep. Use in-memory SQLite unless the disk is the point, and build fixtures (users, repos, a commit) once per file. No chromium, bwrap or real network in the gate. A test that is slow by nature moves to NIGHTLY in scripts/gate.ts, with its reason.

Why it waits on #1163. Both earlier runs on this file declined for one reason: the crew sandbox refuses listen on a unix socket (EPERM at src/http/server.ts Bun.serve({ unix })). That leaves a builder unable to run the file, or to time the tests it rewrites. Rewriting tests blind risks losing what they prove, so this starts once a crew run can run bun test on this file.

Files: test/studio.test.ts, the new test/studio-pages.test.ts, scripts/gate.ts, and a shared helper under test/helpers/ if one fits.

Risks. Coverage loss is the risk. Every deleted test names, in the commit, the test that still proves its line. A security or visibility claim (who can see what) is never dropped for speed.

Brief: a builder (scout or mason). Assign nobody until #1163 lands.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs