mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-11 13:52:20 +00:00
style: apply prettier across the tree
One-shot prettier pass so the new format:check gate starts from a clean baseline. Formatting only — no behaviour change. Generator-owned and vendored artifacts stay untouched via .prettierignore.
This commit is contained in:
1 parent
b3fea2ef59
commit
1f4ba5939d
1000 files changed
+12130
-8385
No files matched your search
@@ -243,7 +243,9 @@ test.describe("Coach guided clarifying questions", () => {
|
||||
await expect(current).toHaveCount(0);
|
||||
|
||||
// Settling the offer (decline via ✕) releases the next question.
|
||||
await adopt.locator('[data-slot="coach-self-context-adopt-dismiss"]').click();
|
||||
await adopt
|
||||
.locator('[data-slot="coach-self-context-adopt-dismiss"]')
|
||||
.click();
|
||||
await expect(current).toContainText(QUESTIONS[1], { timeout: 10_000 });
|
||||
await expect(
|
||||
current.locator('[data-slot="coach-guided-progress"]'),
|
||||
|
||||
@@ -114,7 +114,12 @@ test.describe("authenticated dashboard render", () => {
|
||||
const types = (url.searchParams.get("types") ?? "WEIGHT").split(",");
|
||||
const series: Record<
|
||||
string,
|
||||
Array<{ type: string; value: number; measuredAt: string; count: number }>
|
||||
Array<{
|
||||
type: string;
|
||||
value: number;
|
||||
measuredAt: string;
|
||||
count: number;
|
||||
}>
|
||||
> = {};
|
||||
for (const type of types) {
|
||||
const baseValue =
|
||||
|
||||
@@ -24,9 +24,9 @@ import { STORAGE_STATE_PATH } from "./setup/global-setup";
|
||||
test.describe("v1.4.28 — insights scroll restoration", () => {
|
||||
test.use({ storageState: STORAGE_STATE_PATH });
|
||||
|
||||
test.fixme(
|
||||
"returning to /insights from a sub-page lands at the top",
|
||||
async ({ page }) => {
|
||||
test.fixme("returning to /insights from a sub-page lands at the top", async ({
|
||||
page,
|
||||
}) => {
|
||||
await page.goto("/insights", { waitUntil: "domcontentloaded" });
|
||||
// Force the mother page tall enough that scrolling has somewhere
|
||||
// to go even on a sparse seed; the rendered Insights overview
|
||||
@@ -42,10 +42,7 @@ test.describe("v1.4.28 — insights scroll restoration", () => {
|
||||
await page.waitForURL(/\/insights\//);
|
||||
|
||||
// Back to the mother page via the overview pill (pill index 0).
|
||||
await page
|
||||
.locator("[data-slot='insights-tab-strip-pill']")
|
||||
.first()
|
||||
.click();
|
||||
await page.locator("[data-slot='insights-tab-strip-pill']").first().click();
|
||||
await page.waitForURL(/\/insights\/?$/);
|
||||
|
||||
// The mother page's mount-effect deferred a `scrollTo(0)` to the
|
||||
@@ -53,8 +50,7 @@ test.describe("v1.4.28 — insights scroll restoration", () => {
|
||||
await page.waitForTimeout(50);
|
||||
const y = await page.evaluate(() => window.scrollY);
|
||||
expect(y).toBeLessThan(50);
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test("the sticky tab strip declares touch-action pan-y so vertical swipes pass through", async ({
|
||||
page,
|
||||
@@ -63,7 +59,9 @@ test.describe("v1.4.28 — insights scroll restoration", () => {
|
||||
const nav = page.locator("[data-slot='insights-tab-strip']");
|
||||
await expect(nav).toBeVisible();
|
||||
const touchAction = await nav.evaluate(
|
||||
(el) => (el as HTMLElement).style.touchAction || getComputedStyle(el).touchAction,
|
||||
(el) =>
|
||||
(el as HTMLElement).style.touchAction ||
|
||||
getComputedStyle(el).touchAction,
|
||||
);
|
||||
expect(touchAction).toContain("pan-y");
|
||||
});
|
||||
|
||||
@@ -165,10 +165,7 @@ test.describe("medication wizard — compose-mode", () => {
|
||||
expect(capture.postBody).toMatchObject({
|
||||
name: "Insulin",
|
||||
oneShot: false,
|
||||
schedules: [
|
||||
{ rrule: "FREQ=DAILY" },
|
||||
{ rrule: "FREQ=WEEKLY;BYDAY=WE" },
|
||||
],
|
||||
schedules: [{ rrule: "FREQ=DAILY" }, { rrule: "FREQ=WEEKLY;BYDAY=WE" }],
|
||||
});
|
||||
|
||||
await expectMedicationOnList(page, {
|
||||
|
||||
@@ -221,9 +221,13 @@ export async function expectStep(
|
||||
// stepper landed, so it is hidden on the desktop e2e viewport. Assert the
|
||||
// viewport-independent root data-attributes the dialog always carries.
|
||||
const root = page.locator('[data-slot="medication-wizard-dialog"]');
|
||||
await expect(root).toHaveAttribute("data-display-step", String(displayIndex), {
|
||||
timeout: 5_000,
|
||||
});
|
||||
await expect(root).toHaveAttribute(
|
||||
"data-display-step",
|
||||
String(displayIndex),
|
||||
{
|
||||
timeout: 5_000,
|
||||
},
|
||||
);
|
||||
if (totalSteps != null) {
|
||||
await expect(root).toHaveAttribute("data-total-steps", String(totalSteps));
|
||||
}
|
||||
|
||||
@@ -159,7 +159,9 @@ test.describe("mobile-viewport smoke", () => {
|
||||
// trimmed text. A role-based label is more stable across
|
||||
// re-skins than the raw `innerText` that brittle selectors
|
||||
// surfaced previously.
|
||||
const ariaLabel = await btn.getAttribute("aria-label").catch(() => null);
|
||||
const ariaLabel = await btn
|
||||
.getAttribute("aria-label")
|
||||
.catch(() => null);
|
||||
const innerText = await btn.innerText().catch(() => "");
|
||||
const label = ariaLabel || innerText || "(no text)";
|
||||
failures.push(
|
||||
|
||||
@@ -138,17 +138,17 @@ test.describe("Coach launch surfaces on insights sub-pages", () => {
|
||||
|
||||
// CCH-04 — the per-metric inline launch icon is retired; no header
|
||||
// launcher renders on the sub-page.
|
||||
await expect(
|
||||
page.locator('[data-slot="coach-launch-icon"]'),
|
||||
).toHaveCount(0);
|
||||
await expect(page.locator('[data-slot="coach-launch-icon"]')).toHaveCount(
|
||||
0,
|
||||
);
|
||||
|
||||
// The FAB is the permanent launcher; with no unread nudge it
|
||||
// renders without the unread dot.
|
||||
const fab = page.locator('[data-slot="coach-fab"]');
|
||||
await expect(fab).toBeVisible({ timeout: 10_000 });
|
||||
await expect(
|
||||
page.locator('[data-slot="coach-fab-unread"]'),
|
||||
).toHaveCount(0);
|
||||
await expect(page.locator('[data-slot="coach-fab-unread"]')).toHaveCount(
|
||||
0,
|
||||
);
|
||||
});
|
||||
|
||||
test(`/insights/${slug} mounts the dot-free Coach FAB on Desktop Chrome`, async ({
|
||||
@@ -161,15 +161,15 @@ test.describe("Coach launch surfaces on insights sub-pages", () => {
|
||||
|
||||
await page.goto(`/insights/${slug}`, { waitUntil: "domcontentloaded" });
|
||||
|
||||
await expect(
|
||||
page.locator('[data-slot="coach-launch-icon"]'),
|
||||
).toHaveCount(0);
|
||||
await expect(page.locator('[data-slot="coach-launch-icon"]')).toHaveCount(
|
||||
0,
|
||||
);
|
||||
|
||||
const fab = page.locator('[data-slot="coach-fab"]');
|
||||
await expect(fab).toBeVisible({ timeout: 10_000 });
|
||||
await expect(
|
||||
page.locator('[data-slot="coach-fab-unread"]'),
|
||||
).toHaveCount(0);
|
||||
await expect(page.locator('[data-slot="coach-fab-unread"]')).toHaveCount(
|
||||
0,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -255,9 +255,7 @@ test.describe("Coach launch surfaces on insights sub-pages", () => {
|
||||
await expect(fab).toHaveAttribute("data-unread", "true", {
|
||||
timeout: 10_000,
|
||||
});
|
||||
await expect(
|
||||
page.locator('[data-slot="coach-fab-unread"]'),
|
||||
).toBeVisible();
|
||||
await expect(page.locator('[data-slot="coach-fab-unread"]')).toBeVisible();
|
||||
await fab.click();
|
||||
|
||||
// v1.16.11 — the FAB opens the side drawer in place instead of
|
||||
@@ -274,9 +272,7 @@ test.describe("Coach launch surfaces on insights sub-pages", () => {
|
||||
|
||||
// Opening the Coach counts as reading the nudge on this device —
|
||||
// the dot clears and the unread flag drops off the FAB.
|
||||
await expect(page.locator('[data-slot="coach-fab-unread"]')).toHaveCount(
|
||||
0,
|
||||
);
|
||||
await expect(page.locator('[data-slot="coach-fab-unread"]')).toHaveCount(0);
|
||||
await expect(fab).not.toHaveAttribute("data-unread", "true");
|
||||
});
|
||||
|
||||
@@ -318,9 +314,9 @@ test.describe("Coach launch surfaces on insights sub-pages", () => {
|
||||
|
||||
// No in-panel tray opens — the click navigates to the full view.
|
||||
await page.waitForURL("**/coach", { timeout: 10_000 });
|
||||
await expect(
|
||||
page.locator('[data-slot="coach-page"]'),
|
||||
).toBeVisible({ timeout: 10_000 });
|
||||
await expect(page.locator('[data-slot="coach-page"]')).toBeVisible({
|
||||
timeout: 10_000,
|
||||
});
|
||||
await expect(
|
||||
page.locator('[data-slot="coach-drawer-history-tray"]'),
|
||||
).toHaveCount(0);
|
||||
|
||||
@@ -148,9 +148,7 @@ test.describe("v1.4.27 — insights empty-state with metric gating", () => {
|
||||
// title). Pin on the sub-page slot's h1 so we don't accidentally
|
||||
// match a sidebar / nav element.
|
||||
await expect(
|
||||
page.locator(
|
||||
'[data-slot="insights-subpage"] #insights-subpage-title',
|
||||
),
|
||||
page.locator('[data-slot="insights-subpage"] #insights-subpage-title'),
|
||||
).toContainText(headingMatch);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -38,14 +38,14 @@ test.describe("v1.4.27 — public pages", () => {
|
||||
// No bounce to the login page.
|
||||
expect(page.url()).toMatch(/\/about(\?|$)/);
|
||||
|
||||
await expect(page.getByRole("heading", { name: /about/i }).first()).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("heading", { name: /about/i }).first(),
|
||||
).toBeVisible();
|
||||
|
||||
// GeoLite2 attribution is the load-bearing reason this page exists.
|
||||
await expect(page.getByText(/GeoLite2/)).toBeVisible();
|
||||
await expect(page.getByText(/MaxMind/)).toBeVisible();
|
||||
await expect(
|
||||
page.getByText(/Attribution-ShareAlike 4\.0/i),
|
||||
).toBeVisible();
|
||||
await expect(page.getByText(/Attribution-ShareAlike 4\.0/i)).toBeVisible();
|
||||
});
|
||||
|
||||
// v1.4.28 backlog: Next.js's `not-found.tsx` may return 200 or 404
|
||||
|
||||
@@ -58,9 +58,7 @@ test.describe("v1.4.27 — ResponsiveSheet branch", () => {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
|
||||
const content = page.locator(
|
||||
'[data-slot="responsive-sheet-content"]',
|
||||
);
|
||||
const content = page.locator('[data-slot="responsive-sheet-content"]');
|
||||
await expect(content).toBeVisible({ timeout: 10_000 });
|
||||
await expect(content).toHaveAttribute("data-variant", "sheet");
|
||||
|
||||
@@ -85,9 +83,7 @@ test.describe("v1.4.27 — ResponsiveSheet branch", () => {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
|
||||
const content = page.locator(
|
||||
'[data-slot="responsive-sheet-content"]',
|
||||
);
|
||||
const content = page.locator('[data-slot="responsive-sheet-content"]');
|
||||
await expect(content).toBeVisible({ timeout: 10_000 });
|
||||
await expect(content).toHaveAttribute("data-variant", "dialog");
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user