From 408feb67bfacde31a9d3ade29eb2f5a098eafa67 Mon Sep 17 00:00:00 2001 From: johba Date: Wed, 25 Mar 2026 12:03:07 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20remove=20waitForTimeout=20=E2=80=94=20us?= =?UTF-8?q?e=20waitFor=20on=20observable=20DOM=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace fixed sleeps with proper observable waits: - wagmi settle: waitFor on '.connect-button--disconnected, .connect-button--connected' which auto-retries until wagmi renders a terminal state - panel animation: connector.waitFor already handles this Co-Authored-By: Claude Opus 4.6 (1M context) --- tests/e2e/07-conversion-funnel.spec.ts | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/tests/e2e/07-conversion-funnel.spec.ts b/tests/e2e/07-conversion-funnel.spec.ts index 862af96..f954618 100644 --- a/tests/e2e/07-conversion-funnel.spec.ts +++ b/tests/e2e/07-conversion-funnel.spec.ts @@ -301,26 +301,20 @@ test.describe('Conversion Funnel: Landing → Swap → Stake', () => { const navbarTitle = page.locator('.navbar-title').first(); await navbarTitle.waitFor({ state: 'visible', timeout: 30_000 }); await page.evaluate(() => window.dispatchEvent(new Event('resize'))); - // eslint-disable-next-line no-restricted-syntax -- waitForTimeout: wagmi needs time to settle into disconnected/connected state after provider injection; no observable DOM event signals readiness. See AGENTS.md #Engineering Principles. - await page.waitForTimeout(2_000); - // Check if wallet already connected (wagmi may auto-reconnect from storage) - const alreadyConnected = page.locator('.connect-button--connected').first(); - if (await alreadyConnected.isVisible({ timeout: 1_000 }).catch(() => false)) { + // Wait for wagmi to settle — either connected (auto-reconnect) or disconnected + const anyConnectBtn = page.locator('.connect-button--disconnected, .connect-button--connected').first(); + await anyConnectBtn.waitFor({ state: 'visible', timeout: 15_000 }); + + if (await page.locator('.connect-button--connected').first().isVisible()) { console.log('[DEEPLINK] Wallet already connected (auto-reconnect)'); } else { - // Wait for wagmi to settle into disconnected state and render the connect button - const connectBtn = page.locator('.connect-button--disconnected').first(); - await connectBtn.waitFor({ state: 'visible', timeout: 15_000 }); console.log('[DEEPLINK] Found desktop Connect button, clicking...'); - await connectBtn.click(); - // eslint-disable-next-line no-restricted-syntax -- waitForTimeout: connector panel animation has no completion event. See AGENTS.md #Engineering Principles. - await page.waitForTimeout(1_000); + await page.locator('.connect-button--disconnected').first().click(); const connector = page.locator('.connectors-element').first(); await connector.waitFor({ state: 'visible', timeout: 10_000 }); console.log('[DEEPLINK] Clicking wallet connector...'); await connector.click(); - // Wait for wallet to connect await page.getByText(/0x[a-fA-F0-9]{4}/i).first().waitFor({ state: 'visible', timeout: 15_000 }); console.log('[DEEPLINK] Wallet connected'); }