test(e2e): increase overall Playwright timeouts to fix Firefox CI pipeline

Increased the global Playwright timeout from 60s to 120s and adjusted all `waitForFeedItems` calls from 30s to 60s to combat further timeout flakiness seen in the Playwright GitHub Action test suite, particularly impacting the Firefox runs on tests like `feed-pagination-stress.spec.ts` and `video-crud-flows.spec.ts`.

Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
google-labs-jules[bot]andPR0M3TH3AN committed 2026-03-02 17:22:46 +00:00
1 parent 57176a0f7f
commit 54d66a6df9
11 files changed
+28 -28

No files matched your search

+1 -1
View File
@@ -49,7 +49,7 @@ export default defineConfig({
testDir: "./tests",
globalSetup: "./tests/e2e/helpers/playwrightCoverageGlobalSetup.ts",
outputDir: "artifacts/test-results",
timeout: 60_000,
timeout: 120_000,
retries: process.env.CI ? 1 : 0,
reporter: process.env.CI
? [["github"], ["html", { open: "never" }]]
+1 -1
View File
@@ -314,7 +314,7 @@ test.describe("Accessibility and keyboard navigation", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// Then: video cards are in the DOM and clickable
+4 -4
View File
@@ -40,7 +40,7 @@ test.describe("Feed pagination and stress scenarios", () => {
// Wait for feed to populate
const items = await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(10, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(10, 60000);
});
// Then: all 10 videos are present
@@ -86,7 +86,7 @@ test.describe("Feed pagination and stress scenarios", () => {
await loginAs(page);
const items = await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(5, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(5, 60000);
});
// Then: all d-tags are present and unique
@@ -221,7 +221,7 @@ test.describe("Feed pagination and stress scenarios", () => {
// And feed loads with the video
const items = await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
expect(items.length).toBeGreaterThanOrEqual(1);
@@ -287,7 +287,7 @@ test.describe("Feed pagination and stress scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// Then: the DOM card has all expected data attributes
+1 -1
View File
@@ -241,7 +241,7 @@ test.describe("Relay resilience and management", () => {
// Wait for initial feed
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// When: clear and re-seed with different content
+3 -3
View File
@@ -75,7 +75,7 @@ test.describe("Search and filtering", () => {
// Wait for all videos to load
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(3, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(3, 60000);
});
// When: user searches for "Cooking"
@@ -118,7 +118,7 @@ test.describe("Search and filtering", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// When: user searches for something that doesn't match
@@ -154,7 +154,7 @@ test.describe("Search and filtering", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
const searchInput = page.locator('[data-testid="search-input"]');
+1 -1
View File
@@ -32,7 +32,7 @@ async function setupFeedWithVideo(
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
}
@@ -35,7 +35,7 @@ async function setupAndOpenSettings(
await loginAs(page);
await page.evaluate(() =>
(window as any).__bitvidTest__.waitForFeedItems(1, 30000),
(window as any).__bitvidTest__.waitForFeedItems(1, 60000),
);
const card = page.locator("[data-video-card]").first();
+1 -1
View File
@@ -32,7 +32,7 @@ async function openVideoModal(
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
await page.locator("#playerModal").waitFor({ state: "attached", timeout: 15000 });
+8 -8
View File
@@ -32,7 +32,7 @@ test.describe("Video playback scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// Wait for the modal element to be present in DOM before clicking
@@ -67,7 +67,7 @@ test.describe("Video playback scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// Wait for modal presence to ensure app is fully initialized
@@ -106,7 +106,7 @@ test.describe("Video playback scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
await page.locator("#playerModal").waitFor({ state: "attached", timeout: 15000 });
@@ -154,7 +154,7 @@ test.describe("Video playback scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
await page.locator("#playerModal").waitFor({ state: "attached", timeout: 15000 });
@@ -204,7 +204,7 @@ test.describe("Video playback scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
await page.locator("#playerModal").waitFor({ state: "attached", timeout: 15000 });
@@ -259,7 +259,7 @@ test.describe("Video playback scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
await page.locator("#playerModal").waitFor({ state: "attached", timeout: 15000 });
@@ -298,7 +298,7 @@ test.describe("Video playback scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// Then: video card has data-play-url attribute
@@ -326,7 +326,7 @@ test.describe("Video playback scenarios", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// Then: video card has data-play-magnet attribute
+4 -4
View File
@@ -92,7 +92,7 @@ test.describe("Video upload and discovery", () => {
// Then: feed items should contain the seeded video
const items = await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
expect(items.length).toBeGreaterThanOrEqual(1);
@@ -123,7 +123,7 @@ test.describe("Video upload and discovery", () => {
// Then: the video appears with magnet attribute
const items = await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
expect(items.length).toBeGreaterThanOrEqual(1);
@@ -165,7 +165,7 @@ test.describe("Video upload and discovery", () => {
// Then: all three videos appear
const items = await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(3, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(3, 60000);
});
expect(items.length).toBeGreaterThanOrEqual(3);
@@ -202,7 +202,7 @@ test.describe("Video upload and discovery", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// Then: the video card DOM elements have correct data attributes
+3 -3
View File
@@ -171,7 +171,7 @@ test.describe("View navigation — direct hash routing", () => {
// Then: the feed should populate with the seeded video
const items = await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
expect(items.length).toBeGreaterThanOrEqual(1);
});
@@ -256,7 +256,7 @@ test.describe("View navigation — feed with seeded content", () => {
// Then: both videos should appear in the feed
const items = await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(2, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(2, 60000);
});
expect(items.length).toBeGreaterThanOrEqual(2);
@@ -282,7 +282,7 @@ test.describe("View navigation — feed with seeded content", () => {
await loginAs(page);
await page.evaluate(() => {
return (window as any).__bitvidTest__.waitForFeedItems(1, 30000);
return (window as any).__bitvidTest__.waitForFeedItems(1, 60000);
});
// When: user navigates to kids view and back