From f987124f44e5d22d64a8e232759f5a213c329bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Fri, 1 Dec 2023 12:42:52 +0100 Subject: [PATCH] DataViews: set proper semantics for dropdown items (#56676) --- .../src/components/dataviews/add-filter.js | 3 ++- .../src/components/dataviews/view-actions.js | 12 +++++---- .../src/components/dataviews/view-table.js | 8 ++++++ .../site-editor/new-templates-list.spec.js | 25 +++++++++++-------- 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/packages/edit-site/src/components/dataviews/add-filter.js b/packages/edit-site/src/components/dataviews/add-filter.js index 7999ff413f96cd..4dbbf7dc0938d9 100644 --- a/packages/edit-site/src/components/dataviews/add-filter.js +++ b/packages/edit-site/src/components/dataviews/add-filter.js @@ -81,6 +81,8 @@ export default function AddFilter( { fields, view, onChangeView } ) { { filter.elements.map( ( element ) => ( { onChangeView( ( currentView ) => ( { ...currentView, @@ -95,7 +97,6 @@ export default function AddFilter( { fields, view, onChangeView } ) { ], } ) ); } } - role="menuitemcheckbox" > { element.label } diff --git a/packages/edit-site/src/components/dataviews/view-actions.js b/packages/edit-site/src/components/dataviews/view-actions.js index 80d694691d505a..28acd2bdb882d6 100644 --- a/packages/edit-site/src/components/dataviews/view-actions.js +++ b/packages/edit-site/src/components/dataviews/view-actions.js @@ -53,6 +53,8 @@ function ViewTypeMenu( { view, onChangeView, supportedLayouts } ) { return ( @@ -66,8 +68,6 @@ function ViewTypeMenu( { view, onChangeView, supportedLayouts } ) { type: availableView.type, } ); } } - // TODO: check about role and a11y. - role="menuitemcheckbox" > { availableView.label } @@ -99,6 +99,8 @@ function PageSizeMenu( { view, onChangeView } ) { return ( } @@ -107,8 +109,6 @@ function PageSizeMenu( { view, onChangeView } ) { event.preventDefault(); onChangeView( { ...view, perPage: size, page: 1 } ); } } - // TODO: check about role and a11y. - role="menuitemcheckbox" > { size } @@ -140,6 +140,7 @@ function FieldsVisibilityMenu( { view, onChangeView, fields } ) { return ( @@ -158,7 +159,6 @@ function FieldsVisibilityMenu( { view, onChangeView, fields } ) { : [ ...view.hiddenFields, field.id ], } ); } } - role="menuitemcheckbox" > { field.header } @@ -221,6 +221,8 @@ function SortMenu( { fields, view, onChangeView } ) { return ( } suffix={ isActive && diff --git a/packages/edit-site/src/components/dataviews/view-table.js b/packages/edit-site/src/components/dataviews/view-table.js index 58d995e22e1d2c..60b584b7f10261 100644 --- a/packages/edit-site/src/components/dataviews/view-table.js +++ b/packages/edit-site/src/components/dataviews/view-table.js @@ -98,6 +98,10 @@ function HeaderMenu( { dataView, header } ) { ( [ direction, info ] ) => ( } suffix={ sortedDirection === direction && ( @@ -126,6 +130,8 @@ function HeaderMenu( { dataView, header } ) { ) } { isHidable && ( } onSelect={ ( event ) => { event.preventDefault(); @@ -172,6 +178,8 @@ function HeaderMenu( { dataView, header } ) { return ( } diff --git a/test/e2e/specs/site-editor/new-templates-list.spec.js b/test/e2e/specs/site-editor/new-templates-list.spec.js index be6008080200c8..b28362cd2c66d3 100644 --- a/test/e2e/specs/site-editor/new-templates-list.spec.js +++ b/test/e2e/specs/site-editor/new-templates-list.spec.js @@ -14,13 +14,20 @@ test.describe( 'Templates', () => { await Promise.all( [ requestUtils.activateTheme( 'twentytwentyone' ), requestUtils.deactivatePlugin( 'gutenberg-test-dataviews' ), + requestUtils.deleteAllTemplates( 'wp_template' ), ] ); } ); test( 'Sorting', async ( { admin, page } ) => { await admin.visitSiteEditor( { path: '/wp_template/all' } ); // Descending by title. - await page.getByRole( 'button', { name: 'Template' } ).click(); - await page.getByRole( 'menuitem', { name: 'Sort descending' } ).click(); + await page + .getByRole( 'button', { name: 'Template', exact: true } ) + .click(); + await page + .getByRole( 'menuitemradio', { + name: 'Sort descending', + } ) + .click(); const firstTitle = page .getByRole( 'region', { name: 'Template', @@ -33,7 +40,9 @@ test.describe( 'Templates', () => { .first(); await expect( firstTitle ).toHaveText( 'Tag Archives' ); // Ascending by title. - await page.getByRole( 'menuitem', { name: 'Sort ascending' } ).click(); + await page + .getByRole( 'menuitemradio', { name: 'Sort ascending' } ) + .click(); await expect( firstTitle ).toHaveText( 'Category Archives' ); } ); test( 'Filtering', async ( { requestUtils, admin, page } ) => { @@ -57,7 +66,7 @@ test.describe( 'Templates', () => { // Filter by author. await page.getByRole( 'button', { name: 'Add filter' } ).click(); await page.getByRole( 'menuitem', { name: 'Author' } ).hover(); - await page.getByRole( 'menuitemcheckbox', { name: 'admin' } ).click(); + await page.getByRole( 'menuitemradio', { name: 'admin' } ).click(); await expect( titles ).toHaveCount( 1 ); await expect( titles.first() ).toHaveText( 'Date Archives' ); @@ -68,17 +77,13 @@ test.describe( 'Templates', () => { await expect( titles ).toHaveCount( 3 ); await page.getByRole( 'button', { name: 'Add filter' } ).click(); await page.getByRole( 'menuitem', { name: 'Author' } ).hover(); - await page - .getByRole( 'menuitemcheckbox', { name: 'Emptytheme' } ) - .click(); + await page.getByRole( 'menuitemradio', { name: 'Emptytheme' } ).click(); await expect( titles ).toHaveCount( 2 ); - - await requestUtils.deleteAllTemplates( 'wp_template' ); } ); test( 'Field visibility', async ( { admin, page } ) => { await admin.visitSiteEditor( { path: '/wp_template/all' } ); await page.getByRole( 'button', { name: 'Description' } ).click(); - await page.getByRole( 'menuitem', { name: 'Hide' } ).click(); + await page.getByRole( 'menuitemradio', { name: 'Hide' } ).click(); await expect( page.getByRole( 'button', { name: 'Description' } ) ).toBeHidden();