From f9f4efe009fbfecd6a9af04109856785c200e2a9 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Sun, 8 Nov 2026 08:08:09 +0000 Subject: [PATCH] test(web-app-nextcloud): click the Discourse connect controls through the modal retry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The integration_discourse spec dismissed Nextcloud's modals once, right after the connected-accounts page loaded. The firstrunwizard mounts later and intercepted the click on the instance address field, so Nextcloud#7 of fork run 42411117881 timed out at integration_discourse.spec.js:106 on all three attempts ("#firstrunwizard ... subtree intercepts pointer events"). Both clicks now go through shared.clickWithModalRetry, as the mastodon and openproject specs already do. 🎯 fix 85 % · 💥 break 2 % · 💸 cost – · ⏱️ time – · 🛡️ security ~100 % · 🏆 score 83 Co-Authored-By: Claude Opus 5.5 --- .../files/playwright/addons/integration_discourse.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/web-app-nextcloud/files/playwright/addons/integration_discourse.spec.js b/roles/web-app-nextcloud/files/playwright/addons/integration_discourse.spec.js index b2cd90ab14..de35e6ddb0 100644 --- a/roles/web-app-nextcloud/files/playwright/addons/integration_discourse.spec.js +++ b/roles/web-app-nextcloud/files/playwright/addons/integration_discourse.spec.js @@ -103,7 +103,7 @@ test("integration integration_discourse: Nextcloud drives the User-API-Key conne // Discourse" control (#discourse-oauth) renders. onInput saves the url via // /apps/integration_discourse/config; the connect click then redirects to // /user-api-key/new with the provisioned client_id + public_key. - await urlField.click(); + await shared.clickWithModalRetry(page, page, urlField); await urlField.fill(partnerBaseUrl); await urlField.blur(); @@ -119,7 +119,7 @@ test("integration integration_discourse: Nextcloud drives the User-API-Key conne const popupPromise = page.waitForEvent("popup", { timeout: resolveTimeout(15_000) }).catch(() => null); await Promise.all([ page.waitForEvent("framenavigated", { timeout: resolveTimeout(60_000) }).catch(() => {}), - connect.click({ timeout: resolveTimeout(30_000) }), + shared.clickWithModalRetry(page, page, connect), ]); const popup = await popupPromise;