From 6f287ff40883a0e317457e16366d61083e350a6b Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 21 Jul 2026 12:28:10 +0800 Subject: [PATCH 1/9] Run Tests against WordPress 7.1 Beta 2 --- .github/workflows/coding-standards.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index e9a2359b7..23682803c 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -51,7 +51,7 @@ jobs: # Defines the WordPress and PHP Versions matrix to run tests on. strategy: matrix: - wp-versions: [ 'latest' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.1-beta2' ] #[ '6.1.1', 'latest' ] php-versions: [ '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ] #[ '7.3', '7.4', '8.0', '8.1' ] # Steps to install, configure and run tests diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1e6581ad2..708717bc1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - wp-version: [ 'latest' ] + wp-version: [ '7.1-beta2' ] php-version: [ '8.1', '8.2', '8.3', '8.4' ] test-group: - 'EndToEnd/broadcasts/blocks-shortcodes' From 43a19fa10d8a98437bd7b340179fcaa43b2f00ed Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 21 Jul 2026 15:03:43 +0800 Subject: [PATCH 2/9] Tests: Block editor: wait for iframe canvas before continuing --- tests/Support/Helper/WPGutenberg.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index f1d122f65..4f4b789c9 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -33,9 +33,15 @@ public function isGutenbergIFrameEditorEnabled() */ public function switchToGutenbergIFrameEditor($I) { - // Don't switch if the iframe doesn't exist e.g. Divi is active, which prevents - // the iframe block editor in WordPress 7.0+ from being used. - if ( ! $I->tryToSeeElement('iframe[name="editor-canvas"]')) { + // Wait for the iframe to mount. In WordPress 7.1+ the editor iframe + // can take longer to appear in the DOM than a tryToSeeElement() + // check, causing the switch to be silently skipped. Catch the timeout + // so that environments which intentionally have no iframe (e.g. Divi + // is active, which prevents the iframe block editor from being used) + // still fall through to the non-iframe path. + try { + $I->waitForElement('iframe[name="editor-canvas"]', 10); + } catch (\Facebook\WebDriver\Exception\TimeoutException $e) { return; } From f07b9bf2b2728d9973b959a4e70a1735f90f8c61 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 28 Jul 2026 12:05:32 +0800 Subject: [PATCH 3/9] Run Tests against WordPress 7.1 Beta 3 --- .github/workflows/coding-standards.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 23682803c..8b84285d2 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -51,7 +51,7 @@ jobs: # Defines the WordPress and PHP Versions matrix to run tests on. strategy: matrix: - wp-versions: [ '7.1-beta2' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.1-beta3' ] #[ '6.1.1', 'latest' ] php-versions: [ '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ] #[ '7.3', '7.4', '8.0', '8.1' ] # Steps to install, configure and run tests diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 708717bc1..afd950c24 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - wp-version: [ '7.1-beta2' ] + wp-version: [ '7.1-beta3' ] php-version: [ '8.1', '8.2', '8.3', '8.4' ] test-group: - 'EndToEnd/broadcasts/blocks-shortcodes' From 1dd88c0bcd25c1d226a7fc81a7637cd1ca451775 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Mon, 3 Aug 2026 15:01:51 +0800 Subject: [PATCH 4/9] Run Tests against WordPress 7.1 Beta 4 --- .github/workflows/coding-standards.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 8b84285d2..9cfc724b0 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -51,7 +51,7 @@ jobs: # Defines the WordPress and PHP Versions matrix to run tests on. strategy: matrix: - wp-versions: [ '7.1-beta3' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.1-beta4' ] #[ '6.1.1', 'latest' ] php-versions: [ '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ] #[ '7.3', '7.4', '8.0', '8.1' ] # Steps to install, configure and run tests diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index afd950c24..a6345c7e6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - wp-version: [ '7.1-beta3' ] + wp-version: [ '7.1-beta4' ] php-version: [ '8.1', '8.2', '8.3', '8.4' ] test-group: - 'EndToEnd/broadcasts/blocks-shortcodes' From 049f9eeef16b1da14046b229873da31c363e0414 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 4 Aug 2026 14:16:00 +0800 Subject: [PATCH 5/9] Tests: Update selectors for 7.1 accessibility compat. https://make.wordpress.org/core/2026/08/03/post-list-tables-row-headers-changed/ --- .../general/plugin-screens/PluginSettingsFormEntriesCest.php | 4 ++-- .../EndToEnd/general/plugin-screens/PluginSetupWizardCest.php | 4 ++-- tests/Support/Helper/ThirdPartyPlugin.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/EndToEnd/general/plugin-screens/PluginSettingsFormEntriesCest.php b/tests/EndToEnd/general/plugin-screens/PluginSettingsFormEntriesCest.php index 301eef3fd..8adfb8f74 100644 --- a/tests/EndToEnd/general/plugin-screens/PluginSettingsFormEntriesCest.php +++ b/tests/EndToEnd/general/plugin-screens/PluginSettingsFormEntriesCest.php @@ -462,8 +462,8 @@ public function testFormEntriesTableDeleteBulkAction(EndToEndTester $I) $I->waitForElementNotVisible('input#convertkit_form_entries_per_page'); // Select the first two entries. - $I->checkOption('tbody#the-list tr:first-child th.check-column input[type="checkbox"]'); - $I->checkOption('tbody#the-list tr:nth-child(2) th.check-column input[type="checkbox"]'); + $I->checkOption('tbody#the-list tr:first-child .check-column input[type="checkbox"]'); + $I->checkOption('tbody#the-list tr:nth-child(2) .check-column input[type="checkbox"]'); // Click Delete. $I->selectOption('#bulk-action-selector-top', 'Delete'); diff --git a/tests/EndToEnd/general/plugin-screens/PluginSetupWizardCest.php b/tests/EndToEnd/general/plugin-screens/PluginSetupWizardCest.php index 33ed640af..de00f95b9 100644 --- a/tests/EndToEnd/general/plugin-screens/PluginSetupWizardCest.php +++ b/tests/EndToEnd/general/plugin-screens/PluginSetupWizardCest.php @@ -53,7 +53,7 @@ public function testSetupWizardDoesNotDisplayWhenConfigured(EndToEndTester $I) $I->waitForElementVisible('table.plugins tr[data-slug=convertkit].active'); // Click Setup Wizard link underneath the Plugin in the WP_List_Table. - $I->click('tr[data-slug="convertkit"] td div.row-actions span.setup_wizard a'); + $I->click('tr[data-slug="convertkit"] .row-actions span.setup_wizard a'); } /** @@ -665,7 +665,7 @@ public function testSetupWizardLinkOnPluginsScreen(EndToEndTester $I) $I->waitForElementVisible('body.plugins-php'); // Click Setup Wizard link underneath the Plugin in the WP_List_Table. - $I->click('tr[data-slug="convertkit"] td div.row-actions span.setup_wizard a'); + $I->click('tr[data-slug="convertkit"] .row-actions span.setup_wizard a'); // Confirm expected setup wizard screen is displayed. $this->_seeExpectedSetupWizardScreen( diff --git a/tests/Support/Helper/ThirdPartyPlugin.php b/tests/Support/Helper/ThirdPartyPlugin.php index eb1d29141..93c91205e 100644 --- a/tests/Support/Helper/ThirdPartyPlugin.php +++ b/tests/Support/Helper/ThirdPartyPlugin.php @@ -43,7 +43,7 @@ public function activateThirdPartyPlugin($I, $name, $wizardExpectsToDisplay = tr default: // Activate the Plugin. - $I->checkOption('//*[@data-slug="' . $name . '"]/th/input'); + $I->checkOption('//*[@data-slug="' . $name . '"]//input[@type="checkbox"]'); $I->selectOption('action', 'activate-selected'); $I->click('#doaction'); break; @@ -114,7 +114,7 @@ public function deactivateThirdPartyPlugin($I, $name) default: // Deactivate the Plugin. - $I->checkOption('//*[@data-slug="' . $name . '"]/th/input'); + $I->checkOption('//*[@data-slug="' . $name . '"]//input[@type="checkbox"]'); $I->selectOption('action', 'deactivate-selected'); $I->click('#doaction'); break; From 20b96e7a2ea9d01821cd5b054df98b1ffcd8ea3c Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 4 Aug 2026 21:25:53 +0800 Subject: [PATCH 6/9] Tests: Block editor: Paragraphs: Confirm that text has been entered --- tests/Support/Helper/WPGutenberg.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index 4f4b789c9..c6c269fc1 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -233,6 +233,12 @@ public function addGutenbergParagraphBlock($I, $text) $I->click('.wp-block-post-content'); $I->fillField('.wp-block-post-content p[data-empty="true"]', $text); + // Wait for Gutenberg to finish committing the typed text to the DOM. + // fillField returns as soon as the keystrokes have been dispatched, but + // Gutenberg (particularly under the iframed editor enforced in WP 7.1) + // processes input asynchronously. + $I->waitForText(substr($text, -min(30, strlen($text))), 5, '.wp-block-post-content'); + // Switch back to main window. if ($this->isGutenbergIFrameEditorEnabled()) { $I->switchToIFrame(); From 987a4f761bde84cd5781173d40617b784a1b4474 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Wed, 5 Aug 2026 16:49:15 +0800 Subject: [PATCH 7/9] Tests: Divi: Switch to block editor iframe 7.1 forces the iframe regardless of block versions --- tests/Support/Helper/Divi5Theme.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/Support/Helper/Divi5Theme.php b/tests/Support/Helper/Divi5Theme.php index 344bcdab9..78cd4fe53 100644 --- a/tests/Support/Helper/Divi5Theme.php +++ b/tests/Support/Helper/Divi5Theme.php @@ -40,9 +40,19 @@ public function createDivi5Page($I, $title) // Edit Page. $I->amOnPage('/wp-admin/post.php?post=' . $pageID . '&action=edit'); + // Switch to the Gutenberg IFrame. + if ($I->isGutenbergIFrameEditorEnabled()) { + $I->switchToGutenbergIFrameEditor($I); + } + // Click "Use The Divi Builder" button. $I->click('#et-switch-to-divi'); + // Switch back to main window. + if ($I->isGutenbergIFrameEditorEnabled()) { + $I->switchToIFrame(); + } + // Wait for Divi Builder to load. $I->waitForElementVisible('body.et_pb_pagebuilder_layout'); } From 0f94f63fcaaab4460a4bc9362852ac399c04425a Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 6 Aug 2026 18:18:01 +0800 Subject: [PATCH 8/9] Tests: Block editor: Improve paragraph insertion performance and reliability --- tests/Support/Helper/WPGutenberg.php | 41 ++++++++++++---------------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index 5cd3f4f23..a4d9d4b2a 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -129,7 +129,7 @@ public function addGutenbergBlock($I, $blockName, $blockProgrammaticName, $block // Also add last segment after slash, for compatibility with older WordPress versions. $parts = explode('/', $blockProgrammaticName); if (count($parts) === 2) { - $potentialNames[] = $parts[1]; + array_unshift($potentialNames, $parts[1]); } } @@ -221,28 +221,15 @@ public function addGutenbergBlock($I, $blockName, $blockProgrammaticName, $block */ public function addGutenbergParagraphBlock($I, $text) { - // Add paragraph block. - $I->addGutenbergBlock($I, 'Paragraph', 'paragraph/paragraph'); - - // Switch to the Gutenberg IFrame. - if ($this->isGutenbergIFrameEditorEnabled()) { - $I->switchToGutenbergIFrameEditor($I); - } - - // Click the editor area and enter the text in the paragraph. - $I->click('.wp-block-post-content'); - $I->fillField('.wp-block-post-content p[data-empty="true"]', $text); - - // Wait for Gutenberg to finish committing the typed text to the DOM. - // fillField returns as soon as the keystrokes have been dispatched, but - // Gutenberg (particularly under the iframed editor enforced in WP 7.1) - // processes input asynchronously. - $I->waitForText(substr($text, -min(30, strlen($text))), 5, '.wp-block-post-content'); - - // Switch back to main window. - if ($this->isGutenbergIFrameEditorEnabled()) { - $I->switchToIFrame(); - } + // Programmatically insert a Paragraph block with the given content via + // Gutenberg's data store. Bypasses the block inserter + click + + // fillField sequence that WP 7.1's iframed editor makes unreliable. + // Resolve whichever window has it before dispatching. + $I->executeJS( + 'var w = (typeof wp !== "undefined" && wp.data) ? window : (document.querySelector("iframe[name=\"editor-canvas\"]") || {}).contentWindow;' . + 'w.wp.data.dispatch("core/block-editor").insertBlock(w.wp.blocks.createBlock("core/paragraph", {content: arguments[0]}));', + [ $text ] + ); } /** @@ -414,12 +401,18 @@ public function seeGutenbergBlockAvailable($I, $blockName, $blockProgrammaticNam $I->wait(2); // Build potential programmatic block names. + // Try the short name (last segment after any `/`) FIRST — modern + // WordPress uses a class like `editor-block-list-item-paragraph`, + // which matches via a fast CSS selector. The full `paragraph/paragraph` + // form only matches an XPath that DOM classes can never satisfy (CSS + // classes can't contain `/`), so leaving it first burned the full + // waitForElementVisible timeout on every insertion. $potentialNames = [ $blockProgrammaticName ]; if (strpos($blockProgrammaticName, '/') !== false) { // Also add last segment after slash, for compatibility with older WordPress versions. $parts = explode('/', $blockProgrammaticName); if (count($parts) === 2) { - $potentialNames[] = $parts[1]; + array_unshift($potentialNames, $parts[1]); } } From 9cc7759d4087e91f76a0fbca19b4baacbe5c2024 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 6 Aug 2026 18:18:08 +0800 Subject: [PATCH 9/9] Run tests against WordPress 7.1 RC1 --- .github/workflows/coding-standards.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 9cfc724b0..e31b45591 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -51,7 +51,7 @@ jobs: # Defines the WordPress and PHP Versions matrix to run tests on. strategy: matrix: - wp-versions: [ '7.1-beta4' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.1-RC1' ] #[ '6.1.1', 'latest' ] php-versions: [ '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ] #[ '7.3', '7.4', '8.0', '8.1' ] # Steps to install, configure and run tests diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a6345c7e6..c82e1a1e8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - wp-version: [ '7.1-beta4' ] + wp-version: [ '7.1-RC1' ] php-version: [ '8.1', '8.2', '8.3', '8.4' ] test-group: - 'EndToEnd/broadcasts/blocks-shortcodes'