mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-11-05 04:12:25 +00:00
Merge pull request #456 from PR0M3TH3AN/codex/add-playwright-video-modal-tests-and-documentation
Add mobile video modal snapshots and sticky guardrail test
This commit is contained in:
5 files changed
+174
-26
No files matched your search
+3
-1
@@ -6,10 +6,12 @@ Before starting, open `docs/kitchen-sink.html` in a browser to review the modal
|
||||
|
||||
Automated regression coverage now exercises these flows across both the legacy and design-system variants:
|
||||
|
||||
* `tests/video-modal-accessibility.test.mjs` validates sticky header transitions, scroll locking, and zap popover accessibility for the video modal.
|
||||
* `tests/video-modal-accessibility.test.mjs` validates sticky header transitions, scroll locking, zap popover accessibility, and now verifies the video shell drops sticky positioning on mobile breakpoints.
|
||||
* `tests/modal-accessibility.test.mjs` mirrors upload/edit modal accessibility along with their form validation and mode toggles.
|
||||
* `tests/profile-modal-controller.test.mjs` verifies profile modal focus restoration and navigation button state changes.
|
||||
|
||||
`tests/visual/kitchen-sink.spec.ts` captures design-system snapshots for the kitchen sink and the video modal. When modal styles change, run `npm run test:visual:update` to refresh both the desktop and mobile baselines with `FEATURE_DESIGN_SYSTEM` toggled on and off.
|
||||
|
||||
* Launch the site, trigger any video card or thumbnail to open the playback modal, and keep track of the element you used to open it.
|
||||
* Scroll the modal content down and back up; confirm the sticky navigation bar hides on downward scroll and reappears when you reverse direction.
|
||||
* Activate the zap button to display the popover and tab through its fields to confirm focus stays within the dialog; press `Escape` to close it and ensure focus returns to the zap trigger.
|
||||
|
||||
@@ -182,14 +182,8 @@ for (const designSystemEnabled of [false, true]) {
|
||||
test(
|
||||
`[${modeLabel}] video modal sticky navigation responds to scroll direction`,
|
||||
async (t) => {
|
||||
const {
|
||||
window,
|
||||
document,
|
||||
modal,
|
||||
playerModal,
|
||||
trigger,
|
||||
cleanup,
|
||||
} = await setupModal({ designSystemEnabled });
|
||||
const { window, modal, playerModal, trigger, cleanup } =
|
||||
await setupModal({ designSystemEnabled });
|
||||
t.after(cleanup);
|
||||
|
||||
modal.open(null, { triggerElement: trigger });
|
||||
@@ -228,6 +222,41 @@ for (const designSystemEnabled of [false, true]) {
|
||||
}
|
||||
);
|
||||
|
||||
test(
|
||||
`[${modeLabel}] video modal video shell is not sticky at mobile breakpoints`,
|
||||
async (t) => {
|
||||
const { window, modal, playerModal, trigger, cleanup } =
|
||||
await setupModal({ designSystemEnabled });
|
||||
t.after(cleanup);
|
||||
|
||||
const originalInnerWidth = window.innerWidth;
|
||||
window.innerWidth = 390;
|
||||
t.after(() => {
|
||||
window.innerWidth = originalInnerWidth;
|
||||
});
|
||||
window.dispatchEvent(new window.Event("resize"));
|
||||
|
||||
modal.open(null, { triggerElement: trigger });
|
||||
await Promise.resolve();
|
||||
|
||||
const videoShell = playerModal.querySelector(".video-modal__video");
|
||||
assert.ok(videoShell, "video shell wrapper should exist");
|
||||
|
||||
const stickyTargets = [
|
||||
videoShell,
|
||||
videoShell.querySelector(".card"),
|
||||
].filter(Boolean);
|
||||
|
||||
stickyTargets.forEach((element) => {
|
||||
assert.equal(
|
||||
element.classList.contains("sticky"),
|
||||
false,
|
||||
"video shell should not use sticky positioning on mobile"
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
test(
|
||||
`[${modeLabel}] video modal toggles document scroll locking on open/close`,
|
||||
async (t) => {
|
||||
|
||||
@@ -3,7 +3,12 @@ import { resolve } from "node:path";
|
||||
|
||||
export type KitchenSinkTheme = "default" | "light" | "contrast";
|
||||
|
||||
type BaselineMap = Record<KitchenSinkTheme, string>;
|
||||
export type BaselineKey =
|
||||
| KitchenSinkTheme
|
||||
| "video-modal-mobile-legacy"
|
||||
| "video-modal-mobile-design-system";
|
||||
|
||||
type BaselineMap = Record<string, string>;
|
||||
|
||||
const BASELINE_FILE_PATH = resolve(__dirname, "baselines.json");
|
||||
|
||||
@@ -12,18 +17,18 @@ const baselines: BaselineMap = JSON.parse(
|
||||
readFileSync(BASELINE_FILE_PATH, "utf-8")
|
||||
);
|
||||
|
||||
export function getBaseline(theme: KitchenSinkTheme): Buffer {
|
||||
const base64 = baselines[theme];
|
||||
export function getBaseline(key: BaselineKey): Buffer {
|
||||
const base64 = baselines[key];
|
||||
|
||||
if (!base64) {
|
||||
throw new Error(`Missing baseline for theme: ${theme}`);
|
||||
throw new Error(`Missing baseline for theme: ${key}`);
|
||||
}
|
||||
|
||||
return Buffer.from(base64, "base64");
|
||||
}
|
||||
|
||||
export function setBaseline(theme: KitchenSinkTheme, baseline: Buffer): void {
|
||||
baselines[theme] = baseline.toString("base64");
|
||||
export function setBaseline(key: BaselineKey, baseline: Buffer): void {
|
||||
baselines[key] = baseline.toString("base64");
|
||||
dirty = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
{
|
||||
"default": "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 truncated
|
||||
"light": "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 truncated
|
||||
"contrast": "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 truncated
|
||||
}
|
||||
"contrast": "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 truncated
|
||||
"video-modal-mobile-legacy": "iVBORw0KGgoAAAANSUhEUgAAAYYAAANMCAIAAADXDp1JAAAQAElEQVR4nOzdDZzb5J0vek14GVEgVlrIiHNgItq8qJ8yRLRJULdDEZuwCEK3JmS3Smi3DuzeOuHsrcg5n4vTu1ucs3sWp+ccML0L8e5dwJxCYnqT1N2S1pSkNZBuTZK2hqGnTtIuypRdNCkUmbdo8jb3/8ieybzY8z7JMzO/b1OjkWVZlq2fn+eR/DzndnV1CQAAfDhXAADgBiIJADiCSAIAjiCSAIAjiCQA4AgiCQA4gkgCAI4MFknf+ta33n///ddee02YeFdeeeWFF174pS99SQCAaayh3qWSlEcXXHDBsmXLhDNl165dR48eRSoBTGcz6t1B5aMzmUeEno6eVACAaaxuxe3M1Nd4eFIA4AeatwGAI4gkAOAIIgkAOIJIAgCOzBAmxpEjR2644YZbb71VAAAYtgmJJNd1TdMsFovvvfeeAAAwbONfcaPy0c033+w4jqIo3/72twUAgGEb50iiPLrpppsqefTss8/Onj1bAAAYtvGMJOQRAIzRuEUS8ggAxm58mre7urpWrlxJefSxj33sBz/4AfIIAEZnnNuSQqGQAAAwWuNTSmpoaNi2bRtV2X7+85/T6TaqxAkAACM3btclUWWNmpAolaj6Ro1KSCUAGIXxvFQSqQQAYzTOV28jlQBgLMb/ByWUSnTS7aMf/SilEp2GEwAAhm1CfuMmy/LOnTvnzp17/vnnCwAAwzZRnZNQKu3bt08AABgJ9JcEABxBJAEARxBJAMARRBIAcKRuJF155ZXCGXdWnhQA+FH3IoALL7xw165dwhlET0dPKgDANNbQ1dVV775vfetb77///pkZgZbKR5RHX/rSlwQAmMZ4iaQpCTkLMFJ1I4ny6IILLli2bJkAY0C10aNHjyKVAIapblsSlY+QR2NH+5D2pAAAw1P3jFu9+tozzzwjDIpqK/PmzcOv23qg5gswfCO+Lonqea3XL/vIpU017/zpnh+XSiWqqrS0tDQ2NgoAACMxikjqer+zq+udkydPDVjXOV2dx7uuvvrqWbM+vHfvvsWLF4miKAAADNuIOyfp6jp17ETXB8e63vNPnX+uMO+yc5svOYem6d9R/9TJk6yxfO7cj1EevfDCCx988EHwIL9jz+a7brx6gTxrlrxgyY0r123e1e4L48vft/G6WbPm3LGl95r99i13zJkl37j54Hg/XR8d+7bvbCsLADBWI46kU6e6TnWxspIszZhzKStkNZ7XcM2V5593Djt1d/LkyZ/+9Kff/OY3v/3tb3d0dDz77A9ZLGy/+8aVyXLrfU/udZy9T963YvahxBdXfm1XhzDOxNkzxbYdvdLOb9+1o02cGZrgGmTHnlRqCyIJYByMopTEykFzLj3vsll9Kn2nTgmdx05cc+0N1pfXfenOu//srrv/dFWELdyxJ7lpV9O9Tz563+2Lm0Oh5sXL1z6y7bkn7aUhgUWHf3DnhpXXLVnC/t267rE9lFN+24M3Xn3jXevvWnnrjUuuvvq6ux7c0+F37Fy3ZMld29urT9exi/25s1+qhVoWNbXv2Hmomkn+oZ07OpoXze9JJCqsrbt1yRx51hxa/8adlezyD25ff+uSq4Pnf3DDyiW3siJV+/Y7lty4buM62oTraBNWbqguLJT3PUarCNy6nuVQec+Dd31tx/7diTvu2CgAwNiMopR0imLpX91jew990Puff5walxre9U8dKZ944+3jHd6Jdz6gZU+VD31/T7ll1fKW3gO8heYvW718cZNIx/PGuzceWvrAc3tf3Pvc/YsPbVq/kcWMKBxpa78i+ugzz+197pHWg8n1m/aIratbG/dt3VOpgXXs37FfaF21qF8je2NT64p5R76/o1JiKbft+H65ZfmiULVBq2PXxvXJ9qUPvHjAefGRWzq2bEzuKVP+bV6/sW3xAy/u3bstNm/3jt3tndWVldvayssf2Pbci3ufWu3vTDxOK6V64Lq7kp2rn3xh797nHl56MLEusUdoXXv/6kVXLI099dR9AgCMzWhKSaeCfydP9f93/GTX0WOn3j16svzByXeOnjp6nJbt8stlv7GpKVSznZtCY09Hy6oVi1lehRatWdXit+1nxZHG0LzW1vlsbtOi1Svmlw8e6mhsWbWsqW3LblYE6ti/c3/j0hWLB5z2a2xuXdPq79q6r4OVZ3ZQXqxY1NRdSGpa9sjeA8/c08rKai2ti5v99iNlr33f7vbmFSsW0XM1td4ZW3FVTy2vsXnxLa3NtN1ic0tLqLPjiO+379nRFro9unw+zQ0tXr22tXPPDlTYAMbRaEpJXUFbUjWZ6v3r6vrQhRf+yZ+sFEOzxc4y5VKtlfkd5bIY6o4rsTEUEmjZYwLLpCu6s4HmNnYeKXeGWlbc0nxoC2VAOyVSaNmKlloj685evGKZuGfH/naKjz2Nt/SJrXLbdqokskb2WcofJfezLOks/7ZTELvH6G2c3dyTSKLYd+heVngqH+r47avJP1JmBdQvbj3U3t6OSAIYP6OLpC6qvVX+UeHo2Mljb/qHf+//27ETnT3zz2s4eYnIrlqm4k5L477H+56QouabBx/cftAXm0IhvyeuaKrMAohdZElRUa7WoDrZ3NkUFeK85atayru27qQ269m31E4kVthasWJ225adO3e0Na1Y3nK6Zbu8J7Fu06FbHtnrvv32284PbVYwoqeb3cieuPpUR9q7n7X2uuc1zfvM373wxts9Dm9b3SwAwHgZTcWtKwgmOrnm+W/sPfLU5v+9fKvzF085azKvrf3l73/wwbFySDx55SUnqw9oao2umd/2X1fesWH7vnZKHzoL9uAXV67fekgMiVTwaQ21ba1Ufjr2b93aJrYuZbWiTv/Qrq172oM62pYd7aHFi5pYDWo+FY2ObN+4aV9o+fJ59S55EuctXd3clky2zV+xbP7pC6P8joOHyqGWluZQcCaOhaTvUyhSpezQzl1sC8r7tm/e+eogmSQ2s6aqLY9XmropVzes38za44WZbIuFCb3OAGB6GFUpiTVwC28cLRXeeny/979mnNdQuat88vUX3/z7txp2XvERdlbu/ffff/LJp1ijyz3bnnt4tbjz7j9aqFw267KFX9zauOap7z2wnKpUodb7Hr133u51dGZtzsLPbQlFH7BbK4WXlsWhnes/dx2d9tozP3p/dHGlSNS8dHWreMSfv2Jpc/2LMMX5rSsWN1JpaWlzn7nLo8sbt3zxuutuvHHlhv2tNuXWpvWb9jWvvS8a2nHXkgVXX7dx/6Jli2YPcsWA2Lz6kYfX+I+v/Ox1dIZw5ab2K1rmNQni7JZF4p7/TGcABQAYm7o9Adx7770bNmwYOP9b33ryU9f98VsNvy90ZP71/Rf63fvlj6/XZfZj3WOnzn39zeM/efapL33pi8II0UmwlXfsXrHtyTvnD8id8r6NK+9uj2579PaJqC/5bQ9+7o79a555dHXz+F12fv/992/atEkAgGEYzaWS7x3zXvW+d/iDQr+71l+zqZJHxSP7H3vlYdbMfapLGEd+x57HNm73l65ZNn555Ldvv+u6G9cHdbFy267d5ebWltn4GQzAWTKK37idovLR6zN+ebLrWO/5/+3T6Q+Ls2lip/PUM689dfF5l7zw7+eO42i6/sHHVt74n38SWvr1Ryp1u3EiNi+7196/MbnysxtZ8/XSex9Y3YJEAjhbRhxJR48enfHyhc3Ckp45F1988Ze//GeV6V27dr9W8j4hLKfpDxr80XUGILasfeaVtf1nzr/zmcN3ChMgNP/2+5+6XQAADox4hJK1a6NCfcuWLaV/AvSCYVcAho+jEUqmJAy7AjAiGA5gAmE4AICRmpSj3eJQB5iqJusIJRj5A2BKmqwjlGDkD4ApaRKPUIJGLoCpByOUAABHMEIJAHBkwkco8ds23yjP6ku+dYJHDAGASWrEpaTeI5RURgSojFDyantnzwglhOY3NDQ8++wPb7tt7XNuz69D/LbHvnhHsnH10mYUnwBgoNFU3IRghJKZFzT0nn/qlHDiBBuh5LM3LDvvHIojofPoBzv/eVvvZTr2bFy/qWP5w9tWB72O+O07N21Mbt+1/4gwb9HyNbH71rY2dexc97mNR1oXCQcPdRzp6Jy9zL7/7/A7WIBpYxSlpOoIJcdOnOx314wGNkLJ0eNdMxqEc2Y0zDjJRijpudc/uP1r63eG7Kdiy4Kmcb99x4YN2wX70Re3Nft7knet35ha9L37mtlQRwfL9z6z7ZFm4eCWuz63ceNVi2p1nAQAU9FoSkk9I5T0u4si6vjJ6sxzz5nR2NB1+jrM8r7N67/Wtujvtq3p7jJbbF791Curq3e3Lm0J7e44UhZYR0hXtNyyOKjYzV+6ujWxcX97JyIJYJqY8BFKggd17Ny4PtW5+oH7b+/dhtSx77H1ty6Zwxq8lT/Zeqi702uRDRJQnQwFwwVgDBCA6WLCRygJmrTXb9jVfN/D9/bpeo1i6u5UefWTB9hAH87/t2Zez519xyw5HVAAMOWNpuLWM0LJu8ePHHhn997fPVEZESB0zuXXzPqTKy/6g8tmXlQZEUBgTdqb1ifblz9QbdLu4R85eMifvWIRKzaV27Y/vqu9vNiv3rNn6462ZWtbGg/u3rJPmHfffFxyCTBdjKZ5u2eEklfL3/3N+/l+I5TMvPjtJR/5UyH4ldx3vrNF/vn2/b/97f4/UVO9VtK49H/u/afbo8t2fO1zn93CBp9tXW0vP7Rx492b//sXqJFpUUt74o4b29s7OpuX3Xf/clwwADBtjO4igK7fdR5qK39n4AglX/z4X/aMUNLx/oe6ui5Y9sArbz9Qe1XND7x4e6+7VrNubDt2rhMam5bGHrgPtTWAaWhSjVACAFPdpBmhBACmA95GKGla/sje5QIATFOTeIQSjPwBMPVM1hFKMPIHwJQ0KUcowXAAAFMVBk0Line truncated
|
||||
"video-modal-mobile-design-system": "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 truncated
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
getBaseline,
|
||||
saveBaselines,
|
||||
setBaseline,
|
||||
type BaselineKey,
|
||||
type KitchenSinkTheme
|
||||
} from "./baseline-store";
|
||||
|
||||
@@ -14,6 +15,19 @@ const THEMES: { name: KitchenSinkTheme; value?: string }[] = [
|
||||
{ name: "contrast", value: "contrast" }
|
||||
];
|
||||
|
||||
const VIDEO_MODAL_VARIANTS = [
|
||||
{
|
||||
label: "legacy",
|
||||
baselineKey: "video-modal-mobile-legacy" as BaselineKey,
|
||||
designSystemEnabled: false
|
||||
},
|
||||
{
|
||||
label: "design-system",
|
||||
baselineKey: "video-modal-mobile-design-system" as BaselineKey,
|
||||
designSystemEnabled: true
|
||||
}
|
||||
] as const;
|
||||
|
||||
const MAX_DIFF_RATIO = 0.001;
|
||||
const UPDATE_BASELINES = process.env.UPDATE_VISUAL_BASELINES === "1";
|
||||
|
||||
@@ -23,17 +37,17 @@ test.use({
|
||||
viewport: { width: 1280, height: 720 }
|
||||
});
|
||||
|
||||
test.afterAll(async () => {
|
||||
if (UPDATE_BASELINES) {
|
||||
saveBaselines();
|
||||
}
|
||||
});
|
||||
|
||||
test.describe("design system kitchen sink", () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.emulateMedia({ reducedMotion: "reduce" });
|
||||
});
|
||||
|
||||
test.afterAll(async () => {
|
||||
if (UPDATE_BASELINES) {
|
||||
saveBaselines();
|
||||
}
|
||||
});
|
||||
|
||||
for (const theme of THEMES) {
|
||||
test(`renders ${theme.name} theme without regressions`, async ({
|
||||
page
|
||||
@@ -113,3 +127,103 @@ test.describe("design system kitchen sink", () => {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
test.describe("video modal mobile regression", () => {
|
||||
test.use({ viewport: { width: 390, height: 844 } });
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.emulateMedia({ reducedMotion: "reduce" });
|
||||
});
|
||||
|
||||
for (const variant of VIDEO_MODAL_VARIANTS) {
|
||||
test(`renders ${variant.label} video modal without regressions`, async (
|
||||
{ page },
|
||||
testInfo
|
||||
) => {
|
||||
await page.goto("/components/video-modal.html", {
|
||||
waitUntil: "networkidle"
|
||||
});
|
||||
|
||||
await page.addStyleTag({
|
||||
content:
|
||||
"*, *::before, *::after { transition-duration: 0s !important; animation-duration: 0s !important; animation-delay: 0s !important; caret-color: transparent !important; }"
|
||||
});
|
||||
|
||||
await page.evaluate(({ designSystemEnabled }) => {
|
||||
const modal = document.getElementById("playerModal");
|
||||
if (!modal) {
|
||||
throw new Error("Missing player modal root element");
|
||||
}
|
||||
|
||||
modal.classList.remove("hidden");
|
||||
modal.style.display = "flex";
|
||||
|
||||
const mode = designSystemEnabled ? "new" : "legacy";
|
||||
modal.setAttribute("data-ds", mode);
|
||||
|
||||
const html = document.documentElement;
|
||||
if (html) {
|
||||
html.setAttribute("data-ds", mode);
|
||||
}
|
||||
if (document.body) {
|
||||
document.body.setAttribute("data-ds", mode);
|
||||
}
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
}, variant);
|
||||
|
||||
await page.waitForTimeout(100);
|
||||
|
||||
const screenshotBuffer = await page.screenshot({
|
||||
type: "png",
|
||||
fullPage: true,
|
||||
animations: "disabled"
|
||||
});
|
||||
|
||||
if (UPDATE_BASELINES) {
|
||||
setBaseline(variant.baselineKey, screenshotBuffer);
|
||||
await testInfo.attach(`${variant.baselineKey}-actual.png`, {
|
||||
body: screenshotBuffer,
|
||||
contentType: "image/png"
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const baselineBuffer = getBaseline(variant.baselineKey);
|
||||
const actual = PNG.sync.read(screenshotBuffer);
|
||||
const expected = PNG.sync.read(baselineBuffer);
|
||||
|
||||
expect(actual.width).toBe(expected.width);
|
||||
expect(actual.height).toBe(expected.height);
|
||||
|
||||
const diff = new PNG({ width: actual.width, height: actual.height });
|
||||
const diffPixelCount = pixelmatch(
|
||||
actual.data,
|
||||
expected.data,
|
||||
diff.data,
|
||||
actual.width,
|
||||
actual.height,
|
||||
{ threshold: 0.1 }
|
||||
);
|
||||
|
||||
const diffRatio = diffPixelCount / (actual.width * actual.height);
|
||||
|
||||
if (diffPixelCount > 0) {
|
||||
await testInfo.attach(`${variant.baselineKey}-actual.png`, {
|
||||
body: screenshotBuffer,
|
||||
contentType: "image/png"
|
||||
});
|
||||
await testInfo.attach(`${variant.baselineKey}-baseline.png`, {
|
||||
body: baselineBuffer,
|
||||
contentType: "image/png"
|
||||
});
|
||||
await testInfo.attach(`${variant.baselineKey}-diff.png`, {
|
||||
body: PNG.sync.write(diff),
|
||||
contentType: "image/png"
|
||||
});
|
||||
}
|
||||
|
||||
expect(diffRatio).toBeLessThanOrEqual(MAX_DIFF_RATIO);
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user