Commit Graph
5 Commits
Author SHA1 Message Date
Marc-André Bombeck d22fc21276 fix(e2e): make charts-mobile xAxis-tick wait class-independent
Recharts 3.x relocated x-axis tick labels out of `.recharts-xAxis` into
a sibling ZIndex container `.recharts-xAxis-tick-labels`. The old
selector `.recharts-xAxis .recharts-cartesian-axis-tick text` matched
nothing under the new DOM, so the wait timed out and the spec failed
on chromium-mobile. Switch both the readiness wait and the per-wrapper
count to the new container, scope counting to `.recharts-wrapper` so
each chart contributes once, and drop empty axes from the tally.
2026-05-14 19:37:25 +02:00
Marc-André Bombeck 25477e8aea test(e2e): unblock chart-overlay toggle + mobile x-axis tick wait
Two specs have been red on main since the v1.4.20 hero rewrite, spamming
the GitHub Actions failure mailer on every push:

1. chart-overlay-controls.spec.ts — the test opens the dashboard's chart
   overlay popover and toggles 'target range' on. The Radix dropdown
   content portals to the document body, so on the 393×851 Pixel 5 and
   near the bottom of the 1280×720 desktop viewport the toggle's bbox
   lands below the fold. `click({force:true})` still asserts the bbox
   intersects the viewport and refuses to fire, and
   `scrollIntoViewIfNeeded` on the portalled content is a no-op because
   the portal sits outside the page scroll container. Switching to
   `dispatchEvent('click')` synthesises a click directly on the element
   without any actionability or viewport check; Radix Switch's native
   click handler fires `onCheckedChange` and the PUT lands as expected.

2. charts-mobile.spec.ts — the 30-day-window tick-count assertion times
   out waiting for `.recharts-xAxis .recharts-cartesian-axis-tick text`
   to be visible. Recharts does paint the <text> ticks into the SVG, but
   the chart card on Pixel-5 is taller than the 851-px viewport, so the
   bottom-anchored x-axis labels stay below the fold even after
   `scrollIntoViewIfNeeded` brings the card's top into view. The
   downstream `evaluate` only needs the ticks attached to the DOM (it
   counts them via querySelectorAll), so `state: 'attached'` is both
   sufficient and viewport-tolerant.

Neither fix changes the assertion semantics — both still exercise the
same user-visible behaviour against the same selectors. The CI mailer
should fall silent after the next push.
2026-05-14 11:54:44 +02:00
Marc-André BombeckandClaude Opus 4.7 3785fec2ac fix(e2e): scroll first chart card into view before counting axis ticks
The Pixel-5 tick-density spec waited on `.recharts-xAxis` to be visible
but Playwright kept resolving the SVG axis as `hidden`. On a 393×851
viewport the dashboard ships several stacked tiles above the first
chart card, so the bottom-positioned axis sits below the initial fold
when the test starts probing.

Locate the first chart card by its range-tab data-slot, scroll it into
view so Recharts' ResponsiveContainer measures a non-zero parent, then
wait for an axis tick label (not the wrapper `<g>`) to be visible
before counting ticks.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 19:49:44 +02:00
Marc-André BombeckandClaude Opus 4.7 ae2f671321 style: prettier on touched test + e2e files
Run prettier on the test, e2e, and component files this v1.4.19
A8 wave touched. The .planning/* and docs/audit/* prettier
warnings are pre-existing baseline noise — left alone to keep
this commit narrow.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 13:58:30 +02:00
Marc-André BombeckandClaude Opus 4.7 a7390852f8 test(charts): mobile-viewport e2e spec for header layout + tick density
Adds a Playwright spec that runs only on the chromium-mobile project
(Pixel 5, 393 × 851) and gates the two regressions the previous
chart commit cleared:

- Every chart card on the dashboard keeps its range tabs on a single
  horizontal row (asserts that all `[data-slot=chart-range-tab]`
  inside a card share one rounded `top` coordinate). Mock data feeds
  every chart 30 days of measurements + 30 days of compliance points
  so the controls row actually paints with all chips and tabs.

- Every recharts x-axis paints at most seven visible tick labels at
  Pixel 5. The helper caps at six; the seven-tick allowance covers
  Recharts' preserveStartEnd interaction with rounding.

The PROD probe script that drove the audit is also committed at
.planning/v1419-a2-prod-probe.mjs for future regression runs, with
the findings recorded in .planning/phase-A2-mobile-findings.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 13:12:11 +02:00