Claude: changes for issue #87 #89

Merged
Grandiras merged 1 commit from claude/issue-87 into main 2026-08-14 18:55:59 +00:00
Collaborator

Closes #87.

Closes #87.
Condense the e2e suite by grouping tests around their fixtures
All checks were successful
CI / build (pull_request) Successful in 35s
e645b57522
174 Playwright tests down to 123, with one assertion dropped on purpose
and none otherwise lost.

The suite runs serially against one live app, so the price of a test is
almost never its assertions: it is the browser context, the /dev/login
round trip, the prerender, the circuit connect, and whatever cards or
tags it has to mint before it can look at anything. A great many tests
here were paying all of that to ask one more question of a screen the
previous test already had open — four tests each signing in and creating
a tag to measure one property of the same column filter flyout, five
loading an anonymous page apiece to confirm the same Accept-Language
negotiation, two driving the identical reconnect abort to assert the near
and far end of one timeline.

So assertions moved to whichever test already builds the fixture they
need, and the fixture-sharing rule is now written into CLAUDE.md, since
without it the suite regrows a test per assertion. Grouping stops where
the fixture stops being shared: a test that mutates a card still creates
its own, because teardown can delete rows but not undo a write.

Also:

- board-entrance's delay sweep goes from [0, 250, 700, 1500] to [0, 700].
  It was sampling one boundary — whether the circuit's rebuild lands
  before or after the prerendered cascade would have started — and the
  two dropped points sit on the same two sides of it, for 6.75s of sleep
  and two board loads. Its safety-reveal test waited 5.5s twice around a
  circuit delayed to 6.5s; the second is now 2s, which is still a full
  second past the circuit.
- board.spec.js's two drag-time CSS probes become one, and move to
  /login. They read computed styles off detached scraps of markup, so
  all they ever needed was app.css, not a sign-in and a board.
- The comment-count test is deleted rather than merged: its only
  expectation sat behind `if (count > 0)`, so it passed on an empty
  board. The badge is pinned for real by the test that creates a card,
  comments on it and measures where the badge lands.
- requests.spec.js loses its bare panel-renders test, whose container
  three other tests in the file already reach into for .request-card.
- The per-test timeout goes to 60s. A grouped test does more work than
  the 30s ceiling was written for, and a ceiling costs nothing on a run
  that passes.

The unit suite is deliberately untouched: 194 tests in ~290ms, so there
is nothing there to win and coverage to lose.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Author
Collaborator

🤖 Reviewing this PR — follow along in the action run; the reply will link the full session transcript.

📜 Live transcript — updating every ~5 minutes while the task runs.

🤖 Reviewing this PR — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/240); the reply will link the full session transcript. 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-89/run-240.md) — updating every ~5 minutes while the task runs.
claude-reviewer left a comment

Verdict: approve — no blocking issues found.

Pure e2e-test consolidation (plus matching CLAUDE.md doc updates), following the PR's own stated principle: group assertions by shared fixture (sign-in + board render) rather than by what they check, since that fixture cost dominates wall-clock in a serial-worker suite. I traced every deleted test() to confirm its assertions survived in a merged test, and checked the trickier merges for ordering bugs:

  • reconnect.spec.js's merged CSS test correctly resets className and calls openBoard once before both halves; the state-class loop and the showModal()/theme loop don't interfere.
  • filter.spec.js's merged flyout test chains fit-check → backdrop-click dismiss → Escape dismiss → second-flyout-closes-first, reusing one tag/board state correctly throughout.
  • i18n.spec.js's cookie test switches from a fresh page.goto to context.addCookies + page.reload(), which is equivalent for server-side locale negotiation.
  • board.spec.js's drag-wiring test folds in the Sortable-options assertions without disturbing the opening/closing wiring comparison.

One minor, non-blocking note: board.spec.js's merge of 'the description switches between writing and preview' and 'text typed into the card dialog reaches the preview and the save' keeps only the new-card composer path and drops the scenario where an already-saved card is reopened and its persisted description is switched to Preview. Low risk since Preview just re-renders whatever is currently bound in the field, and that field's correct population from a reload is still checked by the adjacent 'edit a card, verify changes persist' test — but it's a slightly different code path (typed/unsaved vs. decrypted/reloaded value) that no longer gets an explicit Preview-tab assertion.

No correctness bugs, security issues, or functional regressions found in application code — this PR touches only tests and CLAUDE.md.


⏱ 2m 35s · 16 turns · tokens: 107.8k in / 12.8k out (+1797.7k cache-read)
📜 Full session transcript

✅ **Verdict: approve** — no blocking issues found. Pure e2e-test consolidation (plus matching CLAUDE.md doc updates), following the PR's own stated principle: group assertions by shared fixture (sign-in + board render) rather than by what they check, since that fixture cost dominates wall-clock in a serial-worker suite. I traced every deleted `test()` to confirm its assertions survived in a merged test, and checked the trickier merges for ordering bugs: - `reconnect.spec.js`'s merged CSS test correctly resets `className` and calls `openBoard` once before both halves; the state-class loop and the `showModal()`/theme loop don't interfere. - `filter.spec.js`'s merged flyout test chains fit-check → backdrop-click dismiss → Escape dismiss → second-flyout-closes-first, reusing one tag/board state correctly throughout. - `i18n.spec.js`'s cookie test switches from a fresh `page.goto` to `context.addCookies` + `page.reload()`, which is equivalent for server-side locale negotiation. - `board.spec.js`'s drag-wiring test folds in the Sortable-options assertions without disturbing the `opening`/closing wiring comparison. One minor, non-blocking note: `board.spec.js`'s merge of 'the description switches between writing and preview' and 'text typed into the card dialog reaches the preview and the save' keeps only the new-card composer path and drops the scenario where an *already-saved* card is reopened and its persisted description is switched to Preview. Low risk since Preview just re-renders whatever is currently bound in the field, and that field's correct population from a reload is still checked by the adjacent 'edit a card, verify changes persist' test — but it's a slightly different code path (typed/unsaved vs. decrypted/reloaded value) that no longer gets an explicit Preview-tab assertion. No correctness bugs, security issues, or functional regressions found in application code — this PR touches only tests and CLAUDE.md. --- ⏱ 2m 35s · 16 turns · tokens: 107.8k in / 12.8k out (+1797.7k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-89/run-240.md) <!-- claude-verdict:approve --> <!-- claude-reviewed-head:e645b57522acfa87ba27f02a4507d391b7e0cc11 -->
Grandiras deleted branch claude/issue-87 2026-08-14 18:55:59 +00:00
Grandiras referenced this pull request from a commit 2026-08-14 18:56:00 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
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
Grandiras/Ponente!89
No description provided.