From 491106bb97c606fc4c7dad096da6c68087b09b19 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 02:59:56 +0000 Subject: [PATCH 1/5] Initial plan From 906db87fe23f3e76e43d964299b7f46eb206445a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 03:06:00 +0000 Subject: [PATCH 2/5] Fix DOM detachment issues in CI tests Co-authored-by: hasparus <15332326+hasparus@users.noreply.github.com> --- playwright.config.ts | 2 +- test/e2e/community-events.spec.ts | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/playwright.config.ts b/playwright.config.ts index 7424479740..877b567d68 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -17,7 +17,7 @@ export default defineConfig({ screenshot: "only-on-failure", }, - timeout: 60 * 1000, + timeout: 90 * 1000, projects: [ { diff --git a/test/e2e/community-events.spec.ts b/test/e2e/community-events.spec.ts index e3c536d415..9351ef0397 100644 --- a/test/e2e/community-events.spec.ts +++ b/test/e2e/community-events.spec.ts @@ -152,7 +152,9 @@ test("event type filters hide cards and lock the last active tag", async ({ }) .first() - await pastEventsSection.scrollIntoViewIfNeeded() + await pastEventsSection.waitFor({ state: "visible" }) + await pastEventsSection.scrollIntoViewIfNeeded({ timeout: 10000 }) + await page.waitForTimeout(300) // Brief stabilization to prevent DOM detachment const filterGroup = pastEventsSection.locator("fieldset") @@ -233,10 +235,10 @@ test("upcoming and past sections only show events on the correct side of now", a }) .first() - await Promise.all([ - upcomingSection.scrollIntoViewIfNeeded(), - pastEventsSection.scrollIntoViewIfNeeded(), - ]) + // Scroll sections sequentially to avoid DOM detachment issues on CI + await upcomingSection.scrollIntoViewIfNeeded({ timeout: 10000 }) + await page.waitForTimeout(200) + await pastEventsSection.scrollIntoViewIfNeeded({ timeout: 10000 }) const now = Date.now() From c1ce9bad4dc876b8f70491e4166e30cba400a1d0 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Wed, 19 Nov 2025 04:21:55 +0100 Subject: [PATCH 3/5] Comment out action-sshd-cloudflared --- .github/workflows/check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index d973a97a12..732138d4d3 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -78,5 +78,5 @@ jobs: path: playwright-report/ retention-days: 30 - - uses: valeriangalliat/action-sshd-cloudflared@v1 - if: failure() + # - uses: valeriangalliat/action-sshd-cloudflared@v1 + # if: failure() From affcccc250f68a21611426839863b3a84c08aec4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 03:29:45 +0000 Subject: [PATCH 4/5] Replace scrollIntoViewIfNeeded with manual scroll and networkidle wait Co-authored-by: hasparus <15332326+hasparus@users.noreply.github.com> --- test/e2e/community-events.spec.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/test/e2e/community-events.spec.ts b/test/e2e/community-events.spec.ts index 9351ef0397..36f6f15437 100644 --- a/test/e2e/community-events.spec.ts +++ b/test/e2e/community-events.spec.ts @@ -141,7 +141,9 @@ test("map tooltip appears on marker hover", async ({ page }) => { test("event type filters hide cards and lock the last active tag", async ({ page, }) => { - await page.goto("/community/events") + await page.goto("/community/events", { waitUntil: "networkidle" }) + await page.waitForLoadState("domcontentloaded") + const pastEventsSection = page .locator("section") .filter({ @@ -152,9 +154,9 @@ test("event type filters hide cards and lock the last active tag", async ({ }) .first() - await pastEventsSection.waitFor({ state: "visible" }) - await pastEventsSection.scrollIntoViewIfNeeded({ timeout: 10000 }) - await page.waitForTimeout(300) // Brief stabilization to prevent DOM detachment + await pastEventsSection.waitFor({ state: "visible", timeout: 15000 }) + await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight)) + await page.waitForTimeout(500) const filterGroup = pastEventsSection.locator("fieldset") @@ -218,7 +220,9 @@ test("event type filters hide cards and lock the last active tag", async ({ test("upcoming and past sections only show events on the correct side of now", async ({ page, }) => { - await page.goto("/community/events") + await page.goto("/community/events", { waitUntil: "networkidle" }) + await page.waitForLoadState("domcontentloaded") + const upcomingSection = page .locator("section") .filter({ @@ -235,10 +239,13 @@ test("upcoming and past sections only show events on the correct side of now", a }) .first() - // Scroll sections sequentially to avoid DOM detachment issues on CI - await upcomingSection.scrollIntoViewIfNeeded({ timeout: 10000 }) - await page.waitForTimeout(200) - await pastEventsSection.scrollIntoViewIfNeeded({ timeout: 10000 }) + // Wait for both sections to be present before scrolling + await upcomingSection.waitFor({ state: "attached", timeout: 15000 }) + await pastEventsSection.waitFor({ state: "attached", timeout: 15000 }) + + // Scroll to bottom to ensure everything is loaded + await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight)) + await page.waitForTimeout(500) const now = Date.now() From f989e456040dca72239a1173d465af5bcff096ba Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 03:58:15 +0000 Subject: [PATCH 5/5] Replace networkidle with load wait and remove manual scrolling Co-authored-by: hasparus <15332326+hasparus@users.noreply.github.com> --- test/e2e/community-events.spec.ts | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/test/e2e/community-events.spec.ts b/test/e2e/community-events.spec.ts index 36f6f15437..178cdcadae 100644 --- a/test/e2e/community-events.spec.ts +++ b/test/e2e/community-events.spec.ts @@ -141,8 +141,7 @@ test("map tooltip appears on marker hover", async ({ page }) => { test("event type filters hide cards and lock the last active tag", async ({ page, }) => { - await page.goto("/community/events", { waitUntil: "networkidle" }) - await page.waitForLoadState("domcontentloaded") + await page.goto("/community/events", { waitUntil: "load" }) const pastEventsSection = page .locator("section") @@ -154,9 +153,8 @@ test("event type filters hide cards and lock the last active tag", async ({ }) .first() - await pastEventsSection.waitFor({ state: "visible", timeout: 15000 }) - await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight)) - await page.waitForTimeout(500) + await pastEventsSection.waitFor({ state: "visible", timeout: 20000 }) + await page.waitForTimeout(1000) const filterGroup = pastEventsSection.locator("fieldset") @@ -220,8 +218,7 @@ test("event type filters hide cards and lock the last active tag", async ({ test("upcoming and past sections only show events on the correct side of now", async ({ page, }) => { - await page.goto("/community/events", { waitUntil: "networkidle" }) - await page.waitForLoadState("domcontentloaded") + await page.goto("/community/events", { waitUntil: "load" }) const upcomingSection = page .locator("section") @@ -239,13 +236,10 @@ test("upcoming and past sections only show events on the correct side of now", a }) .first() - // Wait for both sections to be present before scrolling - await upcomingSection.waitFor({ state: "attached", timeout: 15000 }) - await pastEventsSection.waitFor({ state: "attached", timeout: 15000 }) - - // Scroll to bottom to ensure everything is loaded - await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight)) - await page.waitForTimeout(500) + // Wait for both sections to be visible + await upcomingSection.waitFor({ state: "visible", timeout: 20000 }) + await pastEventsSection.waitFor({ state: "visible", timeout: 20000 }) + await page.waitForTimeout(1000) const now = Date.now()