diff --git a/tests/ui/purchase/paddle-sandbox-full.test.ts b/tests/ui/purchase/paddle-sandbox-full.test.ts index 02efd24..19bb928 100644 --- a/tests/ui/purchase/paddle-sandbox-full.test.ts +++ b/tests/ui/purchase/paddle-sandbox-full.test.ts @@ -17,6 +17,7 @@ const sandboxCard = { }; test.use({ + channel: process.env.E2E_BROWSER_CHANNEL ?? 'chrome', userAgent: process.env.E2E_USER_AGENT ?? 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36', @@ -41,11 +42,7 @@ test.describe('Paddle sandbox full flow (staging)', () => { await dismissConsentBanner(page); - // If login/register step is present, choose guest path or continue - const continueButtons = page.getByRole('button', { name: /weiter|continue/i }); - if (await continueButtons.first().isVisible()) { - await continueButtons.first().click(); - } + await proceedToAccountStep(page); await completeRegistrationOrLogin(page, { email: tenantEmail!, @@ -165,6 +162,30 @@ async function completeRegistrationOrLogin(page: Page, credentials: { email: str await expect(page.getByPlaceholder(/Gutscheincode|Coupon/i)).toBeVisible({ timeout: 20_000 }); } +async function proceedToAccountStep(page: Page, timeoutMs = 30_000): Promise { + const deadline = Date.now() + timeoutMs; + + while (Date.now() < deadline) { + const accountForm = page.locator('input[name="first_name"], input[name="identifier"]'); + if (await accountForm.isVisible()) { + return; + } + + await dismissConsentBanner(page); + + const continueButton = page.getByRole('button', { name: /Weiter|Continue/i }).first(); + if (await continueButton.isVisible()) { + if (await continueButton.isEnabled()) { + await continueButton.click(); + } + } + + await page.waitForTimeout(500); + } + + throw new Error('Account step did not load in time.'); +} + async function completeHostedPaddleCheckout( page: Page, card: { number: string; expiry: string; cvc: string; name: string; postal: string }