From 5cccc1ae6f9f6c73c2382363cea50d1cee864c30 Mon Sep 17 00:00:00 2001 From: Cyril Date: Wed, 25 Mar 2026 14:27:41 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(e2e)=20update=20tests=20for=20list=20?= =?UTF-8?q?semantics=20and=20add=20keyboard=20nav=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adapt selectors from grid/row to list/listitem and add a Tab+Enter test --- CHANGELOG.md | 1 + .../app-impress/doc-grid-move.spec.ts | 2 +- .../__tests__/app-impress/doc-grid.spec.ts | 25 ++++++++++++++++++- .../e2e/__tests__/app-impress/utils-common.ts | 6 ++--- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b88aac4..c48a5b69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to - ♿️(frontend) improve language picker accessibility #2069 - ♿️(frontend) add aria-hidden to decorative icons in dropdown menu #2093 - 🐛(backend) move lock table closer to the insert operation targeted +- ♿️(frontend) replace ARIA grid pattern with list in docs grid #2131 ### Fixed diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-grid-move.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-grid-move.spec.ts index 8a3c970a..33e38837 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-grid-move.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-grid-move.spec.ts @@ -400,7 +400,7 @@ test.describe('Doc grid dnd mobile', () => { await expect(page.getByTestId('docs-grid')).toBeVisible(); await expect(page.getByTestId('grid-loader')).toBeHidden(); - await expect(docsGrid.getByRole('row').first()).toBeVisible(); + await expect(docsGrid.getByRole('listitem').first()).toBeVisible(); await expect(docsGrid.locator('.--docs--grid-droppable')).toHaveCount(0); await createDoc(page, 'Draggable doc mobile', browserName, 1, true); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts index 95a4258e..47000b1f 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts @@ -76,7 +76,7 @@ test.describe('Documents Grid mobile', () => { await expect(docsGrid).toBeVisible(); await expect(page.getByTestId('grid-loader')).toBeHidden(); - const rows = docsGrid.getByRole('row'); + const rows = docsGrid.getByRole('listitem'); const row = rows.filter({ hasText: 'My mocked document', }); @@ -289,6 +289,29 @@ test.describe('Documents Grid', () => { ); }); + test('opens a document with keyboard (Tab + Enter)', async ({ + page, + browserName, + }) => { + await page.goto('/'); + + const [docTitle] = await createDoc(page, 'keyboard-nav-test', browserName); + + await page.goto('/'); + await expect(page.getByTestId('grid-loader')).toBeHidden(); + + const row = await getGridRow(page, docTitle); + const link = row.getByRole('link').first(); + + await link.focus(); + await expect(link).toBeFocused(); + + await page.keyboard.press('Enter'); + + await expect(page).toHaveURL(/\/docs\//); + await verifyDocName(page, docTitle); + }); + test('checks the infinite scroll', async ({ page }) => { let docs: SmallDoc[]; const responsePromisePage1 = page.waitForResponse((response) => { diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts index ad4ae595..7530606b 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts @@ -183,11 +183,11 @@ export const verifyDocName = async (page: Page, docName: string) => { }; export const getGridRow = async (page: Page, title: string) => { - const docsGrid = page.getByRole('grid'); + const docsGrid = page.getByTestId('docs-grid'); await expect(docsGrid).toBeVisible(); await expect(page.getByTestId('grid-loader')).toBeHidden(); - const rows = docsGrid.getByRole('row'); + const rows = docsGrid.getByRole('listitem'); const row = rows .filter({ @@ -215,7 +215,7 @@ export const goToGridDoc = async ( await expect(docsGrid).toBeVisible(); await expect(page.getByTestId('grid-loader')).toBeHidden(); - const rows = docsGrid.getByRole('row'); + const rows = docsGrid.getByRole('listitem'); const row = title ? rows.filter({