34 lines
1.6 KiB
TypeScript
34 lines
1.6 KiB
TypeScript
// spec: specs/basic-operations.plan.md
|
|
// seed: tests/seed.spec.ts
|
|
|
|
import { test, expect } from '../fixtures';
|
|
|
|
test.describe('Deleting Todos', () => {
|
|
test('should-clear-all-completed-todos', async ({ page }) => {
|
|
// 1. Add three todos: 'Task 1', 'Task 2', 'Task 3'
|
|
await page.getByRole('textbox', { name: 'What needs to be done?' }).fill('Task 1');
|
|
await page.getByRole('textbox', { name: 'What needs to be done?' }).press('Enter');
|
|
await page.getByRole('textbox', { name: 'What needs to be done?' }).fill('Task 2');
|
|
await page.getByRole('textbox', { name: 'What needs to be done?' }).press('Enter');
|
|
await page.getByRole('textbox', { name: 'What needs to be done?' }).fill('Task 3');
|
|
await page.getByRole('textbox', { name: 'What needs to be done?' }).press('Enter');
|
|
await expect(page.locator('body')).toMatchAriaSnapshot(`
|
|
- list:
|
|
- listitem: "Task 1"
|
|
- listitem: "Task 2"
|
|
- listitem: "Task 3"
|
|
`);
|
|
|
|
// 2. Mark 'Task 1' and 'Task 3' as complete
|
|
await page.getByRole('listitem').filter({ hasText: 'Task 1' }).getByLabel('Toggle Todo').click();
|
|
await page.getByRole('listitem').filter({ hasText: 'Task 3' }).getByLabel('Toggle Todo').click();
|
|
await expect(page.getByText('1 item left')).toBeVisible();
|
|
await expect(page.getByRole('button', { name: 'Clear completed' })).toBeVisible();
|
|
|
|
// 3. Click the 'Clear completed' button
|
|
await page.getByRole('button', { name: 'Clear completed' }).click();
|
|
await expect(page.getByText('Task 2')).toBeVisible();
|
|
await expect(page.getByText('1 item left')).toBeVisible();
|
|
});
|
|
});
|