Skip to content

Commit

Permalink
test(e2e): add tests for the progress reset flow (#54614)
Browse files Browse the repository at this point in the history
  • Loading branch information
huyenltnguyen committed May 13, 2024
1 parent f3dafb3 commit 6c3e1ce
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 51 deletions.
14 changes: 0 additions & 14 deletions cypress/e2e/default/settings/settings.ts

This file was deleted.

File renamed without changes.
122 changes: 122 additions & 0 deletions e2e/progress-reset-modal.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
import { exec } from 'child_process';
import { promisify } from 'util';
import { test, expect } from '@playwright/test';

const execP = promisify(exec);

test.use({ storageState: 'playwright/.auth/certified-user.json' });

test.beforeEach(async ({ page }) => {
await page.goto('/settings');
});

test.afterEach(async () => {
await execP('node ./tools/scripts/seed/seed-demo-user certified-user');
});

test.describe('Progress reset modal', () => {
test('should display the content properly', async ({ page }) => {
await page
.getByRole('button', { name: 'Reset all of my progress' })
.click();

await expect(
page.getByRole('dialog', { name: 'Reset My Progress' })
).toBeVisible();

await expect(
page.getByText(
'This will permanently delete and reset all of the following:'
)
).toBeVisible();

await expect(
page.getByText(
'Your progress through each step/challenge (all completed challenges will be lost)'
)
).toBeVisible();

await expect(
page.getByText(
'Any saved code, including partially completed challenges, and certification project code'
)
).toBeVisible();

await expect(
page.getByText('All completed and claimed certifications')
).toBeVisible();

await expect(
page.getByText(
'You will effectively be set back to the very first day you signed up.'
)
).toBeVisible();

await expect(
page.getByText(
"We won't be able to recover any of it for you later, even if you change your mind."
)
).toBeVisible();

await expect(
page.getByRole('button', {
name: "Nevermind, I don't want to delete all of my progress"
})
).toBeVisible();

await expect(
page.getByRole('button', {
name: 'Reset everything. I want to start from the beginning'
})
).toBeVisible();
});

test('should close the dialog if the user clicks the cancel button', async ({
page
}) => {
await page
.getByRole('button', { name: 'Reset all of my progress' })
.click();

await expect(
page.getByRole('dialog', { name: 'Reset My Progress' })
).toBeVisible();

await page
.getByRole('button', {
name: "Nevermind, I don't want to delete all of my progress"
})
.click();

await expect(
page.getByRole('dialog', { name: 'Reset My Progress' })
).toBeHidden();
});

test('should reset the progress if the user clicks the reset button', async ({
page
}) => {
await page
.getByRole('button', { name: 'Reset all of my progress' })
.click();

await expect(
page.getByRole('dialog', { name: 'Reset My Progress' })
).toBeVisible();

await page
.getByRole('button', {
name: 'Reset everything. I want to start from the beginning'
})
.click();

await page.waitForURL('/');
await expect(page.getByText('Your progress has been reset')).toBeVisible();

// Go to /settings and confirm that all certifications are reset
await page.goto('/settings');
await expect(
page.getByRole('link', { name: 'Show Certification' })
).toBeHidden();
});
});
44 changes: 7 additions & 37 deletions e2e/settings.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -418,51 +418,21 @@ test.describe('Settings', () => {
}
});

test('Should validate Danger Section Settings', async ({ page }) => {
test('Should display the Danger section properly', async ({ page }) => {
await expect(page.getByText('Danger Zone')).toBeVisible();
await expect(
page.getByText(translations.settings.danger.heading, {
exact: true
})
).toBeVisible();
await expect(
page.getByText(translations.settings.danger['be-careful'], {
exact: true
})
page.getByText(
'Please be careful. Changes in this section are permanent.'
)
).toBeVisible();
await page
.getByRole('button', {
name: translations.settings.danger.reset,
exact: true
})
.click();
await page
.getByRole('button', {
name: translations.settings.danger['nevermind-2'],
exact: true
})
.click();
await expect(
page.getByRole('button', {
name: translations.settings.danger['reset-confirm'],
exact: true
name: 'Reset all of my progress'
})
).toBeVisible();
await page
.getByRole('button', {
name: translations.settings.danger.delete,
exact: true
})
.click();
await page
.getByRole('button', {
name: translations.settings.danger.nevermind,
exact: true
})
.click();
await expect(
page.getByRole('button', {
name: translations.settings.danger.certain,
exact: true
name: 'Delete my account'
})
).toBeVisible();
});
Expand Down

0 comments on commit 6c3e1ce

Please sign in to comment.