diff --git a/e2e/tests/accessibility-resilience.spec.ts b/e2e/tests/accessibility-resilience.spec.ts index bcbb79e..0a94696 100644 --- a/e2e/tests/accessibility-resilience.spec.ts +++ b/e2e/tests/accessibility-resilience.spec.ts @@ -2,6 +2,17 @@ import AxeBuilder from "@axe-core/playwright"; import { expect, test } from "@playwright/test"; import { newIsolatedContext } from "./helpers"; +const publicAccessibilityPaths = [ + "/", + "/safety", + "/users/log-in", + "/users/register", + "/support", + "/account/delete", + "/legal/content-removal", + "/legal/take-it-down", +]; + async function expectAccessible(page: import("@playwright/test").Page): Promise { const results = await new AxeBuilder({ page }).analyze(); @@ -32,7 +43,7 @@ test("public pages are accessible by keyboard in light and dark themes", async ( await page.getByRole("button", { name: `Use ${theme} theme` }).click(); await expect(page.locator("html")).toHaveAttribute("data-theme", theme); - for (const path of ["/", "/safety", "/users/log-in", "/users/register"]) { + for (const path of publicAccessibilityPaths) { await page.goto(path); await expectAccessible(page); } @@ -51,14 +62,21 @@ test("public navigation does not overflow narrow or wide viewports", async ({ br const context = await newIsolatedContext(browser); const page = await context.newPage(); await page.setViewportSize(viewport); + + for (const path of ["/", "/support", "/legal/content-removal", "/legal/take-it-down"]) { + await page.goto(path); + + const dimensions = await page.evaluate(() => ({ + clientWidth: document.documentElement.clientWidth, + scrollWidth: document.documentElement.scrollWidth, + })); + + expect(dimensions.scrollWidth, `${path} overflowed at ${viewport.width}px`).toBeLessThanOrEqual( + dimensions.clientWidth, + ); + } + await page.goto("/"); - - const dimensions = await page.evaluate(() => ({ - clientWidth: document.documentElement.clientWidth, - scrollWidth: document.documentElement.scrollWidth, - })); - - expect(dimensions.scrollWidth).toBeLessThanOrEqual(dimensions.clientWidth); await expect(page.getByRole("navigation", { name: "Primary navigation" })).toBeVisible(); await expect(page.locator("body > header")).toHaveCount(1); diff --git a/lib/who_need_help_web/components/core_components.ex b/lib/who_need_help_web/components/core_components.ex index 5daf386..a0da1dc 100644 --- a/lib/who_need_help_web/components/core_components.ex +++ b/lib/who_need_help_web/components/core_components.ex @@ -294,9 +294,11 @@ defmodule WhoNeedHelpWeb.CoreComponents do def input(%{type: "select"} = assigns) do ~H""" -
-