All checks were successful
Check usage of free licenses / build-static-assets (pull_request) Successful in 55s
Add copyright notice / copyright_notice (pull_request) Successful in 1m7s
Build Nginx-based docker image / build-static-assets (push) Successful in 3m53s
Playwright Tests / test (pull_request) Successful in 4m0s
77 lines
3.6 KiB
TypeScript
77 lines
3.6 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
import mockGroupsAPI from './mocks/groups';
|
|
import mockGuestsAPI from './mocks/guests';
|
|
|
|
test('should allow CRUD on guests', async ({ page }) => {
|
|
await mockGuestsAPI({ page });
|
|
await mockGroupsAPI({ page });
|
|
|
|
await page.goto('/default/dashboard/guests');
|
|
|
|
await expect(page.getByRole('button', { name: 'Add new' })).toBeVisible();
|
|
|
|
await expect(page.getByRole('tab', { name: 'Guests' })).toBeVisible();
|
|
await expect(page.getByRole('tab', { name: 'Groups' })).toBeVisible();
|
|
await expect(page.getByRole('tab', { name: 'Invitations' })).toBeVisible();
|
|
|
|
// List all guests
|
|
await expect(page.getByText('There are 2 elements in the list')).toBeVisible();
|
|
await expect(page.getByRole('row')).toHaveCount(3); // 1 header row + 2 data rows
|
|
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: 'Kristofer Rohan DVM' })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: "Pam's family" })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: 'Tentative' })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(1).locator('svg')).toHaveCount(2);
|
|
|
|
await expect(page.getByRole('row').nth(2).getByRole('cell', { name: 'Olevia Quigley Jr.' })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(2).getByRole('cell', { name: "Pam's work" })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(2).getByRole('cell', { name: 'Invited' })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(2).locator('svg')).toHaveCount(2);
|
|
|
|
// Add a new guest
|
|
await page.getByRole('button', { name: 'Add new' }).click();
|
|
|
|
await page.getByRole('dialog').getByLabel('Name').fill('John Snow');
|
|
|
|
await page.locator('#group').click();
|
|
await page.getByRole('option', { name: "Pam's work" }).click();
|
|
|
|
await page.locator('#status').click();
|
|
await page.getByRole('option', { name: 'Invited' }).click();
|
|
|
|
await page.getByRole('dialog').getByRole('button', { name: 'Create' }).click();
|
|
|
|
await expect(page.getByText('There are 3 elements in the list')).toBeVisible();
|
|
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: 'John Snow' })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: "Pam\'s work" })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: 'Invited' })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(1).locator('svg')).toHaveCount(2);
|
|
|
|
// Edit the just-added John Snow
|
|
await page.getByRole('row').nth(1).locator('svg').nth(1).click(); // Click edit icon
|
|
|
|
const dialog = page.getByRole('dialog');
|
|
await expect(dialog.getByLabel('Name')).toHaveValue('John Snow');
|
|
await dialog.getByLabel('Name').fill('John Fire');
|
|
|
|
await dialog.locator('#group').click();
|
|
await page.getByRole('option', { name: "Pam's family" }).click();
|
|
|
|
await dialog.locator('#status').click();
|
|
await page.getByRole('option', { name: 'Declined' }).click();
|
|
|
|
await dialog.getByRole('button', { name: 'Update' }).click();
|
|
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: 'John Fire' })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: 'Pam\'s Family' })).toBeVisible();
|
|
await expect(page.getByRole('row').nth(1).getByRole('cell', { name: 'Declined' })).toBeVisible();
|
|
|
|
await expect(page.getByText('There are 3 elements in the list')).toBeVisible();
|
|
|
|
// Delete John Fire
|
|
page.on('dialog', dialog => dialog.accept());
|
|
await page.getByRole('row').nth(1).locator('svg').nth(0).click(); // Click delete icon
|
|
await expect(page.getByText('There are 2 elements in the list')).toBeVisible();
|
|
});
|