Repository navigation
test(packets): make the Details advert-link E2E independent of fixture age (#244) - #252
Conversation
…e age (#244) The Kpa-clawbot#1122 step "advert links in Details stay visible and clickable" failed in CI whenever it ran ~13+ min after freshen-fixture.sh. Cause: makeColumnsResizable() (app.js) sizes the packets columns once, from the rows of the first render. The test opened /packets with the default 15-min window, which empties as the fixture ages; the measured layout then gave the expand column ~43% and Details ~5% (64px at 1200px). Advert names wrapped onto the clamped-away 2nd line, and the test probed the centre of the link's bounding box, which is on that hidden line (the hit was the next row's Details cell, or the clip itself at 900px). - Open /packets with the widest selectable window (24 h, 3 h at <=1024px), so the one-shot measurement sees the same rows for the whole e2e job. - Check every on-screen advert link: the visible part of its first line fragment must be >= 12px and hit-test to the link. Pin a fixture row with a 21-char name and require that it is cut by the clip. - Failure messages name the element that was hit and the fragments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rapport — CS-pve-agent2 PR#252 #244 — head 0e8f656Status: Test-only fix ready (draft). Local evidence is complete; CI Go Build & Test passed, and the Playwright E2E job was still running when this report was written. Evidence tags: [T] tested or run here, [A] assumption or approximation, [K] known from CI logs or code. Cause
Fix (test only,
|
| Age | Frontend | Result |
|---|---|---|
| 0 min | public | 20/20 |
| 20 min | public | 20/20 |
| 120 min | public | 20/20 |
| 30 min | public-instrumented | 20/20 |
[A] Aging is simulated by shifting all now-derived timestamps back after the prep.
Mutants [T]
- No window pin, fixture age 20 min: red (
3/5 advert links show < 12px). Control (pinned test, same fixture): green. - fix(packets): keep the Details summary on one line so rows stay bounded #67 clamp CSS removed: red (one-line, < 60 px and long-name steps fail).
- Overlay
::afterover.col-details-clip: red (5/5 ... not hit-testable) at all 3 viewports.
Other checks [T]
sh test-all.sh: 217/217 passed.- Full Playwright step from
deploy.ymllocally (instrumented, fresh fixture): every file reported 0 failed. scripts/check-xss-sinks.sh --diff: clean (nopublic/changes).- Fork guards unchanged: 9 and 1.
CI per job [K]
- Go Build & Test: pass
- Release Artifacts: skipped
- Playwright E2E Tests: pending when this report was written; needs a re-check.
Remaining
- The E2E CI result still needs confirming.
- Follow-up suggested: fix
makeColumnsResizable()so it ignores colspan rows and does not size columns from an empty first window.
Rapport — CS-pve-agent2 PR#252 #244 — head 0e8f656Status: CI green on head This follows up the earlier report, whose CI section said E2E was pending. Evidence tags: [T] tested here, [K] known from CI logs or code. CI per job [K] (run 37293748200)
Unrelated flake: #226 Hash Stats adopters sort E2E [K]
Remaining
|
Review — CS-pve-agent1 PR#252 details-e2e — head 0e8f656Dom: APPROVE med nits Read-only review of head Evidence tags: [T] tested or run by me, [A] assumption or approximation, [K] known from code, CI logs or GitHub metadata. Findings
No blocking issues. 1. Is the cause analysis right? Yes [T]
2. Does the fix weaken the test? No [T]All mutants ran against the PR test with a fresh fixture, 2 runs each, all red:
So the new test catches what the old one did (overlay, hit-test), and also the real "name hidden" case that the old one missed. 3. Stable at different ages? Yes [T]I ran the merged-tree test against a fresh CI-like prep each time: freshen, inline seed SQL from
With the pin, the first render at 1200 px (24 h window) and at 900 px (3 h window) has identical widths at 0, 120 and 150 min [T]. 4. UX remainder: described correctly? Mostly. It is worth an issue.
Other checks
Not verified
|
Relates to #244
Problem
The Kpa-clawbot#1122 Playwright step
advert links in Details stay visible and clickablefailed at 1200 and 900 px whenever it ran about 13 min or more aftertools/freshen-fixture.sh:Cause
Two things combined:
makeColumnsResizable()(public/app.js) sizes the packets columns once, from the rows of the first render. Later time-window changes keep those widths. The test opened#/packetswith the default 15-min window. That window empties as the fixture ages: in CI it held only a few packets about 13 min after freshen, and none after 15 min. The one-shot measurement also credits the full-width colspan row (the vscroll spacer, or "No packets found") to the first column. So once the window is (nearly) empty, the expand column gets about 43 % of the table and Details about 5 % (64 px at 1200 px). Advert names then wrap onto the 2nd line, which the fix(packets): keep the Details summary on one line so rows stay bounded #67 clamp hides.td.col-details; at 900 px it was the.col-details-clipspan.The failing CI attempt reached the test 13m45s after freshen; the passing retry reached it after 12m03s.
Fix (test only)
#/packets?timeWindow=1440(180at ≤1024 px, where longer windows are disabled). The one-shot column measurement then sees the same newest rows for the whole e2e job (150-min timeout).e8b09a35ac87fa5c, "KN6PLV-BrkOxfLA-Yebes", 21 chars). The test requires that this row is on screen and is cut by the clip, so it cannot pass without exercising a long advert name.There is no product change in this PR. The underlying column-measurement behaviour of
makeColumnsResizable()is a real UX issue: with a quiet default window, advert names in Details can be hidden entirely. It needs a JS fix and is left for a follow-up; details are in the PR report.Evidence (local, CI-like fixture: freshen, inline seed,
corescope-migrate, seed-2073, seed-199)public/public/public/public-instrumented/Master's version of the test fails at 1 h, 2 h and 3 h, and on the instrumented 30-min fixture, with the exact CI message.
Mutants (all red):
3/5 advert links show < 12px of their name("CLTR Repeater" and "KN6PLV-…" sit entirely on the hidden line)..col-details-clip:5/5 advert links ... are not hit-testable.sh test-all.sh: 217/217 passed.scripts/check-xss-sinks.sh --diff: nopublic/changes.🤖 Generated with Claude Code