From f99fde76d4d074e34ada50f3c04b7a4b36d85eb5 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 18 Jul 2024 18:58:06 +0200 Subject: [PATCH 1/3] test: improve stability of e2e tests --- tests/e2e/steps/pro-project.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/e2e/steps/pro-project.ts b/tests/e2e/steps/pro-project.ts index c01d3c39a..516f20157 100644 --- a/tests/e2e/steps/pro-project.ts +++ b/tests/e2e/steps/pro-project.ts @@ -24,9 +24,17 @@ export async function createProProject(page: Page): Promise { await page.locator('id=plan').selectOption('tier-1'); await page.getByRole('button', { name: 'get started' }).click(); await page.waitForURL('/console/create-organization**'); - await new Promise((r) => setTimeout(r, 1000)); await page.getByRole('button', { name: 'add' }).first().click(); + const dialog = page.locator('.modal').filter({ + hasText: 'Add payment method' + }); + await dialog.waitFor({ + state: 'visible' + }); await enterCreditCard(page); + await dialog.waitFor({ + state: 'hidden' + }); // skip members await page.getByRole('button', { name: 'create organization' }).click(); await page.waitForURL('/console/organization-**'); From e61528469c6b892d3f83c170b881501ba7d72cea Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 18 Jul 2024 19:19:35 +0200 Subject: [PATCH 2/3] test: waiting for modal on entering cc --- tests/e2e/steps/pro-project.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/e2e/steps/pro-project.ts b/tests/e2e/steps/pro-project.ts index 516f20157..39244e487 100644 --- a/tests/e2e/steps/pro-project.ts +++ b/tests/e2e/steps/pro-project.ts @@ -7,6 +7,12 @@ type Metadata = { }; export async function enterCreditCard(page: Page) { + const dialog = page.locator('.modal').filter({ + hasText: 'Add payment method' + }); + await dialog.waitFor({ + state: 'visible' + }); await page.getByPlaceholder('cardholder').fill('Test User'); const stripe = page.frameLocator('[title="Secure payment input frame"]'); await stripe.locator('id=Field-numberInput').fill('4242424242424242'); @@ -14,6 +20,9 @@ export async function enterCreditCard(page: Page) { await stripe.locator('id=Field-cvcInput').fill('123'); await stripe.locator('id=Field-countryInput').selectOption('DE'); await page.getByRole('button', { name: 'Add', exact: true }).click(); + await dialog.waitFor({ + state: 'hidden' + }); } export async function createProProject(page: Page): Promise { @@ -25,16 +34,7 @@ export async function createProProject(page: Page): Promise { await page.getByRole('button', { name: 'get started' }).click(); await page.waitForURL('/console/create-organization**'); await page.getByRole('button', { name: 'add' }).first().click(); - const dialog = page.locator('.modal').filter({ - hasText: 'Add payment method' - }); - await dialog.waitFor({ - state: 'visible' - }); await enterCreditCard(page); - await dialog.waitFor({ - state: 'hidden' - }); // skip members await page.getByRole('button', { name: 'create organization' }).click(); await page.waitForURL('/console/organization-**'); From e7838f2579143943521396f2f40cac34206ed6c7 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 18 Jul 2024 19:32:08 +0200 Subject: [PATCH 3/3] fix: case insensitive text selector --- tests/e2e/steps/pro-project.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/steps/pro-project.ts b/tests/e2e/steps/pro-project.ts index 39244e487..1f4ee5bd8 100644 --- a/tests/e2e/steps/pro-project.ts +++ b/tests/e2e/steps/pro-project.ts @@ -8,7 +8,7 @@ type Metadata = { export async function enterCreditCard(page: Page) { const dialog = page.locator('.modal').filter({ - hasText: 'Add payment method' + hasText: 'add payment method' }); await dialog.waitFor({ state: 'visible'