Skip to content

Commit 0e08b50

Browse files
committed
make e2e tests failsafe with async code paths
1 parent f37e905 commit 0e08b50

1 file changed

Lines changed: 21 additions & 13 deletions

File tree

tests/e2e/smoke-test.spec.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import { test, expect } from '@playwright/test'
1+
import { test, expect, type Locator } from '@playwright/test'
2+
3+
async function clickWhenReady(locator: Locator) {
4+
await expect(locator).toBeVisible()
5+
await expect(locator).toBeEnabled()
6+
await locator.click()
7+
}
28

39
test('smoke test', async ({ page }) => {
410
await page.goto('/')
@@ -13,18 +19,20 @@ test('smoke test', async ({ page }) => {
1319
await page.getByRole('button', { name: 'Start Game' }).click()
1420

1521
// play 1 round
16-
await page.getByRole('button', { name: 'Next' }).click()
17-
await page.getByRole('button', { name: 'Next' }).click()
18-
await page.getByRole('button', { name: 'Next' }).click()
19-
await page.getByRole('button', { name: 'Next' }).click()
20-
await page.getByRole('button', { name: 'Next' }).click()
21-
await page.getByRole('button', { name: 'Next' }).click()
22-
await page.getByRole('button', { name: 'Next' }).click()
23-
await page.getByRole('button', { name: 'Next' }).click()
24-
await page.getByRole('button', { name: 'Pass' }).click()
25-
await page.getByRole('button', { name: 'Next' }).click()
26-
await page.getByRole('button', { name: 'Next' }).click()
27-
await page.getByRole('button', { name: 'Next' }).click()
22+
const nextButton = page.getByRole('button', { name: 'Next' })
23+
const passButton = page.getByRole('button', { name: 'Pass' })
24+
await clickWhenReady(nextButton)
25+
await clickWhenReady(nextButton)
26+
await clickWhenReady(nextButton)
27+
await clickWhenReady(nextButton)
28+
await clickWhenReady(nextButton)
29+
await clickWhenReady(nextButton)
30+
await clickWhenReady(nextButton)
31+
await clickWhenReady(nextButton)
32+
await clickWhenReady(passButton)
33+
await clickWhenReady(nextButton)
34+
await clickWhenReady(nextButton)
35+
await clickWhenReady(nextButton)
2836

2937
// abort game
3038
await page.getByRole('button', { name: 'Abort Game' }).click()

0 commit comments

Comments
 (0)