From 4c5a34bb582bc37cd2fe64d8df03d789a91bb921 Mon Sep 17 00:00:00 2001 From: Dan Luu Date: Sat, 2 May 2026 13:49:22 -0700 Subject: [PATCH] Stabilize small-scope flaky e2e tests --- .../editor/various/publish-panel.spec.js | 7 ++- .../site-editor/homepage-settings.spec.js | 56 +++++++++---------- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/test/e2e/specs/editor/various/publish-panel.spec.js b/test/e2e/specs/editor/various/publish-panel.spec.js index daba30d6899ec1..000af0fefffcef 100644 --- a/test/e2e/specs/editor/various/publish-panel.spec.js +++ b/test/e2e/specs/editor/various/publish-panel.spec.js @@ -29,7 +29,12 @@ test.describe( 'Post publish panel', () => { 'role=region[name="Editor publish"i] >> role=button[name="Cancel"i]' ); - // Test focus is moved back to the Publish panel toggle button. + // Wait for the close transition before checking focus return. + await expect( publishPanelToggleButton ).toHaveAttribute( + 'aria-expanded', + 'false' + ); + await expect( publishPanelToggleButton ).toBeFocused(); } ); diff --git a/test/e2e/specs/site-editor/homepage-settings.spec.js b/test/e2e/specs/site-editor/homepage-settings.spec.js index e80e14830364ce..1d6289cb308826 100644 --- a/test/e2e/specs/site-editor/homepage-settings.spec.js +++ b/test/e2e/specs/site-editor/homepage-settings.spec.js @@ -3,9 +3,20 @@ */ const { test, expect } = require( '@wordpress/e2e-test-utils-playwright' ); +const getPageRowByTitle = ( page, title ) => + page.getByRole( 'row' ).filter( { + has: page.getByRole( 'gridcell' ).getByLabel( title, { exact: true } ), + } ); + test.describe( 'Homepage Settings via Editor', () => { test.beforeAll( async ( { requestUtils } ) => { - await Promise.all( [ requestUtils.activateTheme( 'emptytheme' ) ] ); + await requestUtils.activateTheme( 'emptytheme' ); + await requestUtils.updateSiteSettings( { + show_on_front: 'posts', + page_on_front: 0, + page_for_posts: 0, + } ); + await requestUtils.deleteAllPages(); await requestUtils.createPage( { title: 'Homepage', status: 'publish', @@ -26,25 +37,18 @@ test.describe( 'Homepage Settings via Editor', () => { } ); test.afterAll( async ( { requestUtils } ) => { - await Promise.all( [ - requestUtils.deleteAllPages(), - requestUtils.updateSiteSettings( { - show_on_front: 'posts', - page_on_front: 0, - page_for_posts: 0, - } ), - ] ); + await requestUtils.updateSiteSettings( { + show_on_front: 'posts', + page_on_front: 0, + page_for_posts: 0, + } ); + await requestUtils.deleteAllPages(); } ); test( 'should not show "Set as homepage" and "Set as posts page" action on pages with `draft` status', async ( { page, } ) => { - const draftPage = page - .getByRole( 'gridcell' ) - .getByLabel( 'Draft page' ); - const draftPageRow = page - .getByRole( 'row' ) - .filter( { has: draftPage } ); + const draftPageRow = getPageRowByTitle( page, 'Draft page' ); await draftPageRow.hover(); await draftPageRow .getByRole( 'button', { @@ -62,14 +66,9 @@ test.describe( 'Homepage Settings via Editor', () => { test( 'should show correct homepage actions based on current homepage or posts page', async ( { page, } ) => { - const samplePage = page - .getByRole( 'gridcell' ) - .getByLabel( 'Homepage' ); - const samplePageRow = page - .getByRole( 'row' ) - .filter( { has: samplePage } ); - await samplePageRow.click(); - await samplePageRow + const homepageRow = getPageRowByTitle( page, 'Homepage' ); + await homepageRow.click(); + await homepageRow .getByRole( 'button', { name: 'Actions', } ) @@ -83,15 +82,10 @@ test.describe( 'Homepage Settings via Editor', () => { page.getByRole( 'menuitem', { name: 'Set as posts page' } ) ).toBeHidden(); - const samplePageTwo = page - .getByRole( 'gridcell' ) - .getByLabel( 'Sample page' ); - const samplePageTwoRow = page - .getByRole( 'row' ) - .filter( { has: samplePageTwo } ); + const samplePageRow = getPageRowByTitle( page, 'Sample page' ); // eslint-disable-next-line playwright/no-force-option - await samplePageTwoRow.click( { force: true } ); - await samplePageTwoRow + await samplePageRow.click( { force: true } ); + await samplePageRow .getByRole( 'button', { name: 'Actions', } )