Skip to content

Commit 28eab3f

Browse files
committed
Fix firefox being too fast and not catching waiting state with spinner in newsletter subscription e2e test
1 parent 4d9f4f1 commit 28eab3f

3 files changed

Lines changed: 9 additions & 14 deletions

File tree

_TODO.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,3 @@ if (window.matchMedia) {
9797
});
9898
}
9999
```
100-
101-
```bash
102-
103-
```

playwright.config.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import { testDatabaseFile } from './test/e2e/config/runtime/paths'
88
import dotenv from 'dotenv'
99
import { isCI } from 'src/lib/config/environmentServer'
1010

11-
if ( !isCI() ) dotenv.config({ path: '.env.development' })
11+
if (!isCI()) {
12+
dotenv.config({ path: '.env.development', quiet: true })
13+
}
1214

1315
process.env['ASTRO_DATABASE_FILE'] = process.env['ASTRO_DATABASE_FILE'] ?? testDatabaseFile
1416
process.env['PLAYWRIGHT'] = process.env['PLAYWRIGHT'] ?? 'true'

test/e2e/specs/03-forms/newsletter-subscription.spec.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,18 @@ test.describe('Newsletter Subscription Form', () => {
9090

9191
// Set up intercept for API call to slow it down
9292
const browserName = newsletterPage.context().browser()?.browserType().name()
93-
const delayMs = browserName === 'webkit' ? 300 : 100
94-
const delayOverride = await delayFetchForEndpoint(newsletterPage.page, { endpoint: newsletterSubscribeActionEndpoint, delayMs })
93+
const delayMs = browserName === 'firefox' ? 500 : browserName === 'webkit' ? 300 : 100
94+
const delayOverride = await delayFetchForEndpoint(newsletterPage.page, { endpoint: actionsEndpointPrefix, delayMs })
9595

9696
// Click submit and immediately check for spinner
9797
const submitButton = newsletterPage.locator('#newsletter-submit')
9898

99-
// Submit form and check loading state immediately
100-
const submitPromise = submitButton.click()
101-
10299
try {
103100
// The spinner should enter the loading state during the API call
104-
await newsletterPage.waitForSpinnerLoadingState()
105-
106-
// Wait for the submit to complete
107-
await submitPromise
101+
await Promise.all([
102+
newsletterPage.waitForSpinnerLoadingState(),
103+
submitButton.click(),
104+
])
108105
} finally {
109106
await delayOverride.restore()
110107
}

0 commit comments

Comments
 (0)