Compare commits

...

4 Commits

Author SHA1 Message Date
adilallo 147dd013ab Fix visual regression test snapshot naming and add missing snapshots
CI Pipeline / test (20) (pull_request) Successful in 4m0s
CI Pipeline / test (18) (pull_request) Successful in 4m5s
CI Pipeline / e2e (chromium) (pull_request) Failing after 3m8s
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
2025-09-02 22:52:33 -06:00
adilallo ce4a5efdda Update playwright snapshot names
CI Pipeline / test (20) (pull_request) Successful in 1m52s
CI Pipeline / test (18) (pull_request) Successful in 2m5s
CI Pipeline / e2e (chromium) (pull_request) Failing after 3m0s
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / e2e (firefox) (pull_request) Has been cancelled
2025-09-02 22:43:44 -06:00
adilallo 07faeb2460 Seed screenshots for E2E tests
CI Pipeline / test (20) (pull_request) Successful in 1m46s
CI Pipeline / test (18) (pull_request) Successful in 2m2s
CI Pipeline / e2e (chromium) (pull_request) Failing after 4m38s
CI Pipeline / e2e (firefox) (pull_request) Failing after 4m24s
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
CI Pipeline / visual-regression (pull_request) Has been cancelled
2025-09-02 22:04:22 -06:00
adilallo c2de9e4788 Seed snapshots on branch
CI Pipeline / test (20) (pull_request) Successful in 1m51s
CI Pipeline / test (18) (pull_request) Successful in 2m9s
CI Pipeline / e2e (chromium) (pull_request) Failing after 3m10s
CI Pipeline / e2e (firefox) (pull_request) Failing after 3m29s
CI Pipeline / performance (pull_request) Has been cancelled
CI Pipeline / visual-regression (pull_request) Has been cancelled
CI Pipeline / storybook (pull_request) Has been cancelled
CI Pipeline / lint (pull_request) Has been cancelled
CI Pipeline / build (pull_request) Has been cancelled
CI Pipeline / e2e (webkit) (pull_request) Has been cancelled
2025-09-02 21:57:58 -06:00
46 changed files with 21 additions and 14 deletions
+2
View File
@@ -76,6 +76,8 @@ jobs:
curl -fsS "http://$HOST:$PORT" >/dev/null
echo "✅ App is responding at http://$HOST:$PORT"
# Run tests
echo "🧪 Running E2E tests for ${{ matrix.browser }}..."
BASE_URL="http://$HOST:$PORT" npx playwright test --project=${{ matrix.browser }} --reporter=list
+5
View File
@@ -19,6 +19,11 @@
# Visual regression snapshots (allow these)
!tests/e2e/visual-regression.spec.ts-snapshots/
!tests/e2e/visual-regression.spec.ts-snapshots/*.png
# Footer and header responsive snapshots (allow these)
!tests/e2e/footer.responsive.spec.js-snapshots/
!tests/e2e/footer.responsive.spec.js-snapshots/*.png
!tests/e2e/header.responsive.spec.js-snapshots/
!tests/e2e/header.responsive.spec.js-snapshots/*.png
# Ignore other image files
*.png
*.jpg
+1 -2
View File
@@ -35,8 +35,7 @@ export default defineConfig({
},
}),
// OS-agnostic snapshot path template (removes platform-specific suffixes)
snapshotPathTemplate:
"{testDir}/{testFileName}-snapshots/{arg}-{projectName}.png",
snapshotPathTemplate: "{testDir}/{testFileName}-snapshots/{arg}.png",
projects: [
{ name: "chromium", use: { ...devices["Desktop Chrome"] } },
{ name: "firefox", use: { ...devices["Desktop Firefox"] } },
+13 -12
View File
@@ -33,11 +33,11 @@ for (const bp of breakpoints) {
}) => {
// All breakpoints should have navigation items
await expect(
page.getByRole("link", { name: /use cases/i }),
page.getByRole("link", { name: /use cases/i })
).toBeVisible();
// Look for the "Learn" link specifically in the footer (not in other components)
await expect(
page.getByRole("contentinfo").getByRole("link", { name: /learn/i }),
page.getByRole("contentinfo").getByRole("link", { name: /learn/i })
).toBeVisible();
await expect(page.getByRole("link", { name: /about/i })).toBeVisible();
});
@@ -45,23 +45,23 @@ for (const bp of breakpoints) {
test(`footer legal links visibility at ${bp.name}`, async ({ page }) => {
// All breakpoints should have legal links
await expect(
page.getByRole("link", { name: /privacy policy/i }),
page.getByRole("link", { name: /privacy policy/i })
).toBeVisible();
await expect(
page.getByRole("link", { name: /terms of service/i }),
page.getByRole("link", { name: /terms of service/i })
).toBeVisible();
await expect(
page.getByRole("link", { name: /cookies settings/i }),
page.getByRole("link", { name: /cookies settings/i })
).toBeVisible();
});
test(`footer social links visibility at ${bp.name}`, async ({ page }) => {
// All breakpoints should have social links
await expect(
page.getByRole("link", { name: /follow us on bluesky/i }),
page.getByRole("link", { name: /follow us on bluesky/i })
).toBeVisible();
await expect(
page.getByRole("link", { name: /follow us on gitlab/i }),
page.getByRole("link", { name: /follow us on gitlab/i })
).toBeVisible();
});
@@ -117,8 +117,9 @@ test.describe("Footer visual regression", () => {
await page.waitForTimeout(500);
// Take a screenshot for visual regression testing
// Note: Playwright automatically appends the browser name (e.g., -chromium, -firefox)
await expect(page.getByRole("contentinfo")).toHaveScreenshot(
`footer-${bp.name}.png`,
`footer-${bp.name}.png`
);
}
});
@@ -146,7 +147,7 @@ test.describe("Footer visual regression", () => {
await useCasesLink.hover();
await page.waitForTimeout(200);
await expect(page.getByRole("contentinfo")).toHaveScreenshot(
`footer-${bp.name}-hover-nav.png`,
`footer-${bp.name}-hover-nav.png`
);
// Test hover on social links
@@ -156,7 +157,7 @@ test.describe("Footer visual regression", () => {
await blueskyLink.hover();
await page.waitForTimeout(200);
await expect(page.getByRole("contentinfo")).toHaveScreenshot(
`footer-${bp.name}-hover-social.png`,
`footer-${bp.name}-hover-social.png`
);
}
});
@@ -184,7 +185,7 @@ test.describe("Footer visual regression", () => {
await useCasesLink.focus();
await page.waitForTimeout(200);
await expect(page.getByRole("contentinfo")).toHaveScreenshot(
`footer-${bp.name}-focus-nav.png`,
`footer-${bp.name}-focus-nav.png`
);
// Test focus on social links
@@ -194,7 +195,7 @@ test.describe("Footer visual regression", () => {
await blueskyLink.focus();
await page.waitForTimeout(200);
await expect(page.getByRole("contentinfo")).toHaveScreenshot(
`footer-${bp.name}-focus-social.png`,
`footer-${bp.name}-focus-social.png`
);
}
});
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB