50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
/* eslint-disable notice/notice */
|
|
|
|
import { test, expect } from '@playwright/test';
|
|
import type { Page } from '@playwright/test';
|
|
|
|
test.describe.configure({ mode: 'parallel' });
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('https://demo.playwright.dev/todomvc');
|
|
});
|
|
|
|
const TODO_ITEMS = [
|
|
'buy some cheese',
|
|
'feed the cat',
|
|
'book a doctors appointment'
|
|
];
|
|
|
|
test.describe('New Todo', () => {
|
|
test('should allow me to add todo items', async ({ page }) => {
|
|
// create a new todo locator
|
|
const newTodo = page.getByPlaceholder('What needs to be done?');
|
|
// Create 1st todo.
|
|
await newTodo.fill(TODO_ITEMS[0]);
|
|
await newTodo.press('Enter');
|
|
|
|
// Make sure the list only has one todo item.
|
|
await expect(page.getByTestId('todo-title')).toHaveText([
|
|
TODO_ITEMS[0]
|
|
]);
|
|
|
|
// Create 2nd todo.
|
|
await newTodo.fill(TODO_ITEMS[1]);
|
|
await newTodo.press('Enter');
|
|
|
|
// Make sure the list now has two todo items.
|
|
await expect(page.getByTestId('todo-title')).toHaveText([
|
|
TODO_ITEMS[0],
|
|
TODO_ITEMS[1],
|
|
]);
|
|
|
|
await checkNumberOfTodosInLocalStorage(page, 2);
|
|
});
|
|
});
|
|
|
|
async function checkNumberOfTodosInLocalStorage(page: Page, expected: number) {
|
|
return await page.waitForFunction(e => {
|
|
return JSON.parse(localStorage['react-todos']).length === e;
|
|
}, expected);
|
|
}
|