Skip to content

Commit 3179322

Browse files
chanceaclarkclaude
andcommitted
fix(core): add retry pattern to breadcrumb E2E test for cache tolerance
The nested web page breadcrumb test fails consistently because the backend PageTree cache (60s TTL) is not invalidated on page creation. Wrap breadcrumb assertions in a retry-with-reload loop (matching the established pattern in product.spec.ts) to tolerate cache propagation delay. Refs TRAC-281 Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 64e9fcd commit 3179322

1 file changed

Lines changed: 21 additions & 5 deletions

File tree

core/tests/ui/e2e/webpages.spec.ts

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ test('Nested web pages display the children in the side menu, navigate correctly
4343
page,
4444
webPage,
4545
}) => {
46+
// Breadcrumb assertions depend on multiple backend caches (PageTree 60s + Storefront GQL 60s)
47+
// being invalidated after page creation. Retry with page reloads to tolerate propagation delay.
48+
test.setTimeout(180000);
49+
4650
const t = await getTranslations('WebPages.Normal');
4751
const parent = await webPage.create();
4852
const child1 = await webPage.create({ parentId: parent.id });
@@ -67,11 +71,23 @@ test('Nested web pages display the children in the side menu, navigate correctly
6771

6872
const breadcrumbs = page.getByLabel('breadcrumb');
6973

70-
await expect(breadcrumbs.getByText(t('home'))).toBeVisible();
71-
await expect(breadcrumbs.getByText(parent.name)).toBeVisible();
72-
await expect(breadcrumbs.getByText('...')).toBeVisible();
73-
await expect(breadcrumbs.getByText(nestedChild.name)).toBeVisible();
74-
await expect(breadcrumbs.getByText(nestedChild2.name)).toBeVisible();
74+
await expect(async () => {
75+
try {
76+
await expect(breadcrumbs.getByText(t('home'))).toBeVisible();
77+
await expect(breadcrumbs.getByText(parent.name)).toBeVisible();
78+
await expect(breadcrumbs.getByText('...')).toBeVisible();
79+
await expect(breadcrumbs.getByText(nestedChild.name)).toBeVisible();
80+
await expect(breadcrumbs.getByText(nestedChild2.name)).toBeVisible();
81+
} catch {
82+
await page.reload();
83+
await page.waitForLoadState('networkidle');
84+
await expect(breadcrumbs.getByText(t('home'))).toBeVisible();
85+
await expect(breadcrumbs.getByText(parent.name)).toBeVisible();
86+
await expect(breadcrumbs.getByText('...')).toBeVisible();
87+
await expect(breadcrumbs.getByText(nestedChild.name)).toBeVisible();
88+
await expect(breadcrumbs.getByText(nestedChild2.name)).toBeVisible();
89+
}
90+
}).toPass({ timeout: 150000, intervals: [5000] });
7591
});
7692

7793
test('Contact page works with all fields and submits successfully', async ({ page, webPage }) => {

0 commit comments

Comments
 (0)