Skip to content

Commit fe7a43d

Browse files
test: fix flaky settings test (freeCodeCamp#55722)
1 parent 3164f75 commit fe7a43d

File tree

1 file changed

+23
-29
lines changed

1 file changed

+23
-29
lines changed

e2e/settings.spec.ts

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,15 @@ test.describe('Settings - Certified User', () => {
5252
test.use({ storageState: 'playwright/.auth/certified-user.json' });
5353

5454
test.beforeEach(async ({ page }) => {
55+
execSync('node ./tools/scripts/seed/seed-demo-user --certified-user');
5556
await page.goto('/settings');
5657
});
5758

58-
test('Should have the correct page title', async ({ page }) => {
59+
test('Should render correctly', async ({ page }) => {
60+
// Title
5961
await expect(page).toHaveTitle(settingsObject.pageTitle);
60-
});
6162

62-
test('Should display the correct header', async ({ page }) => {
63+
// Header
6364
const header = page.getByTestId(settingsTestIds.settingsHeading);
6465
await expect(header).toBeVisible();
6566
await expect(header).toContainText(
@@ -68,9 +69,8 @@ test.describe('Settings - Certified User', () => {
6869
settingsObject.certifiedUsername
6970
)}`
7071
);
71-
});
7272

73-
test('Should validate Privacy Settings', async ({ page }) => {
73+
// Privacy Settings
7474
await expect(
7575
page.getByRole('heading', {
7676
name: translations.settings.headings.privacy
@@ -167,15 +167,13 @@ test.describe('Settings - Certified User', () => {
167167
name: translations.settings.headings.privacy
168168
});
169169
await expect(saveButton).toBeVisible();
170-
await saveButton.press('Enter');
171170
await expect(page.getByText(translations.settings.data)).toBeVisible();
172171
const downloadButton = page.getByRole('link', {
173172
name: translations.buttons['download-data']
174173
});
175174
await expect(downloadButton).toBeVisible();
176-
});
177175

178-
test('Should validate Internet Presence Settings', async ({ page }) => {
176+
// Internet Presence
179177
await expect(
180178
page.getByRole('heading', {
181179
name: translations.settings.headings.internet
@@ -184,13 +182,13 @@ test.describe('Settings - Certified User', () => {
184182
await expect(
185183
page.getByTestId(settingsTestIds.internetPresence)
186184
).toBeVisible();
187-
const saveButton = page.getByRole('button', {
188-
name: translations.settings.headings.internet
189-
});
190-
await expect(saveButton).toBeVisible();
191-
});
185+
await expect(
186+
page.getByRole('button', {
187+
name: translations.settings.headings.internet
188+
})
189+
).toBeVisible();
192190

193-
test('Should validate Personal Information Settings', async ({ page }) => {
191+
// Personal Information
194192
await expect(
195193
page.getByRole('heading', {
196194
name: translations.settings.headings['personal-info']
@@ -199,11 +197,11 @@ test.describe('Settings - Certified User', () => {
199197
await expect(
200198
page.getByTestId(settingsTestIds.camperIdentity)
201199
).toBeVisible();
202-
const saveButton = page.getByRole('button', {
200+
const savePersonalInfoButton = page.getByRole('button', {
203201
name: translations.settings.headings['personal-info']
204202
});
205-
await expect(saveButton).toBeVisible();
206-
await expect(saveButton).toBeDisabled();
203+
await expect(savePersonalInfoButton).toBeVisible();
204+
await expect(savePersonalInfoButton).toBeDisabled();
207205
await expect(
208206
page.getByLabel(translations.settings.labels.name, { exact: true })
209207
).toHaveValue('Full Stack User');
@@ -239,9 +237,8 @@ test.describe('Settings - Certified User', () => {
239237
await expect(
240238
page.getByText(translations.settings['scrollbar-width'])
241239
).toBeVisible();
242-
});
243240

244-
test('Should validate Certification Settings', async ({ page }) => {
241+
// Certifications
245242
await expect(
246243
page.getByRole('heading', {
247244
name: translations.settings.headings.certs,
@@ -261,9 +258,8 @@ test.describe('Settings - Certified User', () => {
261258
})
262259
).toBeVisible();
263260
}
264-
});
265261

266-
test('Should validate Legacy Certification Settings', async ({ page }) => {
262+
// Legacy Certifications
267263
await expect(
268264
page.getByRole('heading', {
269265
name: translations.settings.headings['legacy-certs'],
@@ -284,9 +280,8 @@ test.describe('Settings - Certified User', () => {
284280
})
285281
).toBeVisible();
286282
}
287-
});
288283

289-
test('Should display the Danger section properly', async ({ page }) => {
284+
// Danger Zone
290285
await expect(page.getByText('Danger Zone')).toBeVisible();
291286
await expect(
292287
page.getByText(
@@ -320,6 +315,7 @@ test.describe('Settings - Certified User', () => {
320315
);
321316
const pictureInput = page.getByLabel(translations.settings.labels.picture);
322317
const aboutInput = page.getByLabel(translations.settings.labels.about);
318+
const updatedAlert = page.getByText(translations.flash['updated-about-me']);
323319

324320
await nameInput.fill('Quincy Larson');
325321
await locationInput.fill('USA');
@@ -330,9 +326,9 @@ test.describe('Settings - Certified User', () => {
330326

331327
await expect(saveButton).not.toBeDisabled();
332328
await saveButton.click();
333-
await expect(
334-
page.getByText(translations.flash['updated-about-me'])
335-
).toBeVisible();
329+
await expect(updatedAlert).toBeVisible();
330+
// clear the alert to make sure it's gone before we save again.
331+
await updatedAlert.getByRole('button').click();
336332

337333
await nameInput.fill('');
338334
await locationInput.fill('');
@@ -341,9 +337,7 @@ test.describe('Settings - Certified User', () => {
341337

342338
await expect(saveButton).not.toBeDisabled();
343339
await saveButton.click();
344-
await expect(
345-
page.getByText(translations.flash['updated-about-me'])
346-
).toBeVisible();
340+
await expect(updatedAlert).toBeVisible();
347341

348342
await page.reload();
349343

0 commit comments

Comments
 (0)