From 6786b29f7622bdeb4bab185a28d942610240fc39 Mon Sep 17 00:00:00 2001 From: Jesper Dramsch Date: Mon, 29 Jun 2026 18:03:37 +0200 Subject: [PATCH] fix(e2e): skip desktop multiselect-dropdown tests on mobile viewport MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The mobile-chrome nightly was still failing 3 "Topic/Category Filtering" tests with "Element is outside of the viewport". bootstrap-multiselect renders its dropdown options off the small Pixel 5 viewport, so the option clicks can't be reached — even click({ force: true }) fails, because force skips actionability checks but still won't dispatch at an out-of-viewport point. Skip that desktop-dropdown interaction on mobile via test.skip(({ isMobile }) => ...); mobile filtering is already covered by the My Conferences "should work on mobile viewport" test (checkbox filters, not the multiselect widget). Also revert the ineffective force:true on the option clicks — desktop chromium drives them fine without it. --- tests/e2e/specs/conference-filters.spec.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tests/e2e/specs/conference-filters.spec.js b/tests/e2e/specs/conference-filters.spec.js index 0d2849821d..30838f2cc0 100644 --- a/tests/e2e/specs/conference-filters.spec.js +++ b/tests/e2e/specs/conference-filters.spec.js @@ -52,6 +52,16 @@ test.describe('Homepage Subject Filter', () => { }); test.describe('Topic/Category Filtering', () => { + // bootstrap-multiselect renders its dropdown options off the small mobile + // viewport — clicking them fails with "Element is outside of the viewport" + // even with force. This desktop-dropdown interaction can't be driven + // reliably on mobile; mobile filtering is covered by the My Conferences + // "should work on mobile viewport" test below. + test.skip( + ({ isMobile }) => Boolean(isMobile), + 'bootstrap-multiselect dropdown interaction is desktop-only', + ); + test('should filter conferences by Python category', async ({ page }) => { // Open the multiselect dropdown const multiselectButton = page.locator('.multiselect, button.multiselect').first(); @@ -69,9 +79,7 @@ test.describe('Homepage Subject Filter', () => { // Skip if PY filter option not found test.skip(pyOptionCount === 0, 'PY filter option not found in dropdown'); - // force: bootstrap-multiselect options resolve but aren't always "actionable" - // on small (mobile) viewports, where they would otherwise time out. - await pyOption.click({ force: true }); + await pyOption.click(); await page.waitForFunction(() => document.readyState === 'complete'); // Check that conferences are filtered - PY-conf class conferences should be visible @@ -97,7 +105,7 @@ test.describe('Homepage Subject Filter', () => { // Skip if DATA filter option not found test.skip(dataOptionCount === 0, 'DATA filter option not found in dropdown'); - await dataOption.click({ force: true }); + await dataOption.click(); await page.waitForFunction(() => document.readyState === 'complete'); // Check that DATA conferences are shown @@ -125,10 +133,10 @@ test.describe('Homepage Subject Filter', () => { test.skip(pyCount === 0 && webCount === 0, 'No PY or WEB filter options found in dropdown'); if (pyCount > 0) { - await pyOption.click({ force: true }); + await pyOption.click(); } if (webCount > 0) { - await webOption.click({ force: true }); + await webOption.click(); } await page.waitForFunction(() => document.readyState === 'complete');