WRDP QuizWizz UI/UX round F — recorded metric comparison
Summary
Processed 18 pairs / 36 source JSON files: 366 rows — 47 good, 25 bad (worsened), 294 neutral. One metric is absent on the after side and retained as a neutral null comparison. These are arithmetic classifications of recorded observations, not causal regression findings.
Methodology
-
scope: Recorded evidence only: 18 matching shot/viewport JSON pairs (36 source files), J1-J5/Q1/L1/D1/S1 × desktop/mobile. No browser, bench, product code, test, gate, build, or formatter was run.
-
extraction: Union of every top-level JSON number (booleans excluded) and every recursive numeric owned.* leaf on either side; additionally boolean hOverflow is encoded 0/1 and consoleErrors/pageErrors arrays are counted as .count metrics. Numeric array leaves under owned use zero-based dotted index paths. Other nested samples/arrays are not numeric metrics in this scope.
-
missing: A metric present numerically on only one side is retained with null for the absent/non-numeric side, null delta and neutral direction. No synthetic zero is inserted for an absent error array. A metric absent on both sides does not create a row.
-
delta: after - before, using the recorded numeric values without rounding; null unless both sides are numeric.
-
direction: good/bad express only the requested arithmetic preference, not a causal or statistically established regression. Equal values are neutral. Missing-side comparisons and context-dependent/unrecognized metrics are neutral regardless of arithmetic delta.
-
Lower is good:
chromeTax,consoleErrors.count,contrastFails,contrastFailsOwned,contrastUnresolved,focusClipped,hOverflow,hoverOnly,measureMs,overflowingOwned,pageErrors.count,smallPrimary,smallPrimaryOwned,smallTargets,smallTargetsOwned,tDom,tinyText,tinyTextOwned. -
Higher is good:
visibleIndicators. -
Owned metrics: Apply the equivalent non-owned metric rule to owned.* paths (whole stripped path first, then leaf name); unrecognized leaves remain neutral. No nested numeric
owned.*leaves occur in these 36 records; top-level*Ownedcounters are included. -
Unrecognized metrics: Explicit neutral direction: no recognized directional rule; do not infer UX quality. None observed.
Context-dependent neutral rules
nodes: DOM size is context-dependent; more or fewer nodes alone does not establish UX quality.stickyCount: Sticky-element count is context-dependent; count alone does not establish obstruction or usefulness.textElements: Visible text-element count depends on content and layout; direction alone is not a UX verdict.interactive: Interactive-element count depends on available controls and state; direction alone is not a UX verdict.status: PDF HTTP status is categorical context, not an ordinal UX metric; arithmetic direction is not a success classification.bytes: PDF size depends on generated content and encoding; byte differences alone are not UX regressions.pageCount: PDF pagination depends on generated content and layout; page-count differences alone are not UX regressions.pdfjsPages: PDF.js page count is rendering/content context; differences or absent records alone are not UX regressions.
Interpretation limits
- Single recorded before/after observations are not repeated, quiescent A/B performance experiments. tDom and measureMs changes are listed by the mandated direction rule, not attributed to the patch.
- Defect totals and their Owned subsets overlap; row counts are not counts of unique defects. Do not sum overlapping categories into a unique-defect total.
- visibleIndicators is a recorded count, not a normalized success rate; tab sequence/content differences are not controlled by this arithmetic comparison.
- PDF bytes/page counts are context-dependent; generated-content differences alone are not UX regressions. J5-desktop pageCountSource changes from pdf-preview response page_count to pdf.js numPages, while pageCount remains 3. Its separate pdfjsPages is absent after and remains a neutral null comparison.
- No causal claim is made. Any proposed explanation beyond these recorded observations requires an [INFERENCE] label and independent investigation.
Coverage proof
Independent iterative enumeration verified every top-level numeric value and recursive numeric owned.* leaf against extraction, then verified the exact before/after metric union for each shot. Assertions covered 18 unique pairs, unique shot/metric keys, all deltas and null handling. The corpus contains 635 top-level numeric values, 0 nested owned numeric values, and 96 derived hOverflow/error-count values across both sides. No metric rows were missing or unexpected.
| shot | before metrics | after metrics | union rows |
|---|---|---|---|
| J1-desktop | 23 | 23 | 23 |
| J1-mobile | 23 | 23 | 23 |
| J2-desktop | 22 | 22 | 22 |
| J2-mobile | 22 | 22 | 22 |
| J3-desktop | 22 | 22 | 22 |
| J3-mobile | 22 | 22 | 22 |
| J4-desktop | 22 | 22 | 22 |
| J4-mobile | 22 | 22 | 22 |
| J5-desktop | 4 | 3 | 4 |
| J5-mobile | 4 | 4 | 4 |
| Q1-desktop | 21 | 21 | 21 |
| Q1-mobile | 21 | 21 | 21 |
| L1-desktop | 23 | 23 | 23 |
| L1-mobile | 23 | 23 | 23 |
| D1-desktop | 23 | 23 | 23 |
| D1-mobile | 23 | 23 | 23 |
| S1-desktop | 23 | 23 | 23 |
| S1-mobile | 23 | 23 | 23 |
Source pattern: ../{before,after}/{shot}.json. Shot set: J1, J2, J3, J4, J5, Q1, L1, D1, S1, each desktop and mobile. Error-count/hOverflow rows exist only where those arrays/boolean were recorded; the PDF-only J5 records do not contain them.
Complete metric table
| shot | metric | before | after | delta | direction |
|---|---|---|---|---|---|
| J1-desktop | chromeTax | 210 | 210 | 0 | neutral |
| J1-desktop | consoleErrors.count | 0 | 0 | 0 | neutral |
| J1-desktop | contrastFails | 0 | 0 | 0 | neutral |
| J1-desktop | contrastFailsOwned | 0 | 0 | 0 | neutral |
| J1-desktop | contrastUnresolved | 0 | 0 | 0 | neutral |
| J1-desktop | focusClipped | 0 | 0 | 0 | neutral |
| J1-desktop | hOverflow | 0 | 0 | 0 | neutral |
| J1-desktop | hoverOnly | 0 | 0 | 0 | neutral |
| J1-desktop | interactive | 32 | 32 | 0 | neutral |
| J1-desktop | measureMs | 447 | 532 | +85 | bad |
| J1-desktop | nodes | 632 | 633 | +1 | neutral |
| J1-desktop | overflowingOwned | 0 | 0 | 0 | neutral |
| J1-desktop | pageErrors.count | 0 | 0 | 0 | neutral |
| J1-desktop | smallPrimary | 0 | 0 | 0 | neutral |
| J1-desktop | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| J1-desktop | smallTargets | 8 | 8 | 0 | neutral |
| J1-desktop | smallTargetsOwned | 0 | 0 | 0 | neutral |
| J1-desktop | stickyCount | 3 | 3 | 0 | neutral |
| J1-desktop | tDom | 641 | 627 | -14 | good |
| J1-desktop | textElements | 40 | 41 | +1 | neutral |
| J1-desktop | tinyText | 1 | 0 | -1 | good |
| J1-desktop | tinyTextOwned | 1 | 0 | -1 | good |
| J1-desktop | visibleIndicators | 9 | 9 | 0 | neutral |
| J1-mobile | chromeTax | 126 | 126 | 0 | neutral |
| J1-mobile | consoleErrors.count | 0 | 0 | 0 | neutral |
| J1-mobile | contrastFails | 0 | 0 | 0 | neutral |
| J1-mobile | contrastFailsOwned | 0 | 0 | 0 | neutral |
| J1-mobile | contrastUnresolved | 0 | 0 | 0 | neutral |
| J1-mobile | focusClipped | 0 | 0 | 0 | neutral |
| J1-mobile | hOverflow | 0 | 0 | 0 | neutral |
| J1-mobile | hoverOnly | 0 | 0 | 0 | neutral |
| J1-mobile | interactive | 32 | 32 | 0 | neutral |
| J1-mobile | measureMs | 540 | 545 | +5 | bad |
| J1-mobile | nodes | 632 | 633 | +1 | neutral |
| J1-mobile | overflowingOwned | 0 | 0 | 0 | neutral |
| J1-mobile | pageErrors.count | 0 | 0 | 0 | neutral |
| J1-mobile | smallPrimary | 1 | 1 | 0 | neutral |
| J1-mobile | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| J1-mobile | smallTargets | 7 | 7 | 0 | neutral |
| J1-mobile | smallTargetsOwned | 0 | 0 | 0 | neutral |
| J1-mobile | stickyCount | 3 | 3 | 0 | neutral |
| J1-mobile | tDom | 598 | 666 | +68 | bad |
| J1-mobile | textElements | 39 | 40 | +1 | neutral |
| J1-mobile | tinyText | 1 | 0 | -1 | good |
| J1-mobile | tinyTextOwned | 1 | 0 | -1 | good |
| J1-mobile | visibleIndicators | 9 | 9 | 0 | neutral |
| J2-desktop | chromeTax | 210 | 210 | 0 | neutral |
| J2-desktop | consoleErrors.count | 0 | 0 | 0 | neutral |
| J2-desktop | contrastFails | 0 | 0 | 0 | neutral |
| J2-desktop | contrastFailsOwned | 0 | 0 | 0 | neutral |
| J2-desktop | contrastUnresolved | 0 | 0 | 0 | neutral |
| J2-desktop | focusClipped | 0 | 0 | 0 | neutral |
| J2-desktop | hOverflow | 0 | 0 | 0 | neutral |
| J2-desktop | hoverOnly | 0 | 0 | 0 | neutral |
| J2-desktop | interactive | 32 | 32 | 0 | neutral |
| J2-desktop | measureMs | 477 | 665 | +188 | bad |
| J2-desktop | nodes | 627 | 628 | +1 | neutral |
| J2-desktop | overflowingOwned | 0 | 0 | 0 | neutral |
| J2-desktop | pageErrors.count | 0 | 0 | 0 | neutral |
| J2-desktop | smallPrimary | 0 | 0 | 0 | neutral |
| J2-desktop | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| J2-desktop | smallTargets | 8 | 8 | 0 | neutral |
| J2-desktop | smallTargetsOwned | 0 | 0 | 0 | neutral |
| J2-desktop | stickyCount | 3 | 3 | 0 | neutral |
| J2-desktop | textElements | 40 | 41 | +1 | neutral |
| J2-desktop | tinyText | 1 | 0 | -1 | good |
| J2-desktop | tinyTextOwned | 1 | 0 | -1 | good |
| J2-desktop | visibleIndicators | 7 | 7 | 0 | neutral |
| J2-mobile | chromeTax | 126 | 126 | 0 | neutral |
| J2-mobile | consoleErrors.count | 0 | 0 | 0 | neutral |
| J2-mobile | contrastFails | 0 | 0 | 0 | neutral |
| J2-mobile | contrastFailsOwned | 0 | 0 | 0 | neutral |
| J2-mobile | contrastUnresolved | 0 | 0 | 0 | neutral |
| J2-mobile | focusClipped | 0 | 0 | 0 | neutral |
| J2-mobile | hOverflow | 0 | 0 | 0 | neutral |
| J2-mobile | hoverOnly | 0 | 0 | 0 | neutral |
| J2-mobile | interactive | 32 | 32 | 0 | neutral |
| J2-mobile | measureMs | 331 | 574 | +243 | bad |
| J2-mobile | nodes | 627 | 628 | +1 | neutral |
| J2-mobile | overflowingOwned | 0 | 0 | 0 | neutral |
| J2-mobile | pageErrors.count | 0 | 0 | 0 | neutral |
| J2-mobile | smallPrimary | 1 | 1 | 0 | neutral |
| J2-mobile | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| J2-mobile | smallTargets | 7 | 7 | 0 | neutral |
| J2-mobile | smallTargetsOwned | 0 | 0 | 0 | neutral |
| J2-mobile | stickyCount | 3 | 3 | 0 | neutral |
| J2-mobile | textElements | 39 | 40 | +1 | neutral |
| J2-mobile | tinyText | 1 | 0 | -1 | good |
| J2-mobile | tinyTextOwned | 1 | 0 | -1 | good |
| J2-mobile | visibleIndicators | 7 | 7 | 0 | neutral |
| J3-desktop | chromeTax | 80 | 80 | 0 | neutral |
| J3-desktop | consoleErrors.count | 0 | 0 | 0 | neutral |
| J3-desktop | contrastFails | 0 | 0 | 0 | neutral |
| J3-desktop | contrastFailsOwned | 0 | 0 | 0 | neutral |
| J3-desktop | contrastUnresolved | 0 | 0 | 0 | neutral |
| J3-desktop | focusClipped | 0 | 0 | 0 | neutral |
| J3-desktop | hOverflow | 0 | 0 | 0 | neutral |
| J3-desktop | hoverOnly | 1 | 0 | -1 | good |
| J3-desktop | interactive | 110 | 110 | 0 | neutral |
| J3-desktop | measureMs | 2664 | 1099 | -1565 | good |
| J3-desktop | nodes | 1173 | 1174 | +1 | neutral |
| J3-desktop | overflowingOwned | 0 | 0 | 0 | neutral |
| J3-desktop | pageErrors.count | 0 | 0 | 0 | neutral |
| J3-desktop | smallPrimary | 0 | 0 | 0 | neutral |
| J3-desktop | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| J3-desktop | smallTargets | 14 | 14 | 0 | neutral |
| J3-desktop | smallTargetsOwned | 6 | 6 | 0 | neutral |
| J3-desktop | stickyCount | 3 | 3 | 0 | neutral |
| J3-desktop | textElements | 149 | 149 | 0 | neutral |
| J3-desktop | tinyText | 2 | 0 | -2 | good |
| J3-desktop | tinyTextOwned | 2 | 0 | -2 | good |
| J3-desktop | visibleIndicators | 40 | 40 | 0 | neutral |
| J3-mobile | chromeTax | 76 | 76 | 0 | neutral |
| J3-mobile | consoleErrors.count | 0 | 0 | 0 | neutral |
| J3-mobile | contrastFails | 0 | 0 | 0 | neutral |
| J3-mobile | contrastFailsOwned | 0 | 0 | 0 | neutral |
| J3-mobile | contrastUnresolved | 0 | 0 | 0 | neutral |
| J3-mobile | focusClipped | 0 | 0 | 0 | neutral |
| J3-mobile | hOverflow | 0 | 0 | 0 | neutral |
| J3-mobile | hoverOnly | 0 | 0 | 0 | neutral |
| J3-mobile | interactive | 110 | 110 | 0 | neutral |
| J3-mobile | measureMs | 2495 | 1462 | -1033 | good |
| J3-mobile | nodes | 1173 | 1174 | +1 | neutral |
| J3-mobile | overflowingOwned | 0 | 0 | 0 | neutral |
| J3-mobile | pageErrors.count | 0 | 0 | 0 | neutral |
| J3-mobile | smallPrimary | 8 | 1 | -7 | good |
| J3-mobile | smallPrimaryOwned | 7 | 0 | -7 | good |
| J3-mobile | smallTargets | 21 | 13 | -8 | good |
| J3-mobile | smallTargetsOwned | 14 | 6 | -8 | good |
| J3-mobile | stickyCount | 3 | 3 | 0 | neutral |
| J3-mobile | textElements | 148 | 148 | 0 | neutral |
| J3-mobile | tinyText | 2 | 0 | -2 | good |
| J3-mobile | tinyTextOwned | 2 | 0 | -2 | good |
| J3-mobile | visibleIndicators | 40 | 40 | 0 | neutral |
| J4-desktop | chromeTax | 80 | 80 | 0 | neutral |
| J4-desktop | consoleErrors.count | 0 | 0 | 0 | neutral |
| J4-desktop | contrastFails | 0 | 0 | 0 | neutral |
| J4-desktop | contrastFailsOwned | 0 | 0 | 0 | neutral |
| J4-desktop | contrastUnresolved | 0 | 0 | 0 | neutral |
| J4-desktop | focusClipped | 0 | 0 | 0 | neutral |
| J4-desktop | hOverflow | 0 | 0 | 0 | neutral |
| J4-desktop | hoverOnly | 1 | 0 | -1 | good |
| J4-desktop | interactive | 110 | 110 | 0 | neutral |
| J4-desktop | measureMs | 2685 | 587 | -2098 | good |
| J4-desktop | nodes | 1173 | 1174 | +1 | neutral |
| J4-desktop | overflowingOwned | 0 | 0 | 0 | neutral |
| J4-desktop | pageErrors.count | 0 | 0 | 0 | neutral |
| J4-desktop | smallPrimary | 0 | 0 | 0 | neutral |
| J4-desktop | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| J4-desktop | smallTargets | 14 | 14 | 0 | neutral |
| J4-desktop | smallTargetsOwned | 6 | 6 | 0 | neutral |
| J4-desktop | stickyCount | 3 | 3 | 0 | neutral |
| J4-desktop | textElements | 149 | 149 | 0 | neutral |
| J4-desktop | tinyText | 2 | 0 | -2 | good |
| J4-desktop | tinyTextOwned | 2 | 0 | -2 | good |
| J4-desktop | visibleIndicators | 40 | 11 | -29 | bad |
| J4-mobile | chromeTax | 76 | 76 | 0 | neutral |
| J4-mobile | consoleErrors.count | 0 | 0 | 0 | neutral |
| J4-mobile | contrastFails | 0 | 0 | 0 | neutral |
| J4-mobile | contrastFailsOwned | 0 | 0 | 0 | neutral |
| J4-mobile | contrastUnresolved | 0 | 0 | 0 | neutral |
| J4-mobile | focusClipped | 0 | 0 | 0 | neutral |
| J4-mobile | hOverflow | 0 | 0 | 0 | neutral |
| J4-mobile | hoverOnly | 1 | 0 | -1 | good |
| J4-mobile | interactive | 110 | 110 | 0 | neutral |
| J4-mobile | measureMs | 2447 | 548 | -1899 | good |
| J4-mobile | nodes | 1173 | 1174 | +1 | neutral |
| J4-mobile | overflowingOwned | 0 | 0 | 0 | neutral |
| J4-mobile | pageErrors.count | 0 | 0 | 0 | neutral |
| J4-mobile | smallPrimary | 8 | 1 | -7 | good |
| J4-mobile | smallPrimaryOwned | 7 | 0 | -7 | good |
| J4-mobile | smallTargets | 21 | 13 | -8 | good |
| J4-mobile | smallTargetsOwned | 14 | 6 | -8 | good |
| J4-mobile | stickyCount | 3 | 3 | 0 | neutral |
| J4-mobile | textElements | 148 | 148 | 0 | neutral |
| J4-mobile | tinyText | 2 | 0 | -2 | good |
| J4-mobile | tinyTextOwned | 2 | 0 | -2 | good |
| J4-mobile | visibleIndicators | 40 | 11 | -29 | bad |
| J5-desktop | bytes | 140081 | 139668 | -413 | neutral |
| J5-desktop | pageCount | 3 | 3 | 0 | neutral |
| J5-desktop | pdfjsPages | 3 | null | null | neutral |
| J5-desktop | status | 200 | 200 | 0 | neutral |
| J5-mobile | bytes | 163765 | 162599 | -1166 | neutral |
| J5-mobile | pageCount | 3 | 3 | 0 | neutral |
| J5-mobile | pdfjsPages | 3 | 3 | 0 | neutral |
| J5-mobile | status | 200 | 200 | 0 | neutral |
| Q1-desktop | chromeTax | 199 | 199 | 0 | neutral |
| Q1-desktop | consoleErrors.count | 0 | 0 | 0 | neutral |
| Q1-desktop | contrastFails | 1 | 1 | 0 | neutral |
| Q1-desktop | contrastFailsOwned | 0 | 0 | 0 | neutral |
| Q1-desktop | contrastUnresolved | 0 | 0 | 0 | neutral |
| Q1-desktop | hOverflow | 0 | 0 | 0 | neutral |
| Q1-desktop | hoverOnly | 0 | 0 | 0 | neutral |
| Q1-desktop | interactive | 628 | 628 | 0 | neutral |
| Q1-desktop | measureMs | 1117 | 1009 | -108 | good |
| Q1-desktop | nodes | 3166 | 3167 | +1 | neutral |
| Q1-desktop | overflowingOwned | 0 | 0 | 0 | neutral |
| Q1-desktop | pageErrors.count | 0 | 0 | 0 | neutral |
| Q1-desktop | smallPrimary | 13 | 13 | 0 | neutral |
| Q1-desktop | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| Q1-desktop | smallTargets | 549 | 549 | 0 | neutral |
| Q1-desktop | smallTargetsOwned | 10 | 10 | 0 | neutral |
| Q1-desktop | stickyCount | 21 | 21 | 0 | neutral |
| Q1-desktop | tDom | 986 | 1598 | +612 | bad |
| Q1-desktop | textElements | 640 | 641 | +1 | neutral |
| Q1-desktop | tinyText | 3 | 3 | 0 | neutral |
| Q1-desktop | tinyTextOwned | 0 | 0 | 0 | neutral |
| Q1-mobile | chromeTax | 274 | 274 | 0 | neutral |
| Q1-mobile | consoleErrors.count | 0 | 0 | 0 | neutral |
| Q1-mobile | contrastFails | 1 | 1 | 0 | neutral |
| Q1-mobile | contrastFailsOwned | 0 | 0 | 0 | neutral |
| Q1-mobile | contrastUnresolved | 0 | 0 | 0 | neutral |
| Q1-mobile | hOverflow | 1 | 0 | -1 | good |
| Q1-mobile | hoverOnly | 0 | 0 | 0 | neutral |
| Q1-mobile | interactive | 574 | 574 | 0 | neutral |
| Q1-mobile | measureMs | 944 | 1496 | +552 | bad |
| Q1-mobile | nodes | 3167 | 3168 | +1 | neutral |
| Q1-mobile | overflowingOwned | 19 | 19 | 0 | neutral |
| Q1-mobile | pageErrors.count | 0 | 0 | 0 | neutral |
| Q1-mobile | smallPrimary | 17 | 17 | 0 | neutral |
| Q1-mobile | smallPrimaryOwned | 1 | 1 | 0 | neutral |
| Q1-mobile | smallTargets | 518 | 518 | 0 | neutral |
| Q1-mobile | smallTargetsOwned | 12 | 12 | 0 | neutral |
| Q1-mobile | stickyCount | 21 | 21 | 0 | neutral |
| Q1-mobile | tDom | 1051 | 1227 | +176 | bad |
| Q1-mobile | textElements | 580 | 581 | +1 | neutral |
| Q1-mobile | tinyText | 0 | 0 | 0 | neutral |
| Q1-mobile | tinyTextOwned | 0 | 0 | 0 | neutral |
| L1-desktop | chromeTax | 370 | 370 | 0 | neutral |
| L1-desktop | consoleErrors.count | 0 | 0 | 0 | neutral |
| L1-desktop | contrastFails | 4 | 4 | 0 | neutral |
| L1-desktop | contrastFailsOwned | 0 | 0 | 0 | neutral |
| L1-desktop | contrastUnresolved | 0 | 0 | 0 | neutral |
| L1-desktop | focusClipped | 0 | 0 | 0 | neutral |
| L1-desktop | hOverflow | 0 | 0 | 0 | neutral |
| L1-desktop | hoverOnly | 0 | 0 | 0 | neutral |
| L1-desktop | interactive | 216 | 225 | +9 | neutral |
| L1-desktop | measureMs | 2113 | 2867 | +754 | bad |
| L1-desktop | nodes | 5086 | 5095 | +9 | neutral |
| L1-desktop | overflowingOwned | 0 | 0 | 0 | neutral |
| L1-desktop | pageErrors.count | 0 | 0 | 0 | neutral |
| L1-desktop | smallPrimary | 20 | 20 | 0 | neutral |
| L1-desktop | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| L1-desktop | smallTargets | 170 | 179 | +9 | bad |
| L1-desktop | smallTargetsOwned | 8 | 17 | +9 | bad |
| L1-desktop | stickyCount | 7 | 7 | 0 | neutral |
| L1-desktop | tDom | 1065 | 1370 | +305 | bad |
| L1-desktop | textElements | 577 | 586 | +9 | neutral |
| L1-desktop | tinyText | 51 | 2 | -49 | good |
| L1-desktop | tinyTextOwned | 49 | 0 | -49 | good |
| L1-desktop | visibleIndicators | 40 | 40 | 0 | neutral |
| L1-mobile | chromeTax | 582 | 582 | 0 | neutral |
| L1-mobile | consoleErrors.count | 0 | 0 | 0 | neutral |
| L1-mobile | contrastFails | 64 | 64 | 0 | neutral |
| L1-mobile | contrastFailsOwned | 0 | 0 | 0 | neutral |
| L1-mobile | contrastUnresolved | 0 | 0 | 0 | neutral |
| L1-mobile | focusClipped | 4 | 4 | 0 | neutral |
| L1-mobile | hOverflow | 1 | 0 | -1 | good |
| L1-mobile | hoverOnly | 0 | 0 | 0 | neutral |
| L1-mobile | interactive | 172 | 172 | 0 | neutral |
| L1-mobile | measureMs | 1430 | 2009 | +579 | bad |
| L1-mobile | nodes | 5087 | 5096 | +9 | neutral |
| L1-mobile | overflowingOwned | 19 | 19 | 0 | neutral |
| L1-mobile | pageErrors.count | 0 | 0 | 0 | neutral |
| L1-mobile | smallPrimary | 47 | 47 | 0 | neutral |
| L1-mobile | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| L1-mobile | smallTargets | 166 | 166 | 0 | neutral |
| L1-mobile | smallTargetsOwned | 8 | 8 | 0 | neutral |
| L1-mobile | stickyCount | 6 | 6 | 0 | neutral |
| L1-mobile | tDom | 1017 | 1145 | +128 | bad |
| L1-mobile | textElements | 313 | 313 | 0 | neutral |
| L1-mobile | tinyText | 60 | 60 | 0 | neutral |
| L1-mobile | tinyTextOwned | 0 | 0 | 0 | neutral |
| L1-mobile | visibleIndicators | 37 | 37 | 0 | neutral |
| D1-desktop | chromeTax | 42 | 42 | 0 | neutral |
| D1-desktop | consoleErrors.count | 0 | 0 | 0 | neutral |
| D1-desktop | contrastFails | 0 | 0 | 0 | neutral |
| D1-desktop | contrastFailsOwned | 0 | 0 | 0 | neutral |
| D1-desktop | contrastUnresolved | 24 | 24 | 0 | neutral |
| D1-desktop | focusClipped | 0 | 0 | 0 | neutral |
| D1-desktop | hOverflow | 0 | 0 | 0 | neutral |
| D1-desktop | hoverOnly | 0 | 0 | 0 | neutral |
| D1-desktop | interactive | 139 | 139 | 0 | neutral |
| D1-desktop | measureMs | 2343 | 2220 | -123 | good |
| D1-desktop | nodes | 884 | 884 | 0 | neutral |
| D1-desktop | overflowingOwned | 0 | 0 | 0 | neutral |
| D1-desktop | pageErrors.count | 0 | 0 | 0 | neutral |
| D1-desktop | smallPrimary | 14 | 14 | 0 | neutral |
| D1-desktop | smallPrimaryOwned | 14 | 14 | 0 | neutral |
| D1-desktop | smallTargets | 101 | 101 | 0 | neutral |
| D1-desktop | smallTargetsOwned | 63 | 63 | 0 | neutral |
| D1-desktop | stickyCount | 6 | 6 | 0 | neutral |
| D1-desktop | tDom | 856 | 1132 | +276 | bad |
| D1-desktop | textElements | 241 | 241 | 0 | neutral |
| D1-desktop | tinyText | 5 | 2 | -3 | good |
| D1-desktop | tinyTextOwned | 3 | 0 | -3 | good |
| D1-desktop | visibleIndicators | 40 | 40 | 0 | neutral |
| D1-mobile | chromeTax | 106 | 106 | 0 | neutral |
| D1-mobile | consoleErrors.count | 0 | 0 | 0 | neutral |
| D1-mobile | contrastFails | 0 | 0 | 0 | neutral |
| D1-mobile | contrastFailsOwned | 0 | 0 | 0 | neutral |
| D1-mobile | contrastUnresolved | 24 | 24 | 0 | neutral |
| D1-mobile | focusClipped | 4 | 4 | 0 | neutral |
| D1-mobile | hOverflow | 1 | 0 | -1 | good |
| D1-mobile | hoverOnly | 0 | 0 | 0 | neutral |
| D1-mobile | interactive | 86 | 86 | 0 | neutral |
| D1-mobile | measureMs | 1352 | 1561 | +209 | bad |
| D1-mobile | nodes | 885 | 885 | 0 | neutral |
| D1-mobile | overflowingOwned | 19 | 19 | 0 | neutral |
| D1-mobile | pageErrors.count | 0 | 0 | 0 | neutral |
| D1-mobile | smallPrimary | 20 | 3 | -17 | good |
| D1-mobile | smallPrimaryOwned | 19 | 2 | -17 | good |
| D1-mobile | smallTargets | 70 | 53 | -17 | good |
| D1-mobile | smallTargetsOwned | 69 | 52 | -17 | good |
| D1-mobile | stickyCount | 5 | 5 | 0 | neutral |
| D1-mobile | tDom | 775 | 1051 | +276 | bad |
| D1-mobile | textElements | 182 | 182 | 0 | neutral |
| D1-mobile | tinyText | 3 | 0 | -3 | good |
| D1-mobile | tinyTextOwned | 3 | 0 | -3 | good |
| D1-mobile | visibleIndicators | 39 | 39 | 0 | neutral |
| S1-desktop | chromeTax | 146 | 146 | 0 | neutral |
| S1-desktop | consoleErrors.count | 0 | 0 | 0 | neutral |
| S1-desktop | contrastFails | 1 | 1 | 0 | neutral |
| S1-desktop | contrastFailsOwned | 1 | 1 | 0 | neutral |
| S1-desktop | contrastUnresolved | 0 | 0 | 0 | neutral |
| S1-desktop | focusClipped | 0 | 0 | 0 | neutral |
| S1-desktop | hOverflow | 0 | 0 | 0 | neutral |
| S1-desktop | hoverOnly | 0 | 0 | 0 | neutral |
| S1-desktop | interactive | 106 | 106 | 0 | neutral |
| S1-desktop | measureMs | 2162 | 2565 | +403 | bad |
| S1-desktop | nodes | 2119 | 2123 | +4 | neutral |
| S1-desktop | overflowingOwned | 0 | 0 | 0 | neutral |
| S1-desktop | pageErrors.count | 0 | 0 | 0 | neutral |
| S1-desktop | smallPrimary | 0 | 0 | 0 | neutral |
| S1-desktop | smallPrimaryOwned | 0 | 0 | 0 | neutral |
| S1-desktop | smallTargets | 59 | 59 | 0 | neutral |
| S1-desktop | smallTargetsOwned | 21 | 21 | 0 | neutral |
| S1-desktop | stickyCount | 9 | 9 | 0 | neutral |
| S1-desktop | tDom | 1552 | 1560 | +8 | bad |
| S1-desktop | textElements | 166 | 167 | +1 | neutral |
| S1-desktop | tinyText | 42 | 42 | 0 | neutral |
| S1-desktop | tinyTextOwned | 40 | 40 | 0 | neutral |
| S1-desktop | visibleIndicators | 40 | 40 | 0 | neutral |
| S1-mobile | chromeTax | 210 | 210 | 0 | neutral |
| S1-mobile | consoleErrors.count | 0 | 0 | 0 | neutral |
| S1-mobile | contrastFails | 1 | 1 | 0 | neutral |
| S1-mobile | contrastFailsOwned | 1 | 1 | 0 | neutral |
| S1-mobile | contrastUnresolved | 0 | 0 | 0 | neutral |
| S1-mobile | focusClipped | 11 | 11 | 0 | neutral |
| S1-mobile | hOverflow | 0 | 0 | 0 | neutral |
| S1-mobile | hoverOnly | 0 | 0 | 0 | neutral |
| S1-mobile | interactive | 53 | 53 | 0 | neutral |
| S1-mobile | measureMs | 1524 | 1861 | +337 | bad |
| S1-mobile | nodes | 2120 | 2124 | +4 | neutral |
| S1-mobile | overflowingOwned | 19 | 19 | 0 | neutral |
| S1-mobile | pageErrors.count | 0 | 0 | 0 | neutral |
| S1-mobile | smallPrimary | 3 | 3 | 0 | neutral |
| S1-mobile | smallPrimaryOwned | 2 | 2 | 0 | neutral |
| S1-mobile | smallTargets | 24 | 24 | 0 | neutral |
| S1-mobile | smallTargetsOwned | 23 | 23 | 0 | neutral |
| S1-mobile | stickyCount | 8 | 8 | 0 | neutral |
| S1-mobile | tDom | 1423 | 1849 | +426 | bad |
| S1-mobile | textElements | 106 | 107 | +1 | neutral |
| S1-mobile | tinyText | 40 | 41 | +1 | bad |
| S1-mobile | tinyTextOwned | 40 | 41 | +1 | bad |
| S1-mobile | visibleIndicators | 39 | 39 | 0 | neutral |
Full worsened list
All 25 rows classified bad by the prescribed rules, repeated without filtering. Timing changes are observations, not an attribution to the UI changes.
| shot | metric | before | after | delta | direction |
|---|---|---|---|---|---|
| J1-desktop | measureMs | 447 | 532 | +85 | bad |
| J1-mobile | measureMs | 540 | 545 | +5 | bad |
| J1-mobile | tDom | 598 | 666 | +68 | bad |
| J2-desktop | measureMs | 477 | 665 | +188 | bad |
| J2-mobile | measureMs | 331 | 574 | +243 | bad |
| J4-desktop | visibleIndicators | 40 | 11 | -29 | bad |
| J4-mobile | visibleIndicators | 40 | 11 | -29 | bad |
| Q1-desktop | tDom | 986 | 1598 | +612 | bad |
| Q1-mobile | measureMs | 944 | 1496 | +552 | bad |
| Q1-mobile | tDom | 1051 | 1227 | +176 | bad |
| L1-desktop | measureMs | 2113 | 2867 | +754 | bad |
| L1-desktop | smallTargets | 170 | 179 | +9 | bad |
| L1-desktop | smallTargetsOwned | 8 | 17 | +9 | bad |
| L1-desktop | tDom | 1065 | 1370 | +305 | bad |
| L1-mobile | measureMs | 1430 | 2009 | +579 | bad |
| L1-mobile | tDom | 1017 | 1145 | +128 | bad |
| D1-desktop | tDom | 856 | 1132 | +276 | bad |
| D1-mobile | measureMs | 1352 | 1561 | +209 | bad |
| D1-mobile | tDom | 775 | 1051 | +276 | bad |
| S1-desktop | measureMs | 2162 | 2565 | +403 | bad |
| S1-desktop | tDom | 1552 | 1560 | +8 | bad |
| S1-mobile | measureMs | 1524 | 1861 | +337 | bad |
| S1-mobile | tDom | 1423 | 1849 | +426 | bad |
| S1-mobile | tinyText | 40 | 41 | +1 | bad |
| S1-mobile | tinyTextOwned | 40 | 41 | +1 | bad |
Added or missing numeric metrics
| shot | metric | before | after | delta | direction |
|---|---|---|---|---|---|
| J5-desktop | pdfjsPages | 3 | null | null | neutral |