test(admin): add v2 orders list mobile spec (no horizontal scroll, 48pt tap targets)
This commit is contained in:
@@ -0,0 +1,42 @@
|
|||||||
|
// tests/mobile-admin/orders-list.spec.ts
|
||||||
|
import { test, expect } from "@playwright/test";
|
||||||
|
|
||||||
|
test.use({ viewport: { width: 390, height: 844 } }); // iPhone 13
|
||||||
|
|
||||||
|
test.beforeEach(async ({ page }) => {
|
||||||
|
// Sign in as a test admin (requires the seed admin from db/seed.ts).
|
||||||
|
// The mobile-admin project assumes `test-admin@example.com /
|
||||||
|
// test-password` is provisioned. If this isn't the case locally, run
|
||||||
|
// `npm run db:seed` first.
|
||||||
|
await page.goto("/login");
|
||||||
|
await page.fill('input[name="email"]', "test-admin@example.com");
|
||||||
|
await page.fill('input[name="password"]', "test-password");
|
||||||
|
await page.click('button[type="submit"]');
|
||||||
|
await page.waitForURL(/\/admin/);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("orders list renders without horizontal scroll on iPhone 13", async ({ page }) => {
|
||||||
|
await page.goto("/admin/v2/orders");
|
||||||
|
const scrollWidth = await page.evaluate(() => document.documentElement.scrollWidth);
|
||||||
|
const clientWidth = await page.evaluate(() => document.documentElement.clientWidth);
|
||||||
|
expect(scrollWidth).toBeLessThanOrEqual(clientWidth);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("orders list has no touch targets smaller than 48pt", async ({ page }) => {
|
||||||
|
await page.goto("/admin/v2/orders");
|
||||||
|
const violations = await page.evaluate(() => {
|
||||||
|
const interactive = document.querySelectorAll("a, button, input, select, textarea, [role='button']");
|
||||||
|
const small: string[] = [];
|
||||||
|
interactive.forEach((el) => {
|
||||||
|
const rect = el.getBoundingClientRect();
|
||||||
|
if (rect.width > 0 && rect.height > 0 && (rect.height < 48 || rect.width < 48)) {
|
||||||
|
small.push(`${el.tagName}.${(el as HTMLElement).className}: ${rect.width}x${rect.height}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return small;
|
||||||
|
});
|
||||||
|
expect(
|
||||||
|
violations,
|
||||||
|
`Found ${violations.length} small touch targets: ${violations.join(", ")}`,
|
||||||
|
).toHaveLength(0);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user