From b75c3ccc6808f295d8f2d2c3af241374483a7f95 Mon Sep 17 00:00:00 2001 From: Matthew Haines-Young Date: Sat, 4 Jul 2026 18:14:17 +0100 Subject: [PATCH 1/2] Upgrade @wordpress/e2e-test-utils-playwright to 1.50.0 Bumps e2e-test-utils-playwright from ^1.35.0 to ^1.50.0 to pick up upstream test infrastructure fixes. Downgrades @types/node from ^24 to ^20.17.10 to satisfy the peer dependency requirement of the new version. Co-Authored-By: Claude Sonnet 4.6 --- package-lock.json | 27 ++++++++++++++------------- package.json | 4 ++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 174b873..50fafca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,8 @@ "license": "GPL-2.0-or-later", "devDependencies": { "@playwright/test": "^1.58.0", - "@types/node": "^24.10.1", - "@wordpress/e2e-test-utils-playwright": "^1.35.0", + "@types/node": "^20.17.10", + "@wordpress/e2e-test-utils-playwright": "^1.50.0", "@wordpress/env": "^9.0.0", "@wordpress/scripts": "^27.0.0" } @@ -4741,13 +4741,13 @@ } }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "20.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz", + "integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/node-forge": { @@ -5578,9 +5578,9 @@ } }, "node_modules/@wordpress/e2e-test-utils-playwright": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.35.0.tgz", - "integrity": "sha512-xGuMP7fIGPEA2GuLAbPlJEd0vTnGhDIJ0LfOv+xdrIiJCfdt0e7Rz0qxHyvhbQIx0lfpzi1No/qRUBCzlPwDCg==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.50.0.tgz", + "integrity": "sha512-P55NxY86M8lNnAbEPmpEswbxBoB7BWVhg67KOLRsGwLMeJ4qHbBngmgBIUt72IAH3H2UWVq7jZ1Xm/J1ENOMoQ==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -5595,7 +5595,8 @@ "npm": ">=8.19.2" }, "peerDependencies": { - "@playwright/test": ">=1" + "@playwright/test": ">=1", + "@types/node": "^20.17.10" } }, "node_modules/@wordpress/env": { @@ -21497,9 +21498,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index fbd3b70..e26c490 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ }, "devDependencies": { "@playwright/test": "^1.58.0", - "@types/node": "^24.10.1", - "@wordpress/e2e-test-utils-playwright": "^1.35.0", + "@types/node": "^20.17.10", + "@wordpress/e2e-test-utils-playwright": "^1.50.0", "@wordpress/env": "^9.0.0", "@wordpress/scripts": "^27.0.0" } From 2dbbe920f065c509148dc4a1cbb1d9a31a479a9d Mon Sep 17 00:00:00 2001 From: Matthew Haines-Young Date: Mon, 6 Jul 2026 09:13:07 +0100 Subject: [PATCH 2/2] Fix exclude-with-post-in tests for AQL v4.4.1 API changes AQL v4.4.1 renamed the combobox label from 'Posts' to 'Posts to Include' and the FormTokenField now requires typing to search (no posts shown on click alone). Fix both test locations to type search terms before clicking options, and re-select the AQL root block after pattern insertion since pattern selection leaves a child block focused. Co-Authored-By: Claude Sonnet 4.6 --- tests/e2e/exclude-with-post-in.spec.js | 41 ++++++++++++++++++-------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/tests/e2e/exclude-with-post-in.spec.js b/tests/e2e/exclude-with-post-in.spec.js index 5ae1328..80ea51a 100644 --- a/tests/e2e/exclude-with-post-in.spec.js +++ b/tests/e2e/exclude-with-post-in.spec.js @@ -85,15 +85,21 @@ test.describe( 'Exclude Displayed Posts with post__in', () => { .getByRole( 'button', { name: 'Title & Date' } ) .click(); + // Selecting the pattern leaves a child block focused; re-select the + // AQL root block so its sidebar settings (including the Posts + // combobox) are shown. + await blockEditor.selectBlock.byName( 'core/query', 0 ); // Check if we need to set this to a custom loop, WP 6.9 does not default to custom. await blockEditor.queryBlock.setAsCustom(); - // Set the posts to include + // Set the posts to include - AQL requires typing to search; no posts shown until input has text. await page - .getByRole( 'combobox', { name: 'Posts', exact: true } ) + .getByRole( 'combobox', { name: 'Posts to Include' } ) .click(); - await page.getByRole( 'option', { name: 'Post 23' } ).click(); - await page.getByRole( 'option', { name: 'Post 21' } ).click(); + await page.keyboard.type( 'Post 23' ); + await page.getByRole( 'option', { name: 'Post 23', exact: true } ).click(); + await page.keyboard.type( 'Post 21' ); + await page.getByRole( 'option', { name: 'Post 21', exact: true } ).click(); // Get post titles from first query const canvas = page @@ -266,18 +272,29 @@ test.describe( 'Exclude Displayed Posts with post__in', () => { } await editor.openDocumentSettingsSidebar(); + // Selecting the pattern leaves a child block focused; re-select the + // AQL root block so its sidebar settings (including the Posts + // combobox) are shown. + await blockEditor.selectBlock.byName( 'core/query', 0 ); await blockEditor.queryBlock.setAsCustom(); - // Set the posts to include + // Set the posts to include - AQL requires typing to search; no posts shown until input has text. await page - .getByRole( 'combobox', { name: 'Posts', exact: true } ) + .getByRole( 'combobox', { name: 'Posts to Include' } ) .click(); - await page.getByRole( 'option', { name: 'Post 23' } ).click(); - await page.getByRole( 'option', { name: 'Post 21' } ).click(); - await page.getByRole( 'option', { name: 'Post 19' } ).click(); - await page.getByRole( 'option', { name: 'Post 18' } ).click(); - await page.getByRole( 'option', { name: 'Post 16' } ).click(); - await page.getByRole( 'option', { name: 'Post 24' } ).click(); + for ( const postName of [ + 'Post 23', + 'Post 21', + 'Post 19', + 'Post 18', + 'Post 16', + 'Post 24', + ] ) { + await page.keyboard.type( postName ); + await page + .getByRole( 'option', { name: postName, exact: true } ) + .click(); + } // Select the first post template and configure it await blockEditor.selectBlock.byName( 'core/post-template' );