From 9d94d2d42f83c9c144485b53fb5e5545f66305cd Mon Sep 17 00:00:00 2001 From: Piotr Delawski Date: Wed, 9 Mar 2022 12:10:03 +0100 Subject: [PATCH 1/4] Test Twenty Twenty search modal on mobile breakpoint --- tests/e2e/specs/core-themes/twentytwenty.js | 86 ++++++++++----------- 1 file changed, 41 insertions(+), 45 deletions(-) diff --git a/tests/e2e/specs/core-themes/twentytwenty.js b/tests/e2e/specs/core-themes/twentytwenty.js index 0b7daddd59a..4da7f801af2 100644 --- a/tests/e2e/specs/core-themes/twentytwenty.js +++ b/tests/e2e/specs/core-themes/twentytwenty.js @@ -18,11 +18,7 @@ describe( 'Twenty Twenty theme on AMP', () => { await setTemplateMode( 'standard' ); } ); - describe( 'main navigation on mobile', () => { - beforeAll( async () => { - await assignMenuToLocation( 'mobile' ); - } ); - + describe( 'for mobile breakpoint', () => { beforeEach( async () => { await setBrowserViewport( MOBILE_BROWSER_VIEWPORT_SIZE ); await page.goto( createURL( '/' ) ); @@ -33,59 +29,59 @@ describe( 'Twenty Twenty theme on AMP', () => { await setBrowserViewport( DEFAULT_BROWSER_VIEWPORT_SIZE ); } ); - it( 'should be initially hidden', async () => { - await expect( page ).toMatchElement( '.mobile-nav-toggle[aria-expanded=false]' ); - await expect( page ).toMatchElement( '.menu-modal', { visible: false } ); - } ); + describe( 'main navigation', () => { + beforeAll( async () => { + await assignMenuToLocation( 'mobile' ); + } ); - it( 'should be togglable', async () => { - await expect( page ).toClick( '.mobile-nav-toggle' ); - await expect( page ).toMatchElement( '.mobile-nav-toggle[aria-expanded=true]' ); - await expect( page ).toMatchElement( '.menu-modal', { visible: true } ); + it( 'should be initially hidden', async () => { + await expect( page ).toMatchElement( '.mobile-nav-toggle[aria-expanded=false]' ); + await expect( page ).toMatchElement( '.menu-modal', { visible: false } ); + } ); - await expect( page ).toClick( '.mobile-nav-toggle' ); - await expect( page ).toMatchElement( '.mobile-nav-toggle[aria-expanded=false]' ); - await expect( page ).toMatchElement( '.menu-modal', { visible: false } ); - } ); + it( 'should be togglable', async () => { + await expect( page ).toClick( '.mobile-nav-toggle' ); + await expect( page ).toMatchElement( '.mobile-nav-toggle[aria-expanded=true]' ); + await expect( page ).toMatchElement( '.menu-modal', { visible: true } ); - it( 'should have a togglable submenu', async () => { - await expect( page ).toClick( '.mobile-nav-toggle' ); + await expect( page ).toClick( '.mobile-nav-toggle' ); + await expect( page ).toMatchElement( '.mobile-nav-toggle[aria-expanded=false]' ); + await expect( page ).toMatchElement( '.menu-modal', { visible: false } ); + } ); - const menuItemWithSubmenu = await page.$( '.menu-modal .menu-item-has-children' ); + it( 'should have a togglable submenu', async () => { + await expect( page ).toClick( '.mobile-nav-toggle' ); - expect( menuItemWithSubmenu ).not.toBeNull(); + const menuItemWithSubmenu = await page.$( '.menu-modal .menu-item-has-children' ); - await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu-toggle[aria-expanded=false]' ); - await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu', { visible: false } ); + expect( menuItemWithSubmenu ).not.toBeNull(); - await expect( menuItemWithSubmenu ).toClick( '.sub-menu-toggle' ); - await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu-toggle[aria-expanded=true]' ); - await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu', { visible: true } ); + await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu-toggle[aria-expanded=false]' ); + await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu', { visible: false } ); - await expect( menuItemWithSubmenu ).toClick( '.sub-menu-toggle' ); - await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu-toggle[aria-expanded=false]' ); - await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu', { visible: false } ); - } ); - } ); + await expect( menuItemWithSubmenu ).toClick( '.sub-menu-toggle' ); + await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu-toggle[aria-expanded=true]' ); + await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu', { visible: true } ); - describe( 'search modal on desktop', () => { - beforeEach( async () => { - await setBrowserViewport( DEFAULT_BROWSER_VIEWPORT_SIZE ); - await page.goto( createURL( '/' ) ); - await page.waitForSelector( '#site-header' ); + await expect( menuItemWithSubmenu ).toClick( '.sub-menu-toggle' ); + await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu-toggle[aria-expanded=false]' ); + await expect( menuItemWithSubmenu ).toMatchElement( '.sub-menu', { visible: false } ); + } ); } ); - it( 'should be togglable', async () => { - await expect( page ).toMatchElement( '.desktop-search-toggle[aria-expanded=false]' ); - await expect( page ).toMatchElement( '.search-modal', { visible: false } ); + describe( 'search modal', () => { + it( 'should be togglable', async () => { + await expect( page ).toMatchElement( '.mobile-search-toggle[aria-expanded=false]' ); + await expect( page ).toMatchElement( '.search-modal', { visible: false } ); - await expect( page ).toClick( '.desktop-search-toggle' ); - await expect( page ).toMatchElement( '.search-toggle[aria-expanded=true]' ); - await expect( page ).toMatchElement( '.search-modal', { visible: true } ); + await expect( page ).toClick( '.mobile-search-toggle' ); + await expect( page ).toMatchElement( '.search-toggle[aria-expanded=true]' ); + await expect( page ).toMatchElement( '.search-modal', { visible: true } ); - await expect( page ).toMatchElement( '.search-modal .close-search-toggle[aria-expanded=true]' ); - await expect( page ).toClick( '.search-modal .close-search-toggle' ); - await expect( page ).toMatchElement( '.search-modal', { visible: false } ); + await expect( page ).toMatchElement( '.search-modal .close-search-toggle[aria-expanded=true]' ); + await expect( page ).toClick( '.search-modal .close-search-toggle' ); + await expect( page ).toMatchElement( '.search-modal', { visible: false } ); + } ); } ); } ); } ); From 0d59631ec1c7c90a51d2fc9f33fbc5da60844bc4 Mon Sep 17 00:00:00 2001 From: Piotr Delawski Date: Wed, 9 Mar 2022 12:32:25 +0100 Subject: [PATCH 2/4] Add E2E tests for Twenty Twenty-Two header nav menu block --- .../e2e/specs/core-themes/twentytwentytwo.js | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 tests/e2e/specs/core-themes/twentytwentytwo.js diff --git a/tests/e2e/specs/core-themes/twentytwentytwo.js b/tests/e2e/specs/core-themes/twentytwentytwo.js new file mode 100644 index 00000000000..8d5c78bf06e --- /dev/null +++ b/tests/e2e/specs/core-themes/twentytwentytwo.js @@ -0,0 +1,60 @@ +/** + * WordPress dependencies + */ +import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminPage } from '@wordpress/e2e-test-utils'; + +/** + * Internal dependencies + */ +import { setTemplateMode } from '../../utils/amp-settings-utils'; +import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; + +describe( 'Twenty Twenty-Two theme on AMP', () => { + beforeAll( async () => { + await installTheme( 'twentytwentytwo' ); + await activateTheme( 'twentytwentytwo' ); + + await visitAdminPage( 'admin.php', 'page=amp-options' ); + await setTemplateMode( 'standard' ); + } ); + + afterAll( async () => { + await activateTheme( 'twentytwenty' ); + } ); + + describe( 'header navigation on mobile', () => { + const pageHeaderSelector = 'header.wp-block-template-part'; + + beforeEach( async () => { + await setBrowserViewport( MOBILE_BROWSER_VIEWPORT_SIZE ); + await page.goto( createURL( '/' ) ); + await page.waitForSelector( '.wp-site-blocks' ); + } ); + + afterAll( async () => { + await setBrowserViewport( DEFAULT_BROWSER_VIEWPORT_SIZE ); + } ); + + it( 'should be initially hidden', async () => { + const pageHeaderElement = await page.$( pageHeaderSelector ); + expect( pageHeaderElement ).not.toBeNull(); + + await expect( pageHeaderElement ).toMatchElement( '.wp-block-navigation__responsive-container-open' ); + await expect( pageHeaderElement ).toMatchElement( '.wp-block-navigation__responsive-container[aria-hidden=true]', { visible: false } ); + await expect( pageHeaderElement ).toMatchElement( '.wp-block-navigation__responsive-container-close', { visible: false } ); + } ); + + it( 'should be togglable', async () => { + const pageHeaderElement = await page.$( pageHeaderSelector ); + expect( pageHeaderElement ).not.toBeNull(); + + await expect( pageHeaderElement ).toClick( '.wp-block-navigation__responsive-container-open' ); + await expect( pageHeaderElement ).toMatchElement( '.wp-block-navigation__responsive-container[aria-hidden=false]' ); + await expect( pageHeaderElement ).toMatchElement( '.wp-block-navigation__responsive-container-close' ); + + await expect( pageHeaderElement ).toClick( '.wp-block-navigation__responsive-container-close' ); + await expect( pageHeaderElement ).toMatchElement( '.wp-block-navigation__responsive-container[aria-hidden=true]', { visible: false } ); + await expect( pageHeaderElement ).toMatchElement( '.wp-block-navigation__responsive-container-close', { visible: false } ); + } ); + } ); +} ); From 362f48f8d80e7b5861276b31fc8376adaa0be300 Mon Sep 17 00:00:00 2001 From: Piotr Delawski Date: Wed, 9 Mar 2022 13:12:48 +0100 Subject: [PATCH 3/4] Bail out if there is no menu location or it is already selected --- tests/e2e/utils/assign-menu-to-location.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/e2e/utils/assign-menu-to-location.js b/tests/e2e/utils/assign-menu-to-location.js index d191436b79b..2c44d40d615 100644 --- a/tests/e2e/utils/assign-menu-to-location.js +++ b/tests/e2e/utils/assign-menu-to-location.js @@ -5,8 +5,14 @@ import { visitAdminPage } from '@wordpress/e2e-test-utils'; export async function assignMenuToLocation( menuLocationName ) { await visitAdminPage( 'nav-menus.php', '' ); - await page.waitForSelector( `input[name="menu-locations[${ menuLocationName }]"]` ); - await page.click( `input[name="menu-locations[${ menuLocationName }]"]` ); + + // Bail out if there is no menu location or it is already selected. + const menuLocationCheckbox = await page.$( `input:not(:checked)[name="menu-locations[${ menuLocationName }]"]` ); + if ( ! menuLocationCheckbox ) { + return; + } + + await menuLocationCheckbox.click(); await page.click( '#save_menu_footer' ); await page.waitForSelector( '#message', { text: /has been updated/ } ); } From beba916dcbdca0a556fb77ba54251e62396d9c77 Mon Sep 17 00:00:00 2001 From: Piotr Delawski Date: Wed, 9 Mar 2022 13:49:55 +0100 Subject: [PATCH 4/4] Improve nav menu E2E tests by creating test menu before each test suite --- tests/e2e/config/bootstrap.js | 33 ------------------- tests/e2e/specs/core-themes/twentyfifteen.js | 3 +- tests/e2e/specs/core-themes/twentyfourteen.js | 3 +- tests/e2e/specs/core-themes/twentynineteen.js | 3 +- .../e2e/specs/core-themes/twentyseventeen.js | 3 +- tests/e2e/specs/core-themes/twentysixteen.js | 3 +- tests/e2e/specs/core-themes/twentythirteen.js | 3 +- tests/e2e/specs/core-themes/twentytwelve.js | 3 +- tests/e2e/specs/core-themes/twentytwenty.js | 3 +- .../e2e/specs/core-themes/twentytwentyone.js | 3 +- ...-menu-to-location.js => nav-menu-utils.js} | 29 +++++++++++++++- 11 files changed, 46 insertions(+), 43 deletions(-) rename tests/e2e/utils/{assign-menu-to-location.js => nav-menu-utils.js} (51%) diff --git a/tests/e2e/config/bootstrap.js b/tests/e2e/config/bootstrap.js index 00a497bf9ac..cebc96972d5 100644 --- a/tests/e2e/config/bootstrap.js +++ b/tests/e2e/config/bootstrap.js @@ -9,8 +9,6 @@ import { get } from 'lodash'; import { activateTheme, clearLocalStorage, - createMenu, - deleteAllMenus, enablePageDialogAccept, installTheme, isOfflineMode, @@ -250,36 +248,6 @@ async function createTestData() { } ); } -/** - * Create test posts so that the WordPress instance has some data. - */ -async function createTestMenus() { - await deleteAllMenus(); - await createMenu( - { - name: 'Test Menu 1', - }, - [ - { - title: 'WordPress.org', - url: 'https://wordpress.org', - menu_order: 1, - }, - { - title: 'Wikipedia.org', - url: 'https://wikipedia.org', - menu_order: 2, - }, - { - title: 'Google', - url: 'https://google.com', - menu_order: 3, - parent: 1, - }, - ], - ); -} - /** * Install themes and plugins needed in tests. */ @@ -309,7 +277,6 @@ beforeAll( async () => { await setupThemesAndPlugins(); await trashAllPosts(); await createTestData(); - await createTestMenus(); await cleanUpSettings(); await page.setDefaultNavigationTimeout( 10000 ); await page.setDefaultTimeout( 10000 ); diff --git a/tests/e2e/specs/core-themes/twentyfifteen.js b/tests/e2e/specs/core-themes/twentyfifteen.js index 88444ecdf50..fb3fd139935 100644 --- a/tests/e2e/specs/core-themes/twentyfifteen.js +++ b/tests/e2e/specs/core-themes/twentyfifteen.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminP * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Fifteen theme on AMP', () => { @@ -25,6 +25,7 @@ describe( 'Twenty Fifteen theme on AMP', () => { describe( 'main navigation on mobile', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'primary' ); } ); diff --git a/tests/e2e/specs/core-themes/twentyfourteen.js b/tests/e2e/specs/core-themes/twentyfourteen.js index b9e7180c0b3..e563fa97592 100644 --- a/tests/e2e/specs/core-themes/twentyfourteen.js +++ b/tests/e2e/specs/core-themes/twentyfourteen.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminP * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Fourteen theme on AMP', () => { @@ -25,6 +25,7 @@ describe( 'Twenty Fourteen theme on AMP', () => { describe( 'main navigation on mobile', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'primary' ); } ); diff --git a/tests/e2e/specs/core-themes/twentynineteen.js b/tests/e2e/specs/core-themes/twentynineteen.js index 9c2b9316897..04ec1d0108b 100644 --- a/tests/e2e/specs/core-themes/twentynineteen.js +++ b/tests/e2e/specs/core-themes/twentynineteen.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminP * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Nineteen theme on AMP', () => { @@ -25,6 +25,7 @@ describe( 'Twenty Nineteen theme on AMP', () => { describe( 'main navigation on mobile', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'menu-1' ); } ); diff --git a/tests/e2e/specs/core-themes/twentyseventeen.js b/tests/e2e/specs/core-themes/twentyseventeen.js index b93777f4404..8dece2e7dd3 100644 --- a/tests/e2e/specs/core-themes/twentyseventeen.js +++ b/tests/e2e/specs/core-themes/twentyseventeen.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminP * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Seventeen theme on AMP', () => { @@ -25,6 +25,7 @@ describe( 'Twenty Seventeen theme on AMP', () => { describe( 'main navigation on mobile', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'top' ); } ); diff --git a/tests/e2e/specs/core-themes/twentysixteen.js b/tests/e2e/specs/core-themes/twentysixteen.js index a3d3df7d4c1..bff8b2cb575 100644 --- a/tests/e2e/specs/core-themes/twentysixteen.js +++ b/tests/e2e/specs/core-themes/twentysixteen.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminP * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Sixteen theme on AMP', () => { @@ -25,6 +25,7 @@ describe( 'Twenty Sixteen theme on AMP', () => { describe( 'main navigation on mobile', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'primary' ); } ); diff --git a/tests/e2e/specs/core-themes/twentythirteen.js b/tests/e2e/specs/core-themes/twentythirteen.js index afdaa884617..e5df09abeaa 100644 --- a/tests/e2e/specs/core-themes/twentythirteen.js +++ b/tests/e2e/specs/core-themes/twentythirteen.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminP * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Thirteen theme on AMP', () => { @@ -25,6 +25,7 @@ describe( 'Twenty Thirteen theme on AMP', () => { describe( 'main navigation on mobile', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'primary' ); } ); diff --git a/tests/e2e/specs/core-themes/twentytwelve.js b/tests/e2e/specs/core-themes/twentytwelve.js index 2fef4e3b422..d599478a871 100644 --- a/tests/e2e/specs/core-themes/twentytwelve.js +++ b/tests/e2e/specs/core-themes/twentytwelve.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminP * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Twelve theme on AMP', () => { @@ -25,6 +25,7 @@ describe( 'Twenty Twelve theme on AMP', () => { describe( 'main navigation on mobile', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'primary' ); } ); diff --git a/tests/e2e/specs/core-themes/twentytwenty.js b/tests/e2e/specs/core-themes/twentytwenty.js index 4da7f801af2..dc13a49b3bf 100644 --- a/tests/e2e/specs/core-themes/twentytwenty.js +++ b/tests/e2e/specs/core-themes/twentytwenty.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, setBrowserViewport, visitAdminPage } from '@w * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Twenty theme on AMP', () => { @@ -31,6 +31,7 @@ describe( 'Twenty Twenty theme on AMP', () => { describe( 'main navigation', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'mobile' ); } ); diff --git a/tests/e2e/specs/core-themes/twentytwentyone.js b/tests/e2e/specs/core-themes/twentytwentyone.js index f20ad3640fb..9b51a543a32 100644 --- a/tests/e2e/specs/core-themes/twentytwentyone.js +++ b/tests/e2e/specs/core-themes/twentytwentyone.js @@ -7,7 +7,7 @@ import { activateTheme, createURL, installTheme, setBrowserViewport, visitAdminP * Internal dependencies */ import { setTemplateMode } from '../../utils/amp-settings-utils'; -import { assignMenuToLocation } from '../../utils/assign-menu-to-location'; +import { assignMenuToLocation, createTestMenu } from '../../utils/nav-menu-utils'; import { DEFAULT_BROWSER_VIEWPORT_SIZE, MOBILE_BROWSER_VIEWPORT_SIZE } from '../../config/bootstrap'; describe( 'Twenty Twenty-One theme on AMP', () => { @@ -25,6 +25,7 @@ describe( 'Twenty Twenty-One theme on AMP', () => { describe( 'main navigation on mobile', () => { beforeAll( async () => { + await createTestMenu(); await assignMenuToLocation( 'primary' ); } ); diff --git a/tests/e2e/utils/assign-menu-to-location.js b/tests/e2e/utils/nav-menu-utils.js similarity index 51% rename from tests/e2e/utils/assign-menu-to-location.js rename to tests/e2e/utils/nav-menu-utils.js index 2c44d40d615..d986092fad2 100644 --- a/tests/e2e/utils/assign-menu-to-location.js +++ b/tests/e2e/utils/nav-menu-utils.js @@ -1,7 +1,34 @@ /** * WordPress dependencies */ -import { visitAdminPage } from '@wordpress/e2e-test-utils'; +import { createMenu, deleteAllMenus, visitAdminPage } from '@wordpress/e2e-test-utils'; + +export async function createTestMenu() { + await deleteAllMenus(); + await createMenu( + { + name: 'Test Menu 1', + }, + [ + { + title: 'WordPress.org', + url: 'https://wordpress.org', + menu_order: 1, + }, + { + title: 'Wikipedia.org', + url: 'https://wikipedia.org', + menu_order: 2, + }, + { + title: 'Google', + url: 'https://google.com', + menu_order: 3, + parent: 1, + }, + ], + ); +} export async function assignMenuToLocation( menuLocationName ) { await visitAdminPage( 'nav-menus.php', '' );