Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test(e2e): add tests for the progress reset flow #54614

Merged
merged 6 commits into from
May 13, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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();
huyenltnguyen marked this conversation as resolved.
Show resolved Hide resolved
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();
huyenltnguyen marked this conversation as resolved.
Show resolved Hide resolved
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