Fix outcome timeline overflow in HTML reports - #6574
Conversation
|
Warning Review limit reached
Next review available in: 16 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Comment |
Greptile SummaryThis PR prevents large outcome timelines from widening generated HTML reports and preserves access to individual ticks through horizontal scrolling.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| src/TUnit.Engine/Reporters/Html/TestReport.template.html | Constrains all relevant grid tracks and introduces an internal horizontal scroll container, fully addressing the previously reported responsive overflow. |
| tests/TUnit.Engine.Tests/HtmlReporterTests.cs | Adds regression coverage for the desktop and responsive grid constraints and the timeline overflow markup. |
Reviews (2): Last reviewed commit: "fix(reporting): handle responsive overfl..." | Re-trigger Greptile
Code reviewSummary: this constrains However, I found the fix is incomplete, plus a couple of smaller regressions and a design point worth considering. 1. The fix doesn't apply at narrower viewports — the original bug still reproduces (confirmed with a headless-browser repro)TUnit/src/TUnit.Engine/Reporters/Html/TestReport.template.html Lines 617 to 621 in 33cd062 TUnit/src/TUnit.Engine/Reporters/Html/TestReport.template.html Lines 995 to 999 in 33cd062 The desktop rule (line 618) got I reproduced this in headless Chrome at a 900px viewport with 400 ticks: with the current Since this is precisely the large-suite scenario the PR targets, and mobile/narrow-viewport report viewing is a normal case (e.g. checking CI results from a phone), this seems worth fixing in the same PR rather than as a follow-up. 2. Axis labels desync once the strip scrollsTUnit/src/TUnit.Engine/Reporters/Html/TestReport.template.html Lines 1236 to 1245 in 33cd062
3. Minor: hover affordance is clippedTUnit/src/TUnit.Engine/Reporters/Html/TestReport.template.html Lines 659 to 661 in 33cd062
4. Test coverage: consider a name/assertion that matches what's actually verifiedTUnit/tests/TUnit.Engine.Tests/HtmlReporterTests.cs Lines 378 to 396 in 33cd062
5. Worth a follow-up issue, not a blocker: horizontal scroll vs. "whole run at a glance"The outcome timeline is meant to be a sparkline-style overview of the entire run. Making it horizontally scrollable means for the large-suite case this PR is about, a viewer only sees the first ~100-150 ticks by default — the "at a glance" property is partly lost, and the scrollbar is a thin affordance to communicate there's more. A bucketed/aggregated tick approach (each tick = N tests, colored by worst outcome in the bucket — similar to CI history sparklines) would preserve the whole-run overview and scale better (fewer DOM nodes/listeners for huge suites) than horizontal scroll. This is a bigger change than this bugfix's scope, so I'd suggest filing it as a follow-up rather than blocking on it here. |
Review: #6574 — contain outcome timeline overflowVerified locally: checked out What the fix does
Prior review feedback — addressedGreptile flagged that the original commit ( Correctness
Suggestion (non-blocking)For very large suites (thousands of tests, not just "hundreds"), this still renders one VerdictLooks good — root cause correctly identified, fix is minimal and targeted, prior review feedback incorporated, and covered by a passing regression test. No blocking issues found. |
Summary
Root cause
Each outcome tick has a 2px minimum width plus a 1px gap. With hundreds of tests, that minimum content width expanded the grid's
1frtrack beyond the report container.Impact
Large test suites keep the HTML report within its normal max width while preserving individually clickable timeline ticks through horizontal scrolling.
Validation
dotnet test tests/TUnit.Engine.Tests/TUnit.Engine.Tests.csproj --no-restore --treenode-filter "/*/*/HtmlReporterTests/*"— 37 passedTUnit.Engine.Testsrun — 238 passed, 124 skipped, 7 unrelated reflection-harness failures where child runs discovered zero testsCloses #6551