Repository navigation
v0.51.0
This release reworks the failure pages around one Most likely rule that cites its evidence and says whether the failure still happens, teaches the Test Map to see controls and score itself, points the timeline at the steps and requests that stand out, loads stored traces once, and adds a guided demo tour in four languages.
Full diff: v0.50.0…v0.51.0
✨ Highlights
- 🧭 Failure pages lead with Most likely — Both failure pages open with one Most likely rule, mark the evidence rows it cites, say under the headline whether the failure still happens, and show the change the next step copies.
- 🗺️ The Test Map sees controls — The Test Map reaches controls from the locator index, groups a feature's pages and sets hubs apart, keys routes without the query, adds three detectors and shows its health on the Gaps tab, scored on a labeled demo.
- ⏱️ A timeline that points at outliers — Each step and request carries its usual duration, so the timeline points at what stands out.
- 🩹 Patches to download and check — A locator step with an edit offers Download
.patch, and a verified fix says whether its diagnosed patch still applies, checked at the fix's commit. - ⚡ Faster trace loading — Each stored trace loads once, shared between views, which read and inflate only the streams they need.
- 🎓 Guided demo tour — The demo offers a guided tour by role in four languages; its web-dashboard project gets a full Test Map, and the login 500 is tracked in a seeded Jira issue.
- 🧩 Piwi Picker's Firefox listing — The dashboard links the Firefox Add-ons listing next to the Chrome Web Store, and suggests Piwi Picker where it is the next step unless it is installed.
Features
Failure pages
- ui: make the failure pages easier to read and act on (e8cbef2)
- ui: lead both failure pages with one Most likely rule and name the next step's source (ec7d1d0)
- ui: mark the evidence rows the Most likely line cites (fc31f5f)
- ui: give a test that did not run its reason as Most likely and a step that opens the run (e46b6f0)
- ui: say under the headline whether the failure still happens (2eb67a2)
- ui: order the situation block as explanation, action, context (efa1aa8)
- ui: show the change the next step copies and label its button by the result (dce661b)
- ui: show a What changed setup gap as the commit range and a help hint (76fbc45)
- ui: name a refused filing and what happens to the cluster's issue (fca72f0)
- ui: open a passed-on-retry execution on its failed attempt (28c9264)
- app: name the failed attempt of a test that passed on retry in
explain_failure(10bb7be)
Cluster page
- ui: head the cluster page with its latest headline when it says more than the name (6403c6f)
- ui: name a cluster's one test in its block and the evidence's subject (092c1c7)
- ui: open the cluster page's fix section above the affected tests (0697f84)
- ui: fold a cluster's occurrence chart and activity at the foot of its page (51e67de)
Fixes & the timeline
- app: offer Download
.patchon a locator step with an edit (8e0ffcf) - app: say when a verified fix's diagnosed patch still applies (6362471)
- app: send each step's and request's usual duration with the timeline (bface6c)
- ui: make the timeline point at what stands out (e1d4fbe)
Test Map
- app: make the Test Map see controls, group features, and score itself on a labeled demo (e095a7b)
- app: add three Test Map detectors, key routes without the query, and show map health (afac453)
- app: group what a feature's pages hold, set hubs apart, and score detectors on the demo (e494d5d)
- app: reach controls from the locator index and rank node gaps by recorded churn (7d8892d)
- app: raise passes with errors, visibility-only pages and uncalled catalog methods (c5e7d5d)
- app: show map health on the Gaps tab, and file test and catalog gaps under a feature (d3c6aba)
- app: leave a muted detector out of the gaps digest and list its gaps last (75e277e)
Captured responses & server faults
- reporter: mark a captured response no server sent as fulfilled (bd721ed)
- reporter: report a server probe the page did not survive as unhandled (4ef99b3)
Piwi Picker
- app: link Piwi Picker's Firefox Add-ons listing next to the Chrome Web Store (1f9c7ee, e637637)
- app: suggest Piwi Picker where it is the next step, unless installed (d2f6457)
- extension: mark the connected instance's pages for the dashboard (bbd105d)
Demo
- demo: offer a guided tour by role, in four languages (f0a9e24)
- demo: add driver.js and the guided tour's per-language copy (ac19996, ee64ae3)
- demo: give the web-dashboard project a full Test Map (6e87a16)
- demo: give the web-dashboard tests their own steps, control reach and recorded churn (f4f7e3c)
- demo: track the login 500 in a seeded Jira issue (1fa43b0)
Performance Improvements
- app: load each stored trace once and inflate only what its views read (2dad4a7)
- app: read only the trace streams a view needs and share each load (2045eef)
- app: free the trace archive after a load and harden the shared trace cache (edc141e)
Bug Fixes
Issues, owners & filing rules
- app: decide whether a Done ticket's failure goes on the same way on both pages (4f514d9)
- app: hold a rule back from a Done issue only while a reopen is under way (54304da)
- app: name the open issue a rule finds beside a Done one, never the cluster's own (24c1889)
- ui: name on the Issue line the open issue a rule left to a person (8d9199a)
- app: let a rule file only where the cluster's filing rules would (d065cff)
- app: list description updates and a rule's filings in the cluster Activity (0038910)
- app: drop unassigned, name the CODEOWNERS owner and stop fallback steps denying the clues (5eaf6bd)
- app: name the CODEOWNERS owner in the situation the MCP tools return (29a8be2)
Fixes, patches & locator healing
- app: check a verified fix's diagnosed patch at the fix's commit (5e04648)
- app: read a diagnosis's stored patch validation the same way everywhere (174f4f5)
- ui: say why a followed diagnosis's patch is not the step from its validation (486888f)
- ui: preview the fix's main change, not an import tweak, in the Next row (0225ea4)
- ui: count only the changed lines a locator edit's preview leaves out (c618263)
- app: propose a locator replacement only where the project shows locator healing (6cf77f4)
- app: keep the locator's own name in the clue story (07d97f9)
- ui: read a cluster's locator healing from the execution its next step checked (5a78a31)
- ui: render the Locator fix panel from the healing its page fetched (a878ab4)
- ui: show the Locator fix section for a rename the run's own diff made (28dd5b9)
- ui: open a folded fix section before acting on its panel (68a75f5)
Failure pages & clusters
- app: say "another error" only of the runs it holds for, and name the project (affc56d)
- app: open a stopped run's one failed test, counting each test once across its retries (ab9f5eb)
- ui: give the situation block's help a lead sentence and one item per row (82374bb)
- ui: show the host's error on What changed and split its help from a missing token (a94104b)
- ui: leave no gap where a test that did not run has no evidence (676750d)
- ui: number every attempt on the Attempts tab as the line under the headline does (13ffeba)
- ui: order the More actions menu the same way on both failure pages (c676782)
- ui: open the execution's Details below the facts line and list the cluster's links (07723b8)
- ui: place the execution's Details by its height and show a refused filing at once (df0120e)
- ui: keep "Open the latest" with its separator when the meta line wraps (385396b)
- ui: set a cluster's name in the meta style and keep copy to what the page does (9837e7d)
- ui: say on the occurrence line when a cluster's one test is quarantined (61221f2)
- ui: open a cluster's occurrence chart on a window that holds its first occurrence (cf026f7)
- ui: keep the affected tests' selection and the current-item markers neutral (8da9992)
- ui: leave the open toolbox section alone when asked for a missing one (67d350f)
- ui: show a folded card as its header alone at phone width (75f6bd5)
Timeline & Network tab
- ui: place timeline bars from the test start (b6dc43c)
- ui: label a timeline row the Most likely line cites "Cited by Most likely" (36a32e0)
- ui: keep the timeline's hidden Kind label inside its table scroller (bdf26bd)
- ui: color a request's duration by the same rule on the Network tab (498701b)
- ui: show a request's server time in neutral text on the Network tab (e91a423)
- ui: keep the Network tab's switches and doc link out of the primary color (2a36650)
Test Map
- app: stop the Test Map flagging what the suite does exercise (5a4e146)
- app: key a route without its query, and merge the nodes a query split (6d5a18e)
- app: match catalog pages one way, keep verdicts and startup safe in the route-key rewrite (2f79eb2)
- app: match control names as Playwright does, and count churn by diff (8cc589f)
- app: keep hubs and inferred groups from skewing links, snoozes and counts (c5bb573)
- ui: count one route, page, control or test in the singular on the feature map (7d76310)
Reporter & tooling
- app: keep a response the test fulfilled out of passed with errors (4526155)
- reporter: classify only an applied server fault, and read a blank page from its ARIA snapshot (ee3ad97)
- app: measure on a free port and with the default settings only (9d8d7f3)
Demo fixes — seeded failures, the simulator and the demo's loading follow each story
- demo: make each seeded failure's steps, duration and timeout follow its story (6c3d5c0)
- demo: run a story's authored steps after its fixtures, with no sleep (518c2ac)
- demo: stop a failing web-dashboard case at the call its error names (95a9dea)
- demo: store each retry pass's failed attempt and no steps on a test that did not run (83af3ca)
- demo: keep a did-not-run attempt an object through the load-time rebase (3011782)
- demo: place the simulator's cluster-1 evidence from its attempt's start (a8159f1)
- demo: ground cluster 1's re-diagnosis on the slow quote it waits for (f9c8f68)
- demo: wait for the quote in cluster 1's fix and quote the counts in cluster 10's diagnosis (2fc3fbc)
- demo: label every control step and score the benchmark on an empty gap ledger (63cba7b)
- demo: let the seed check accept the backend log a passing save carries (f33093b)
- demo: hold every API request until the service worker controls the page (59ce2e1)
- demo: fit the dashboard panel under the demo banner (ddf87bd)