From 205d8f37e4068f5c9fce95ea29e97f54cd17c388 Mon Sep 17 00:00:00 2001 From: Richard R Date: Thu, 14 May 2026 12:06:12 -0600 Subject: [PATCH] fix(tests): enhance onboarding modal dismissal logic in helpers --- tests/helpers.ts | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/tests/helpers.ts b/tests/helpers.ts index a29032a..5a7a0f5 100644 --- a/tests/helpers.ts +++ b/tests/helpers.ts @@ -98,6 +98,29 @@ async function dismissOnboardingModals(page: Page): Promise { let settledWithoutDialog = 0; for (let step = 0; step < maxSteps; step += 1) { + if (await settingsDialog.isVisible().catch(() => false)) { + const backToSettingsBtn = settingsDialog.getByRole('button', { name: /back to settings/i }); + if (await backToSettingsBtn.isVisible().catch(() => false)) { + await expect(backToSettingsBtn).toBeEnabled({ timeout: 10000 }); + await backToSettingsBtn.click(); + await page.waitForTimeout(100); + settledWithoutDialog = 0; + continue; + } + + const saveBtn = page.getByTestId('settings-save-button'); + if (await saveBtn.isVisible().catch(() => false)) { + await expect(saveBtn).toBeEnabled({ timeout: 15000 }); + await saveBtn.click(); + } else { + await page.keyboard.press('Escape'); + } + await settingsDialog.waitFor({ state: 'hidden', timeout: 15000 }); + await page.waitForTimeout(100); + settledWithoutDialog = 0; + continue; + } + if (await privacyDialog.isVisible().catch(() => false)) { const privacyAgree = page.getByTestId('privacy-agree-checkbox'); if (await privacyAgree.isVisible().catch(() => false)) { @@ -124,16 +147,6 @@ async function dismissOnboardingModals(page: Page): Promise { continue; } - if (await settingsDialog.isVisible().catch(() => false)) { - const saveBtn = page.getByTestId('settings-save-button'); - await expect(saveBtn).toBeEnabled({ timeout: 15000 }); - await saveBtn.click(); - await settingsDialog.waitFor({ state: 'hidden', timeout: 15000 }); - await page.waitForTimeout(100); - settledWithoutDialog = 0; - continue; - } - settledWithoutDialog += 1; if (settledWithoutDialog >= settleChecks) { return;