From 89e9c211d7459010e848873f80c6a56b567f11be Mon Sep 17 00:00:00 2001 From: Manuel Bustillo Date: Sat, 14 Jun 2025 09:46:35 +0200 Subject: [PATCH] Refactor: extract groups specs to their own file --- tests/groups.spec.ts | 44 ++++++++++++++++++++++++++++++++++++++++++++ tests/guests.spec.ts | 42 ------------------------------------------ 2 files changed, 44 insertions(+), 42 deletions(-) create mode 100644 tests/groups.spec.ts diff --git a/tests/groups.spec.ts b/tests/groups.spec.ts new file mode 100644 index 0000000..baf13d4 --- /dev/null +++ b/tests/groups.spec.ts @@ -0,0 +1,44 @@ +import { test, expect, Page } from '@playwright/test' +import mockGroupsAPI from './mocks/groups'; + +test('should allow CRUD on groups', async ({ page }) => { + await mockGroupsAPI({ page }); + + await page.goto('/default/dashboard/guests'); + await page.getByRole('tab', { name: 'Groups' }).click(); + + await expect(page.getByRole('button', { name: 'Add new' })).toBeVisible(); + await expect(page.getByRole('button', { name: 'Reset affinities' })).toBeVisible(); + + await expect(page.getByRole('row')).toHaveCount(3); // 1 header row + 2 data rows + + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(0)).toHaveText('Name'); + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(1)).toHaveText('Color'); + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(2)).toHaveText('Confirmed'); + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(3)).toHaveText('Tentative'); + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(4)).toHaveText('Pending'); + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(5)).toHaveText('Declined'); + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(6)).toHaveText('Considered'); + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(7)).toHaveText('Total'); + await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(8)).toHaveText('Actions'); + + await expect(page.getByRole('row').nth(1).getByRole('cell').nth(0)).toContainText('Pam\'s family'); + await expect(page.getByRole('row').nth(1).getByRole('cell').nth(2)).toHaveText('0'); + await expect(page.getByRole('row').nth(1).getByRole('cell').nth(3)).toHaveText('0'); + await expect(page.getByRole('row').nth(1).getByRole('cell').nth(4)).toHaveText('1'); + await expect(page.getByRole('row').nth(1).getByRole('cell').nth(5)).toHaveText('0'); + await expect(page.getByRole('row').nth(1).getByRole('cell').nth(6)).toHaveText('2'); + await expect(page.getByRole('row').nth(1).getByRole('cell').nth(7)).toHaveText('3'); + await expect(page.getByRole('row').nth(1).locator('svg:visible')).toHaveCount(3); + + + await expect(page.getByRole('row').nth(2).getByRole('cell').nth(0)).toContainText('Pam\'s work'); + await expect(page.getByRole('row').nth(2).getByRole('cell').nth(2)).toHaveText('0'); + await expect(page.getByRole('row').nth(2).getByRole('cell').nth(3)).toHaveText('2'); + await expect(page.getByRole('row').nth(2).getByRole('cell').nth(4)).toHaveText('0'); + await expect(page.getByRole('row').nth(2).getByRole('cell').nth(5)).toHaveText('0'); + await expect(page.getByRole('row').nth(2).getByRole('cell').nth(6)).toHaveText('0'); + await expect(page.getByRole('row').nth(2).getByRole('cell').nth(7)).toHaveText('2'); + await expect(page.getByRole('row').nth(2).locator('svg:visible')).toHaveCount(3); + +}); \ No newline at end of file diff --git a/tests/guests.spec.ts b/tests/guests.spec.ts index 45f9ea5..7416c09 100644 --- a/tests/guests.spec.ts +++ b/tests/guests.spec.ts @@ -73,45 +73,3 @@ test('should allow CRUD on guests', async ({ page }) => { 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(); }); - -test('should display the list of groups', async ({ page }) => { - await mockGroupsAPI({ page }); - - await page.goto('/default/dashboard/guests'); - await page.getByRole('tab', { name: 'Groups' }).click(); - - await expect(page.getByRole('button', { name: 'Add new' })).toBeVisible(); - await expect(page.getByRole('button', { name: 'Reset affinities' })).toBeVisible(); - - await expect(page.getByRole('row')).toHaveCount(3); // 1 header row + 2 data rows - - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(0)).toHaveText('Name'); - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(1)).toHaveText('Color'); - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(2)).toHaveText('Confirmed'); - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(3)).toHaveText('Tentative'); - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(4)).toHaveText('Pending'); - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(5)).toHaveText('Declined'); - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(6)).toHaveText('Considered'); - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(7)).toHaveText('Total'); - await expect(page.getByRole('row').nth(0).getByRole('columnheader').nth(8)).toHaveText('Actions'); - - await expect(page.getByRole('row').nth(1).getByRole('cell').nth(0)).toContainText('Pam\'s family'); - await expect(page.getByRole('row').nth(1).getByRole('cell').nth(2)).toHaveText('0'); - await expect(page.getByRole('row').nth(1).getByRole('cell').nth(3)).toHaveText('0'); - await expect(page.getByRole('row').nth(1).getByRole('cell').nth(4)).toHaveText('1'); - await expect(page.getByRole('row').nth(1).getByRole('cell').nth(5)).toHaveText('0'); - await expect(page.getByRole('row').nth(1).getByRole('cell').nth(6)).toHaveText('2'); - await expect(page.getByRole('row').nth(1).getByRole('cell').nth(7)).toHaveText('3'); - await expect(page.getByRole('row').nth(1).locator('svg:visible')).toHaveCount(3); - - - await expect(page.getByRole('row').nth(2).getByRole('cell').nth(0)).toContainText('Pam\'s work'); - await expect(page.getByRole('row').nth(2).getByRole('cell').nth(2)).toHaveText('0'); - await expect(page.getByRole('row').nth(2).getByRole('cell').nth(3)).toHaveText('2'); - await expect(page.getByRole('row').nth(2).getByRole('cell').nth(4)).toHaveText('0'); - await expect(page.getByRole('row').nth(2).getByRole('cell').nth(5)).toHaveText('0'); - await expect(page.getByRole('row').nth(2).getByRole('cell').nth(6)).toHaveText('0'); - await expect(page.getByRole('row').nth(2).getByRole('cell').nth(7)).toHaveText('2'); - await expect(page.getByRole('row').nth(2).locator('svg:visible')).toHaveCount(3); - -}); \ No newline at end of file