Spaces:
Sleeping
Sleeping
| import assert from 'node:assert'; | |
| import { faker } from '@faker-js/faker'; | |
| import { expect, test } from '@playwright/test'; | |
| test.describe('Counter', () => { | |
| test.describe('Increment operation', () => { | |
| test('should display error message when incrementing with negative number', async ({ | |
| page, | |
| }) => { | |
| await page.goto('/counter'); | |
| const count = page.getByText('Count:'); | |
| const countText = await count.textContent(); | |
| assert(countText !== null, 'Count should not be null'); | |
| await page.getByLabel('Increment by').fill('-1'); | |
| await page.getByRole('button', { name: 'Increment' }).click(); | |
| await expect(page.getByText('Number must be greater than or equal to 1')).toBeVisible(); | |
| await expect(page.getByText('Count:')).toHaveText(countText); | |
| }); | |
| test('should increment the counter and validate the count', async ({ | |
| page, | |
| }) => { | |
| // `x-e2e-random-id` is used for end-to-end testing to make isolated requests | |
| // The default value is 0 when there is no `x-e2e-random-id` header | |
| const e2eRandomId = faker.number.int({ max: 1000000 }); | |
| await page.setExtraHTTPHeaders({ | |
| 'x-e2e-random-id': e2eRandomId.toString(), | |
| }); | |
| await page.goto('/counter'); | |
| const count = page.getByText('Count:'); | |
| const countText = await count.textContent(); | |
| assert(countText !== null, 'Count should not be null'); | |
| const countNumber = Number(countText.split(' ')[1]); | |
| await page.getByLabel('Increment by').fill('2'); | |
| await page.getByRole('button', { name: 'Increment' }).click(); | |
| await expect(page.getByText('Count:')).toHaveText(`Count: ${countNumber + 2}`); | |
| await page.getByLabel('Increment by').fill('3'); | |
| await page.getByRole('button', { name: 'Increment' }).click(); | |
| await expect(page.getByText('Count:')).toHaveText(`Count: ${countNumber + 5}`); | |
| }); | |
| }); | |
| }); | |