test(e2e): keep slide-over packets rows inside the fixture's time window - #63
Merged
Merged
Conversation
… window The e2e fixture is freshened once before the server starts, and the packets page defaults to a 15-minute window. The slide-over flake gate runs after the main E2E step, ~16 minutes in, when that window no longer contains any fixture packet, so packets@800 waited 30s for a row that could not appear. Pin the packets scenario to a 180-minute window, the largest packets.js keeps at <=1024px, and bound the e2e job at 150 minutes so the gate always runs inside it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
In the CI integration draft #61 (run 35189733496) the "Slide-over E2E flake-gate (Kpa-clawbot#1616, --repeat-each=3)" failed on its first repetition:
The same test had passed 27/27 in the main E2E step about five minutes earlier.
Mechanism
test-fixtures/e2e-fixture.dbonce before starting the server (newest packet = "now"); no new packets arrive afterwards.public/packets.js:759-761) and requests/api/packets?since=now-15min. At widths ≤1024px a stored window above 180 minutes is reset to 15.test-slideover-1056-e2e.jsdid not set a window, so the packets scenario used the 15-minute default.200withtotal: 0, the table showed only "No packets found", andtr[data-hash]could never appear.This was reproduced locally before this change (isolated servers, CI-style fixture copies, same test and gate loop), identically on master and on the integration tree: 6/6 passes shortly after freshening; 6/6 failures with exactly the CI errors once more than 15 minutes had passed; a probe showed API packets decaying 55 → 26 → 16 → 5 → 1 → 0 over ~15 minutes, while a 60-minute window at the same age still returned 138–150 packets. Running the 68 E2E tests that sit between the main slide-over run and the gate, then the gate, within 15 minutes passed 3/3, so the earlier tests do not affect it — elapsed time does.
Change
test-slideover-1056-e2e.js— for the packets scenario only,context.addInitScriptsetsmeshcore-time-windowto"180"before the first navigation, with a comment on the static fixture and the ≤1024px limit. Assertions, selectors, timeouts, the other scenarios and the gate's repeat count are unchanged..github/workflows/deploy.yml—timeout-minutes: 150on thee2e-testjob only.Why both: 180 minutes is the largest window
packets.jskeeps at the test's 800px viewport, so the test alone cannot cover an arbitrarily long job. The job previously had no timeout (GitHub default 360 minutes). With a 150-minute job limit, the time from fixture freshening (inside the job) to the last gate run is always below the 180-minute data window; a job that runs that long now fails with an explicit timeout instead of a misleading "no row". The only observed e2e job run took ~18 minutes.Semantic YAML comparison against master: the single difference is
e2e-test.timeout-minutes: nil -> 150. Triggers, permissions,needs, fork-guards and deploy/publish conditions are unchanged; thecmd/serverfork-guard workflow tests pass.Regression evidence (local, before/after)
Isolated local Go server per fixture copy (prepared like CI: freshen + seed + migrate). The "aged" copy had every relevant timestamp (transmissions, observations, nodes, observers, neighbor edges) shifted back exactly 20 minutes before server start — no waiting; relative gaps verified identical to the fresh copy.
set -e -o pipefailfTimeWindow=180packets@800: … first row exists(same 3 failures as CI)node --check,git diff --check, YAML parse: clean.Limitations
public/rather than CI'spublic-instrumented/. Leaflet cannot load offline (L is not definedon every run, passing and failing alike); it does not affect the packets table.🤖 Generated with Claude Code