From cb8031ca33a0f5bcfcbca6dab610138e3aa38e32 Mon Sep 17 00:00:00 2001 From: Jorge Date: Wed, 2 Jan 2019 18:40:37 +0000 Subject: [PATCH] Make end 2 end test util clickOnMoreMenuItem not dependent on aria labels being present on the button --- .../src/click-on-more-menu-item.js | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/e2e-test-utils/src/click-on-more-menu-item.js b/packages/e2e-test-utils/src/click-on-more-menu-item.js index a71cf13f1e12c..0465441ec6496 100644 --- a/packages/e2e-test-utils/src/click-on-more-menu-item.js +++ b/packages/e2e-test-utils/src/click-on-more-menu-item.js @@ -1,3 +1,8 @@ +/** + * External dependencies + */ +import { first } from 'lodash'; + /** * Clicks on More Menu item, searches for the button with the text provided and clicks it. * @@ -7,7 +12,18 @@ export async function clickOnMoreMenuItem( buttonLabel ) { await expect( page ).toClick( '.edit-post-more-menu [aria-label="Show more tools & options"]' ); - await page.click( - `.edit-post-more-menu__content button[aria-label="${ buttonLabel }"]` - ); + const moreMenuContainerSelector = + '//*[contains(concat(" ", @class, " "), " edit-post-more-menu__content ")]'; + let elementToClick = first( await page.$x( + `${ moreMenuContainerSelector }//button[contains(text(), "${ buttonLabel }")]` + ) ); + // If button is not found, the label should be on the info wrapper. + if ( ! elementToClick ) { + elementToClick = first( await page.$x( + moreMenuContainerSelector + + '//button' + + `/*[contains(concat(" ", @class, " "), " components-menu-item__info-wrapper ")][contains(text(), "${ buttonLabel }")]` + ) ); + } + await elementToClick.click(); }