diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index e9a2359b7..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: [ 'latest' ] #[ '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 1e6581ad2..a6345c7e6 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-beta4' ] php-version: [ '8.1', '8.2', '8.3', '8.4' ] test-group: - 'EndToEnd/broadcasts/blocks-shortcodes' 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/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'); } 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; diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index f1d122f65..c6c269fc1 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; } @@ -227,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();