Skip to content

Commit 8e2a4d6

Browse files
committed
test(site): stabilize visual baseline readiness
1 parent b096e65 commit 8e2a4d6

1 file changed

Lines changed: 10 additions & 8 deletions

File tree

tests/acceptance/design-baseline.spec.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ async function waitForScrolledNavbarEffect(page: Page) {
4646
.toBeGreaterThan(0.95);
4747
}
4848

49+
async function waitForVisualReady(page: Page) {
50+
await page.evaluate(() => document.fonts.ready);
51+
await page.locator('canvas').first().waitFor({ state: 'attached', timeout: 3_000 }).catch(() => undefined);
52+
await page.waitForTimeout(500);
53+
}
54+
4955
const states = [
5056
{
5157
name: 'hero',
@@ -82,8 +88,7 @@ test.describe('design baseline', () => {
8288
await page.evaluate(() => window.scrollTo(0, 0));
8389
await expect.poll(() => page.evaluate(() => window.scrollY)).toBe(0);
8490
await expect(page.locator('.navbar')).toBeVisible();
85-
await page.evaluate(() => document.fonts.ready);
86-
await page.waitForTimeout(300);
91+
await waitForVisualReady(page);
8792

8893
await expect(page.locator('.navbar')).toHaveScreenshot(`${testInfo.project.name}-navbar.png`, {
8994
animations: 'disabled',
@@ -96,8 +101,7 @@ test.describe('design baseline', () => {
96101
await page.goto('/');
97102
await page.evaluate(() => window.scrollTo(0, 360));
98103
await waitForScrolledNavbarEffect(page);
99-
await page.evaluate(() => document.fonts.ready);
100-
await page.waitForTimeout(300);
104+
await waitForVisualReady(page);
101105

102106
await expect(page.locator('.navbar')).toHaveScreenshot(`${testInfo.project.name}-navbar-scrolled.png`, {
103107
animations: 'disabled',
@@ -109,8 +113,7 @@ test.describe('design baseline', () => {
109113
test('glass surfaces match approved baselines', async ({ page }, testInfo) => {
110114
await page.goto('/');
111115
await lockViewportOn(page, '#team');
112-
await page.evaluate(() => document.fonts.ready);
113-
await page.waitForTimeout(300);
116+
await waitForVisualReady(page);
114117

115118
await expect(page.locator('.team__card').first()).toHaveScreenshot(`${testInfo.project.name}-team-glass.png`, {
116119
animations: 'disabled',
@@ -163,8 +166,7 @@ test.describe('design baseline', () => {
163166
for (const state of states) {
164167
test(`${state.name} viewport matches approved baseline`, async ({ page }, testInfo) => {
165168
await state.target(page);
166-
await page.evaluate(() => document.fonts.ready);
167-
await page.waitForTimeout(300);
169+
await waitForVisualReady(page);
168170

169171
await expect(page).toHaveScreenshot(`${testInfo.project.name}-${state.name}.png`, {
170172
animations: 'disabled',

0 commit comments

Comments
 (0)