From b663bb65fbc4f11c47ad3eb50f4f48464942dde0 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Sat, 21 Feb 2026 12:23:32 +0800 Subject: [PATCH 01/28] Run Tests against WordPress 7.0 Beta 1 --- .github/workflows/coding-standards.yml | 2 +- .github/workflows/tests.yml | 2 +- tests/Support/Data/dump.sql | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 201631404..638b4c295 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -35,7 +35,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.0-beta1' ] #[ '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 5897b2574..0cbba9036 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,7 +53,7 @@ jobs: strategy: fail-fast: false matrix: - wp-versions: [ 'latest' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.0-beta1' ] #[ '6.1.1', 'latest' ] php-versions: [ '8.1', '8.2', '8.3', '8.4' ] #[ '7.4', '8.0', '8.1' ] # Folder names within the 'tests' folder to run tests in parallel. diff --git a/tests/Support/Data/dump.sql b/tests/Support/Data/dump.sql index ba1ffe735..713e442b6 100644 --- a/tests/Support/Data/dump.sql +++ b/tests/Support/Data/dump.sql @@ -168,7 +168,7 @@ INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload` (43, 'html_type', 'text/html', 'on'), (44, 'use_trackback', '0', 'on'), (45, 'default_role', 'subscriber', 'on'), -(46, 'db_version', '60717', 'on'), +(46, 'db_version', '61696', 'on'), (47, 'uploads_use_yearmonth_folders', '1', 'on'), (48, 'upload_path', '', 'on'), (49, 'blog_public', '1', 'on'), @@ -221,7 +221,7 @@ INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload` (96, 'auto_update_core_minor', 'enabled', 'on'), (97, 'auto_update_core_major', 'enabled', 'on'), (98, 'wp_force_deactivated_plugins', 'a:0:{}', 'on'), -(99, 'initial_db_version', '60717', 'on'), +(99, 'initial_db_version', '61696', 'on'), (100, 'wp_user_roles', 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:61:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:13:\"promote_users\";b:1;s:18:\"edit_theme_options\";b:1;s:13:\"delete_themes\";b:1;s:6:\"export\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}', 'on'), (101, 'fresh_site', '1', 'on'), (102, 'user_count', '1', 'off'), From 5d56a4776e12ea130a9ea9dee16cd014ff8fd45b Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 24 Feb 2026 08:52:37 +0800 Subject: [PATCH 02/28] Tests: Bulk Edit: Update option label to match WordPress 7.0 beta --- tests/Support/Helper/WPBulkEdit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Support/Helper/WPBulkEdit.php b/tests/Support/Helper/WPBulkEdit.php index 4c1ba5614..ed9081130 100644 --- a/tests/Support/Helper/WPBulkEdit.php +++ b/tests/Support/Helper/WPBulkEdit.php @@ -89,7 +89,7 @@ public function openBulkEdit($I, $postType, $postIDs) } // Select Edit from the Bulk actions dropdown. - $I->selectOption('#bulk-action-selector-top', 'Edit'); + $I->selectOption('#bulk-action-selector-top', 'Bulk edit'); // Click Apply button. $I->click('#doaction'); From 1e831991ef8bcf2bd35f2a4d61f4f92334598686 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 3 Mar 2026 17:21:48 +0800 Subject: [PATCH 03/28] Run tests against WordPress 7.0 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 638b4c295..ac0543af7 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -35,7 +35,7 @@ jobs: # Defines the WordPress and PHP Versions matrix to run tests on. strategy: matrix: - wp-versions: [ '7.0-beta1' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.0-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 0cbba9036..4b89b2119 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,7 +53,7 @@ jobs: strategy: fail-fast: false matrix: - wp-versions: [ '7.0-beta1' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.0-beta2' ] #[ '6.1.1', 'latest' ] php-versions: [ '8.1', '8.2', '8.3', '8.4' ] #[ '7.4', '8.0', '8.1' ] # Folder names within the 'tests' folder to run tests in parallel. From 01b3d4cf1873237da9d40921c198805141e4d190 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 3 Mar 2026 18:54:23 +0800 Subject: [PATCH 04/28] Fix: Use named ID for pre-publish action toggles --- .../broadcasts/import-export/BroadcastsExportPostCest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/EndToEnd/broadcasts/import-export/BroadcastsExportPostCest.php b/tests/EndToEnd/broadcasts/import-export/BroadcastsExportPostCest.php index a276f5f2e..4d7494593 100644 --- a/tests/EndToEnd/broadcasts/import-export/BroadcastsExportPostCest.php +++ b/tests/EndToEnd/broadcasts/import-export/BroadcastsExportPostCest.php @@ -168,7 +168,7 @@ public function testCreateBroadcastWhenEnabledInPost(EndToEndTester $I) $I->waitForElementVisible('.editor-post-publish-panel__header-publish-button'); // Enable the Create Broadcast option. - $I->click('.convertkit-pre-publish-actions #inspector-toggle-control-0'); + $I->click('.convertkit-pre-publish-actions #convertkit_action_broadcast_export'); // Publish the Post. $I->clickPublishOnPrePublishChecksForGutenbergPage($I); From b5c18c16f7115ecd8a11a2f39cb4af5300a88a7d Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 3 Mar 2026 19:04:55 +0800 Subject: [PATCH 05/28] Tests: Switch to main iframe before switching to the block editor --- tests/Support/Helper/KitPlugin.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Support/Helper/KitPlugin.php b/tests/Support/Helper/KitPlugin.php index 282d12184..9c991cb37 100644 --- a/tests/Support/Helper/KitPlugin.php +++ b/tests/Support/Helper/KitPlugin.php @@ -813,6 +813,7 @@ public function testBlockNoCredentialsPopupWindow($I, $blockName, $expectedMessa // Switch to the Gutenberg IFrame. if ($I->isGutenbergIFrameEditorEnabled()) { + $I->switchToIFrame(); $I->switchToGutenbergIFrameEditor($I); } From ec6f1e6bb75bbbf6e1fd10e7adf6a3eca2aa6aa9 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Mon, 9 Mar 2026 10:43:11 +0800 Subject: [PATCH 06/28] Run tests against WordPress 7.0 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 ac0543af7..cfae53dbe 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -35,7 +35,7 @@ jobs: # Defines the WordPress and PHP Versions matrix to run tests on. strategy: matrix: - wp-versions: [ '7.0-beta2' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.0-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 5ef70cbc7..537f33e42 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,7 +53,7 @@ jobs: strategy: fail-fast: false matrix: - wp-versions: [ '7.0-beta2' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.0-beta3' ] #[ '6.1.1', 'latest' ] php-versions: [ '8.1', '8.2', '8.3', '8.4' ] #[ '7.4', '8.0', '8.1' ] # Folder names within the 'tests' folder to run tests in parallel. From 4e0d7531929cf55d9490207a7f3f080a434fc7e2 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 10:15:03 +0800 Subject: [PATCH 07/28] Run Tests against WordPress 7.0 Beta 5 --- .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 cfae53dbe..4edfb84c3 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -35,7 +35,7 @@ jobs: # Defines the WordPress and PHP Versions matrix to run tests on. strategy: matrix: - wp-versions: [ '7.0-beta3' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.0-beta5' ] #[ '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 537f33e42..5797fa509 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,7 +53,7 @@ jobs: strategy: fail-fast: false matrix: - wp-versions: [ '7.0-beta3' ] #[ '6.1.1', 'latest' ] + wp-versions: [ '7.0-beta5' ] #[ '6.1.1', 'latest' ] php-versions: [ '8.1', '8.2', '8.3', '8.4' ] #[ '7.4', '8.0', '8.1' ] # Folder names within the 'tests' folder to run tests in parallel. From 719fb7ee894065bd24e23039a4e9c82b626cf760 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 10:24:32 +0800 Subject: [PATCH 08/28] Bump db_version to 61833 --- tests/Support/Data/dump.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Support/Data/dump.sql b/tests/Support/Data/dump.sql index 713e442b6..142f4cf2a 100644 --- a/tests/Support/Data/dump.sql +++ b/tests/Support/Data/dump.sql @@ -168,7 +168,7 @@ INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload` (43, 'html_type', 'text/html', 'on'), (44, 'use_trackback', '0', 'on'), (45, 'default_role', 'subscriber', 'on'), -(46, 'db_version', '61696', 'on'), +(46, 'db_version', '61833', 'on'), (47, 'uploads_use_yearmonth_folders', '1', 'on'), (48, 'upload_path', '', 'on'), (49, 'blog_public', '1', 'on'), @@ -221,7 +221,7 @@ INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload` (96, 'auto_update_core_minor', 'enabled', 'on'), (97, 'auto_update_core_major', 'enabled', 'on'), (98, 'wp_force_deactivated_plugins', 'a:0:{}', 'on'), -(99, 'initial_db_version', '61696', 'on'), +(99, 'initial_db_version', '61833', 'on'), (100, 'wp_user_roles', 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:61:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:13:\"promote_users\";b:1;s:18:\"edit_theme_options\";b:1;s:13:\"delete_themes\";b:1;s:6:\"export\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}', 'on'), (101, 'fresh_site', '1', 'on'), (102, 'user_count', '1', 'off'), From f5e0c4f07c2777e67dc1cb7bcbadc09c4f18878e Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 12:07:26 +0800 Subject: [PATCH 09/28] Tests: Posts to Broadcasts: Update selectors for Gutenberg --- .../broadcasts/import-export/BroadcastsExportPostCest.php | 6 +++--- tests/Support/Helper/WPGutenberg.php | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/EndToEnd/broadcasts/import-export/BroadcastsExportPostCest.php b/tests/EndToEnd/broadcasts/import-export/BroadcastsExportPostCest.php index 4d7494593..34d4821a3 100644 --- a/tests/EndToEnd/broadcasts/import-export/BroadcastsExportPostCest.php +++ b/tests/EndToEnd/broadcasts/import-export/BroadcastsExportPostCest.php @@ -164,11 +164,11 @@ public function testCreateBroadcastWhenEnabledInPost(EndToEndTester $I) // Click the Publish button. $I->click('.editor-post-publish-button__button'); - // When the pre-publish panel displays, confirm no Create Broadcast option exists. - $I->waitForElementVisible('.editor-post-publish-panel__header-publish-button'); + // Wait for the Create Broadcast option to be visible. + $I->waitForElementVisible('.convertkit-pre-publish-actions.is-opened'); // Enable the Create Broadcast option. - $I->click('.convertkit-pre-publish-actions #convertkit_action_broadcast_export'); + $I->click('.convertkit-pre-publish-actions.is-opened input#convertkit_action_broadcast_export'); // Publish the Post. $I->clickPublishOnPrePublishChecksForGutenbergPage($I); diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index e1ae82bf1..a5774b0e2 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -604,11 +604,11 @@ function($I) { 15 ); - // Wait for confirmation that the Page published. - $I->waitForElementVisible('.post-publish-panel__postpublish-buttons a.components-button', 30); + // Wait for the snackbar notification that the post has been published. + $I->waitForElementVisible('div.components-snackbar__content a.components-snackbar__action', 30); - // Return URL from 'View page' button. - return $I->grabAttributeFrom('.post-publish-panel__postpublish-buttons a.components-button', 'href'); + // Return the URL from the 'View Post' button in the snackbar. + return $I->grabAttributeFrom('div.components-snackbar__content a.components-snackbar__action', 'href'); } /** From a6f48dbbdee6809f975dbaa8e0550a00085b07cc Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 12:07:35 +0800 Subject: [PATCH 10/28] Tests: Broadcasts: Wait for success message to avoid flaky tests --- tests/Support/Helper/KitBroadcasts.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/Support/Helper/KitBroadcasts.php b/tests/Support/Helper/KitBroadcasts.php index 60de6e27f..9b1b3287d 100644 --- a/tests/Support/Helper/KitBroadcasts.php +++ b/tests/Support/Helper/KitBroadcasts.php @@ -54,6 +54,9 @@ public function setupKitPluginBroadcasts($I, $settings = false) // Click the Save Changes button. $I->click('Save Changes'); + // Confirm that the settings were saved. + $I->waitForElementVisible('.notice-success'); + // Check that no PHP warnings or notices were output. $I->checkNoWarningsAndNoticesOnScreen($I); } From ff39bd9a29693c1870e6b516d6f471d415d0d48d Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 12:26:51 +0800 Subject: [PATCH 11/28] Tests: Check for paragraph with class 7.0 adds the `wp-block-paragraph` to `p` elements --- tests/Support/Helper/KitForms.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Support/Helper/KitForms.php b/tests/Support/Helper/KitForms.php index f4525c36c..2a2f20ae4 100644 --- a/tests/Support/Helper/KitForms.php +++ b/tests/Support/Helper/KitForms.php @@ -53,7 +53,7 @@ public function seeFormOutput($I, $formID, $position = false, $element = false, // The block editor automatically adds CSS classes to some elements. switch ( $element ) { case 'p': - $I->seeInSource('<' . $element . '>Item #' . $elementIndex . '
seeInSource('<' . $element . ' class="wp-block-paragraph">Item #' . $elementIndex . ' Date: Thu, 19 Mar 2026 12:42:42 +0800 Subject: [PATCH 12/28] Tests: Improve reliability of completing block editor title --- tests/Support/Helper/Divi5Theme.php | 1 + tests/Support/Helper/DiviBuilder.php | 1 + tests/Support/Helper/WPGutenberg.php | 1 + 3 files changed, 3 insertions(+) diff --git a/tests/Support/Helper/Divi5Theme.php b/tests/Support/Helper/Divi5Theme.php index 4a3077432..a7c020614 100644 --- a/tests/Support/Helper/Divi5Theme.php +++ b/tests/Support/Helper/Divi5Theme.php @@ -28,6 +28,7 @@ public function createDivi5Page($I, $title, $configureMetaBox = true) $I->waitForElementVisible('body.post-new-php'); // Define the Title. + $I->waitForElementVisible('.editor-post-title__input'); $I->fillField('.editor-post-title__input', $title); // Configure metabox's Form setting = None, ensuring we only test the Divi block. diff --git a/tests/Support/Helper/DiviBuilder.php b/tests/Support/Helper/DiviBuilder.php index 5c7ff3402..2cf65550d 100644 --- a/tests/Support/Helper/DiviBuilder.php +++ b/tests/Support/Helper/DiviBuilder.php @@ -90,6 +90,7 @@ public function createDiviPageInFrontendEditor($I, $title, $configureMetaBox = t $I->waitForElementVisible('body.post-new-php'); // Define the Title. + $I->waitForElementVisible('.editor-post-title__input'); $I->fillField('.editor-post-title__input', $title); // Configure metabox's Form setting = None, ensuring we only test the block in Gutenberg. diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index a5774b0e2..a9630089b 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -57,6 +57,7 @@ public function addGutenbergPage($I, $postType = 'page', $title = 'Gutenberg Tit } // Define the Title. + $I->waitForElementVisible('.editor-post-title__input'); $I->fillField('.editor-post-title__input', $title); // Switch back to main window. From b2564989b5499f6210726e4b413fe8a56b1de696 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 13:37:56 +0800 Subject: [PATCH 13/28] Tests: Improve Reliability of Divi Tests --- tests/Support/Helper/Divi5Theme.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Support/Helper/Divi5Theme.php b/tests/Support/Helper/Divi5Theme.php index 4a3077432..accef5dbb 100644 --- a/tests/Support/Helper/Divi5Theme.php +++ b/tests/Support/Helper/Divi5Theme.php @@ -128,6 +128,7 @@ public function saveDivi5PageAndViewOnFrontend($I) $I->waitForElementNotVisible('.et-vb-page-bar-dropdown-button--saving'); // Load the Page on the frontend site. + $I->waitForElementVisible('div[aria-label="Exit Dropdown"]'); $I->click('div[aria-label="Exit Dropdown"]'); $I->waitForElementVisible('button[value="view-page"]'); $I->click('button[value="view-page"]'); From 1cb80732c1c9d98c0a117e8c4f968872aea2b450 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 13:54:28 +0800 Subject: [PATCH 14/28] Divi: Add page using helper, as Divi is iframed in 7.0 --- tests/Support/Helper/Divi5Theme.php | 13 ++++--------- tests/Support/Helper/DiviBuilder.php | 29 ++++++++++++++-------------- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/tests/Support/Helper/Divi5Theme.php b/tests/Support/Helper/Divi5Theme.php index a7c020614..1ed430f63 100644 --- a/tests/Support/Helper/Divi5Theme.php +++ b/tests/Support/Helper/Divi5Theme.php @@ -21,15 +21,10 @@ class Divi5Theme extends \Codeception\Module public function createDivi5Page($I, $title, $configureMetaBox = true) { // Add a Page using the Gutenberg editor. - // We don't use addGutenbergPage(), as when the Divi Builder is used, the iframed Gutenberg editor is not used, - // and addGutenbergPage() may switch to an iframe based on the value of the WORDPRESS_V3_BLOCK_EDITOR_ENABLED environment variable. - // Navigate to Post Type (e.g. Pages / Posts) > Add New. - $I->amOnAdminPage('post-new.php?post_type=page'); - $I->waitForElementVisible('body.post-new-php'); - - // Define the Title. - $I->waitForElementVisible('.editor-post-title__input'); - $I->fillField('.editor-post-title__input', $title); + $I->addGutenbergPage( + $I, + title: $title + ); // Configure metabox's Form setting = None, ensuring we only test the Divi block. if ($configureMetaBox) { diff --git a/tests/Support/Helper/DiviBuilder.php b/tests/Support/Helper/DiviBuilder.php index 2cf65550d..4c58fc3b8 100644 --- a/tests/Support/Helper/DiviBuilder.php +++ b/tests/Support/Helper/DiviBuilder.php @@ -83,15 +83,10 @@ public function createDiviPageInBackendEditor($I, $title) public function createDiviPageInFrontendEditor($I, $title, $configureMetaBox = true) { // Add a Page using the Gutenberg editor. - // We don't use addGutenbergPage(), as when the Divi Builder is used, the iframed Gutenberg editor is not used, - // and addGutenbergPage() may switch to an iframe based on the value of the WORDPRESS_V3_BLOCK_EDITOR_ENABLED environment variable. - // Navigate to Post Type (e.g. Pages / Posts) > Add New. - $I->amOnAdminPage('post-new.php?post_type=page'); - $I->waitForElementVisible('body.post-new-php'); - - // Define the Title. - $I->waitForElementVisible('.editor-post-title__input'); - $I->fillField('.editor-post-title__input', $title); + $I->addGutenbergPage( + $I, + title: $title + ); // Configure metabox's Form setting = None, ensuring we only test the block in Gutenberg. if ($configureMetaBox) { @@ -107,15 +102,19 @@ public function createDiviPageInFrontendEditor($I, $title, $configureMetaBox = t // Publish Page. $url = $I->publishGutenbergPage($I); - // Click Divi Builder button inside the Gutenberg editor. - $I->click('Use Divi Builder'); + // Load page. + $I->amOnUrl($url); - // Reload page to dismiss modal. - $I->wait(5); - $I->amOnUrl($url . '?et_fb=1&PageSpeed=off'); + // Enable the Divi Builder. + $I->waitForElementVisible('#wp-admin-bar-et-use-visual-builder'); + $I->click('#wp-admin-bar-et-use-visual-builder a'); + + // Wait for the welcome modal and dismiss it. + $I->waitForElementVisible('.et-core-modal-action-dont-restore'); + $I->click('.et-core-modal-action-dont-restore'); // Click Build from scratch button. - $I->waitForElementVisible('.et-fb-page-creation-card-build_from_scratch', 30); + $I->waitForElementVisible('.et-fb-page-creation-card-build_from_scratch'); $I->click('Start Building', '.et-fb-page-creation-card-build_from_scratch'); return $url; From 05e9bb252cd2a24c0a0c0b05be880229116ba340 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 13:54:51 +0800 Subject: [PATCH 15/28] Coding standards --- tests/Support/Helper/DiviBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Support/Helper/DiviBuilder.php b/tests/Support/Helper/DiviBuilder.php index 4c58fc3b8..9d0384c67 100644 --- a/tests/Support/Helper/DiviBuilder.php +++ b/tests/Support/Helper/DiviBuilder.php @@ -108,7 +108,7 @@ public function createDiviPageInFrontendEditor($I, $title, $configureMetaBox = t // Enable the Divi Builder. $I->waitForElementVisible('#wp-admin-bar-et-use-visual-builder'); $I->click('#wp-admin-bar-et-use-visual-builder a'); - + // Wait for the welcome modal and dismiss it. $I->waitForElementVisible('.et-core-modal-action-dont-restore'); $I->click('.et-core-modal-action-dont-restore'); From 43378d242f4d732636287cb0b8f8b49039ccc760 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 13:56:14 +0800 Subject: [PATCH 16/28] Divi 4: Detect Welcome Modal and dismiss, instead of waiting 5 seconds --- tests/Support/Helper/DiviBuilder.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/Support/Helper/DiviBuilder.php b/tests/Support/Helper/DiviBuilder.php index 5c7ff3402..3587e55d9 100644 --- a/tests/Support/Helper/DiviBuilder.php +++ b/tests/Support/Helper/DiviBuilder.php @@ -106,15 +106,19 @@ public function createDiviPageInFrontendEditor($I, $title, $configureMetaBox = t // Publish Page. $url = $I->publishGutenbergPage($I); - // Click Divi Builder button inside the Gutenberg editor. - $I->click('Use Divi Builder'); + // Load page. + $I->amOnUrl($url); + + // Enable the Divi Builder. + $I->waitForElementVisible('#wp-admin-bar-et-use-visual-builder'); + $I->click('#wp-admin-bar-et-use-visual-builder a'); - // Reload page to dismiss modal. - $I->wait(5); - $I->amOnUrl($url . '?et_fb=1&PageSpeed=off'); + // Wait for the welcome modal and dismiss it. + $I->waitForElementVisible('.et-core-modal-action-dont-restore'); + $I->click('.et-core-modal-action-dont-restore'); // Click Build from scratch button. - $I->waitForElementVisible('.et-fb-page-creation-card-build_from_scratch', 30); + $I->waitForElementVisible('.et-fb-page-creation-card-build_from_scratch'); $I->click('Start Building', '.et-fb-page-creation-card-build_from_scratch'); return $url; From 5bf35e525822e1afa19b7e57ff47911e06d4c387 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 13:58:02 +0800 Subject: [PATCH 17/28] Run Divi Tests in PHP 8.1 only to check results --- .github/workflows/tests.yml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6cf311f85..c0026f103 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -54,28 +54,12 @@ jobs: fail-fast: false matrix: wp-versions: [ 'latest' ] #[ '6.1.1', 'latest' ] - php-versions: [ '8.1', '8.2', '8.3', '8.4' ] #[ '7.4', '8.0', '8.1' ] + php-versions: [ '8.1' ] #[ '7.4', '8.0', '8.1' ] # Folder names within the 'tests' folder to run tests in parallel. test-groups: [ - 'EndToEnd/broadcasts/blocks-shortcodes', - 'EndToEnd/broadcasts/import-export', - 'EndToEnd/forms/blocks-shortcodes', - 'EndToEnd/forms/general', - 'EndToEnd/forms/post-types', - 'EndToEnd/general/other', - 'EndToEnd/general/plugin-screens', 'EndToEnd/integrations/divi-builder', - 'EndToEnd/integrations/divi-theme', - 'EndToEnd/integrations/other', - 'EndToEnd/integrations/wlm', - 'EndToEnd/integrations/woocommerce', - 'EndToEnd/landing-pages', - 'EndToEnd/products', - 'EndToEnd/restrict-content/general', - 'EndToEnd/restrict-content/post-types', - 'EndToEnd/tags', - 'Integration' + 'EndToEnd/integrations/divi-theme' ] # Steps to install, configure and run tests From 4a4ea1bdb327dc1407457194d979237f200a36fa Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 14:23:24 +0800 Subject: [PATCH 18/28] Conditionally dismiss modal --- tests/Support/Helper/DiviBuilder.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/Support/Helper/DiviBuilder.php b/tests/Support/Helper/DiviBuilder.php index 3587e55d9..e015fdca6 100644 --- a/tests/Support/Helper/DiviBuilder.php +++ b/tests/Support/Helper/DiviBuilder.php @@ -113,9 +113,14 @@ public function createDiviPageInFrontendEditor($I, $title, $configureMetaBox = t $I->waitForElementVisible('#wp-admin-bar-et-use-visual-builder'); $I->click('#wp-admin-bar-et-use-visual-builder a'); - // Wait for the welcome modal and dismiss it. - $I->waitForElementVisible('.et-core-modal-action-dont-restore'); - $I->click('.et-core-modal-action-dont-restore'); + // Dismiss modal if displayed. + // May have been dismissed by other tests in the suite e.g. DiviFormCest. + try { + $I->waitForElementVisible('.et-core-modal-action-dont-restore'); + $I->click('.et-core-modal-action-dont-restore'); + } catch ( \Facebook\WebDriver\Exception\NoSuchElementException $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch + // No modal exists, so nothing to dismiss. + } // Click Build from scratch button. $I->waitForElementVisible('.et-fb-page-creation-card-build_from_scratch'); From 21835fd46bb251830ce49ea8de34c3b99bbebd99 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 14:39:50 +0800 Subject: [PATCH 19/28] Exit Divi 5 Builder instead of trying to use the dropdown --- tests/Support/Helper/Divi5Theme.php | 15 +++++----- tests/Support/Helper/WPGutenberg.php | 44 ++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/tests/Support/Helper/Divi5Theme.php b/tests/Support/Helper/Divi5Theme.php index accef5dbb..6579ec8c9 100644 --- a/tests/Support/Helper/Divi5Theme.php +++ b/tests/Support/Helper/Divi5Theme.php @@ -114,7 +114,8 @@ public function insertDivi5RowWithModule($I, $name, $programmaticName, $fieldNam } /** - * Helper method to save a page created using Divi 5. + * Helper method to save a page created using Divi 5, and view + * it on the frontend site. * * @since 3.2.1 * @@ -127,13 +128,11 @@ public function saveDivi5PageAndViewOnFrontend($I) $I->click('.et-vb-page-bar-dropdown-button.et-vb-page-bar-dropdown-button--fill button.et-vb-page-bar-action-button'); $I->waitForElementNotVisible('.et-vb-page-bar-dropdown-button--saving'); - // Load the Page on the frontend site. - $I->waitForElementVisible('div[aria-label="Exit Dropdown"]'); - $I->click('div[aria-label="Exit Dropdown"]'); - $I->waitForElementVisible('button[value="view-page"]'); - $I->click('button[value="view-page"]'); + // Exit back to the block editor. + $I->waitForElementVisible('.et-vb-page-bar-exit-button a.et-vb-page-bar-action-button'); + $I->click('.et-vb-page-bar-exit-button a.et-vb-page-bar-action-button'); - // Check that no PHP warnings or notices were output. - $I->checkNoWarningsAndNoticesOnScreen($I); + // Save and view page. + $I->updateAndViewGutenbergPage($I); } } diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index e1ae82bf1..30ff986b9 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -584,6 +584,50 @@ public function publishGutenbergPage($I) return $I->clickPublishOnPrePublishChecksForGutenbergPage($I); } + /** + * Update a published Page, Post or Custom Post Type. loading it on the frontend web site. + * + * @since 3.3.0 + * + * @param EndToEndTester $I EndToEnd Tester. + */ + public function updateAndViewGutenbergPage($I) + { + // Save published page. + $url = $I->updateGutenbergPage($I); + + // Load the Page on the frontend site. + $I->amOnUrl($url); + + // Wait for frontend web site to load. + $I->waitForElementVisible('body'); + + // Check that no PHP warnings or notices were output. + $I->checkNoWarningsAndNoticesOnScreen($I); + + // Return URL. + return $url; + } + + /** + * Update a published Page, Post or Custom Post Type. + * + * @since 3.3.0 + * + * @param EndToEndTester $I EndToEnd Tester. + */ + public function updateGutenbergPage($I) + { + $I->waitForElementVisible('.editor-post-publish-button__button'); + $I->click('.editor-post-publish-button__button'); + + // Wait for confirmation that the Page updated. + $I->waitForElementVisible('.components-snackbar__content a.components-snackbar__action'); + + // Return URL from 'View page' button inside the snackbar. + return $I->grabAttributeFrom('.components-snackbar__content a.components-snackbar__action', 'href'); + } + /** * Clicks the Publish button the pre-publish checks sidebar, confirming the Page, Post or Custom Post Type * published and returning its URL. From 762ad37974e8fda70608f55158ccc22a04366299 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 14:56:14 +0800 Subject: [PATCH 20/28] Reinstate all tests --- .github/workflows/tests.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c0026f103..6cf311f85 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -54,12 +54,28 @@ jobs: fail-fast: false matrix: wp-versions: [ 'latest' ] #[ '6.1.1', 'latest' ] - php-versions: [ '8.1' ] #[ '7.4', '8.0', '8.1' ] + php-versions: [ '8.1', '8.2', '8.3', '8.4' ] #[ '7.4', '8.0', '8.1' ] # Folder names within the 'tests' folder to run tests in parallel. test-groups: [ + 'EndToEnd/broadcasts/blocks-shortcodes', + 'EndToEnd/broadcasts/import-export', + 'EndToEnd/forms/blocks-shortcodes', + 'EndToEnd/forms/general', + 'EndToEnd/forms/post-types', + 'EndToEnd/general/other', + 'EndToEnd/general/plugin-screens', 'EndToEnd/integrations/divi-builder', - 'EndToEnd/integrations/divi-theme' + 'EndToEnd/integrations/divi-theme', + 'EndToEnd/integrations/other', + 'EndToEnd/integrations/wlm', + 'EndToEnd/integrations/woocommerce', + 'EndToEnd/landing-pages', + 'EndToEnd/products', + 'EndToEnd/restrict-content/general', + 'EndToEnd/restrict-content/post-types', + 'EndToEnd/tags', + 'Integration' ] # Steps to install, configure and run tests From 974644cefd56fb82477e22b4cddf8761167e2bce Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 15:21:05 +0800 Subject: [PATCH 21/28] Use a more reliable method of fetching current URL --- tests/Support/Helper/Divi5Theme.php | 10 +++---- tests/Support/Helper/WPGutenberg.php | 44 ---------------------------- 2 files changed, 5 insertions(+), 49 deletions(-) diff --git a/tests/Support/Helper/Divi5Theme.php b/tests/Support/Helper/Divi5Theme.php index 6579ec8c9..41f1b3726 100644 --- a/tests/Support/Helper/Divi5Theme.php +++ b/tests/Support/Helper/Divi5Theme.php @@ -128,11 +128,11 @@ public function saveDivi5PageAndViewOnFrontend($I) $I->click('.et-vb-page-bar-dropdown-button.et-vb-page-bar-dropdown-button--fill button.et-vb-page-bar-action-button'); $I->waitForElementNotVisible('.et-vb-page-bar-dropdown-button--saving'); - // Exit back to the block editor. - $I->waitForElementVisible('.et-vb-page-bar-exit-button a.et-vb-page-bar-action-button'); - $I->click('.et-vb-page-bar-exit-button a.et-vb-page-bar-action-button'); + // View page. + $url = $_ENV['WORDPRESS_URL'] . wp_parse_url($I->grabFromCurrentUrl(), PHP_URL_PATH); + $I->amOnUrl($url); - // Save and view page. - $I->updateAndViewGutenbergPage($I); + // Check that no PHP warnings or notices were output. + $I->checkNoWarningsAndNoticesOnScreen($I); } } diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index 30ff986b9..e1ae82bf1 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -584,50 +584,6 @@ public function publishGutenbergPage($I) return $I->clickPublishOnPrePublishChecksForGutenbergPage($I); } - /** - * Update a published Page, Post or Custom Post Type. loading it on the frontend web site. - * - * @since 3.3.0 - * - * @param EndToEndTester $I EndToEnd Tester. - */ - public function updateAndViewGutenbergPage($I) - { - // Save published page. - $url = $I->updateGutenbergPage($I); - - // Load the Page on the frontend site. - $I->amOnUrl($url); - - // Wait for frontend web site to load. - $I->waitForElementVisible('body'); - - // Check that no PHP warnings or notices were output. - $I->checkNoWarningsAndNoticesOnScreen($I); - - // Return URL. - return $url; - } - - /** - * Update a published Page, Post or Custom Post Type. - * - * @since 3.3.0 - * - * @param EndToEndTester $I EndToEnd Tester. - */ - public function updateGutenbergPage($I) - { - $I->waitForElementVisible('.editor-post-publish-button__button'); - $I->click('.editor-post-publish-button__button'); - - // Wait for confirmation that the Page updated. - $I->waitForElementVisible('.components-snackbar__content a.components-snackbar__action'); - - // Return URL from 'View page' button inside the snackbar. - return $I->grabAttributeFrom('.components-snackbar__content a.components-snackbar__action', 'href'); - } - /** * Clicks the Publish button the pre-publish checks sidebar, confirming the Page, Post or Custom Post Type * published and returning its URL. From d2318acd124ab7de6770f15e2259bb159d6be038 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 16:05:59 +0800 Subject: [PATCH 22/28] Publishing: Wait for panel to be visible, not button --- tests/Support/Helper/WPGutenberg.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index e1ae82bf1..3788980e0 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -595,9 +595,9 @@ public function publishGutenbergPage($I) public function clickPublishOnPrePublishChecksForGutenbergPage($I) { // Click publish on the pre-publish panel. - $I->waitForElementVisible('.editor-post-publish-panel__header-publish-button'); + $I->waitForElementVisible('.editor-post-publish-panel'); $I->performOn( - '.editor-post-publish-panel__header-publish-button', + '.editor-post-publish-panel .editor-post-publish-panel__header-publish-button', function($I) { $I->click('.editor-post-publish-panel__header-publish-button button'); }, From bc0fb9e4a4c96cefb67839b38f819816b85ae93e Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 18:21:39 +0800 Subject: [PATCH 23/28] Try another method to detect pre-publish actions --- tests/Support/Helper/WPGutenberg.php | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index 3788980e0..4182d96e0 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -594,21 +594,22 @@ public function publishGutenbergPage($I) */ public function clickPublishOnPrePublishChecksForGutenbergPage($I) { - // Click publish on the pre-publish panel. - $I->waitForElementVisible('.editor-post-publish-panel'); - $I->performOn( - '.editor-post-publish-panel .editor-post-publish-panel__header-publish-button', - function($I) { - $I->click('.editor-post-publish-panel__header-publish-button button'); - }, - 15 - ); + // Wait for publish button specifically. + $I->waitForElementVisible('.editor-post-publish-panel__header-publish-button button', 30); + $I->wait(1); - // Wait for confirmation that the Page published. + // Scroll to the publish button and click it. + $I->scrollTo('.editor-post-publish-panel__header-publish-button button'); + $I->click('.editor-post-publish-panel__header-publish-button button'); + + // Wait for confirmation. $I->waitForElementVisible('.post-publish-panel__postpublish-buttons a.components-button', 30); // Return URL from 'View page' button. - return $I->grabAttributeFrom('.post-publish-panel__postpublish-buttons a.components-button', 'href'); + return $I->grabAttributeFrom( + '.post-publish-panel__postpublish-buttons a.components-button', + 'href' + ); } /** From 3a7fe9e946013025579926f85224158a5c13710c Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 18:29:27 +0800 Subject: [PATCH 24/28] Revert publish panel check --- tests/Support/Helper/WPGutenberg.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index 4182d96e0..83e4a586b 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -594,22 +594,22 @@ public function publishGutenbergPage($I) */ public function clickPublishOnPrePublishChecksForGutenbergPage($I) { - // Wait for publish button specifically. - $I->waitForElementVisible('.editor-post-publish-panel__header-publish-button button', 30); - $I->wait(1); - - // Scroll to the publish button and click it. - $I->scrollTo('.editor-post-publish-panel__header-publish-button button'); - $I->click('.editor-post-publish-panel__header-publish-button button'); + // Click publish on the pre-publish panel. + $I->waitForElementVisible('.editor-post-publish-panel'); + $I->performOn( + '.editor-post-publish-panel .editor-post-publish-panel__header-publish-button', + function($I) { + $I->click('.editor-post-publish-panel__header-publish-button button'); + }, + 15 + ); - // Wait for confirmation. + // Wait for confirmation that the Page published. $I->waitForElementVisible('.post-publish-panel__postpublish-buttons a.components-button', 30); // Return URL from 'View page' button. - return $I->grabAttributeFrom( - '.post-publish-panel__postpublish-buttons a.components-button', - 'href' - ); + return $I->grabAttributeFrom('.post-publish-panel__postpublish-buttons a.components-button', 'href'); + } /** From 625cc870afbd8ab08a090482f81228e3efda1d07 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 18:39:29 +0800 Subject: [PATCH 25/28] Use Classic Editor for Divi 5 Tests --- tests/Support/Helper/Divi5Theme.php | 26 +++++++++----------------- tests/Support/Helper/WPGutenberg.php | 1 - 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/tests/Support/Helper/Divi5Theme.php b/tests/Support/Helper/Divi5Theme.php index 41f1b3726..91b6fe03e 100644 --- a/tests/Support/Helper/Divi5Theme.php +++ b/tests/Support/Helper/Divi5Theme.php @@ -12,7 +12,7 @@ class Divi5Theme extends \Codeception\Module /** * Helper method to create a Divi Page in the WordPress Administration interface. * - * @since 2.5.7 + * @since 3.2.1 * * @param EndToEndTester $I EndToEnd Tester. * @param string $title Page Title. @@ -20,15 +20,11 @@ class Divi5Theme extends \Codeception\Module */ public function createDivi5Page($I, $title, $configureMetaBox = true) { - // Add a Page using the Gutenberg editor. - // We don't use addGutenbergPage(), as when the Divi Builder is used, the iframed Gutenberg editor is not used, - // and addGutenbergPage() may switch to an iframe based on the value of the WORDPRESS_V3_BLOCK_EDITOR_ENABLED environment variable. - // Navigate to Post Type (e.g. Pages / Posts) > Add New. - $I->amOnAdminPage('post-new.php?post_type=page'); - $I->waitForElementVisible('body.post-new-php'); - - // Define the Title. - $I->fillField('.editor-post-title__input', $title); + // Create a Page using the Classic Editor. + $I->addClassicEditorPage( + $I, + title: $title + ); // Configure metabox's Form setting = None, ensuring we only test the Divi block. if ($configureMetaBox) { @@ -42,10 +38,10 @@ public function createDivi5Page($I, $title, $configureMetaBox = true) } // Publish Page. - $I->publishGutenbergPage($I); + $I->publishClassicEditorPage($I); - // Click Divi Builder button. - $I->click('#et-switch-to-divi'); + // Click "Use The Divi Builder" button. + $I->click('#et_pb_use_the_builder'); // Wait for Divi Builder to load. $I->waitForElementVisible('body.et_pb_pagebuilder_layout'); @@ -75,10 +71,6 @@ public function insertDivi5RowWithModule($I, $name, $programmaticName, $fieldNam // Switch back to main window. $I->switchToIFrame(); - // Select 1 column layout. - $I->waitForElementVisible('button[value="equal-columns_1"]'); - $I->click('button[value="equal-columns_1"]'); - // Search for module. $I->waitForElementVisible('input[name="et-vb-field-input-text-filter-option"]'); $I->fillField('et-vb-field-input-text-filter-option', $name); diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index 83e4a586b..3788980e0 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -609,7 +609,6 @@ function($I) { // Return URL from 'View page' button. return $I->grabAttributeFrom('.post-publish-panel__postpublish-buttons a.components-button', 'href'); - } /** From 475ace11f6430826a082ac57868dae265ae956ef Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 18:41:14 +0800 Subject: [PATCH 26/28] Revert clickPublishOnPrePublishChecksForGutenbergPage --- tests/Support/Helper/WPGutenberg.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index 3788980e0..e1ae82bf1 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -595,9 +595,9 @@ public function publishGutenbergPage($I) public function clickPublishOnPrePublishChecksForGutenbergPage($I) { // Click publish on the pre-publish panel. - $I->waitForElementVisible('.editor-post-publish-panel'); + $I->waitForElementVisible('.editor-post-publish-panel__header-publish-button'); $I->performOn( - '.editor-post-publish-panel .editor-post-publish-panel__header-publish-button', + '.editor-post-publish-panel__header-publish-button', function($I) { $I->click('.editor-post-publish-panel__header-publish-button button'); }, From 1c2955ab858ab972c68df303574636d0ceea0f5e Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 19:02:33 +0800 Subject: [PATCH 27/28] Change method of creating page for Divi 5 tests --- tests/Support/Helper/Divi5Theme.php | 44 ++++++++++++++++------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/tests/Support/Helper/Divi5Theme.php b/tests/Support/Helper/Divi5Theme.php index 91b6fe03e..344bcdab9 100644 --- a/tests/Support/Helper/Divi5Theme.php +++ b/tests/Support/Helper/Divi5Theme.php @@ -16,32 +16,32 @@ class Divi5Theme extends \Codeception\Module * * @param EndToEndTester $I EndToEnd Tester. * @param string $title Page Title. - * @param bool $configureMetaBox Configure Plugin's Meta Box to set Form = None (set to false if running a test with no credentials). */ - public function createDivi5Page($I, $title, $configureMetaBox = true) + public function createDivi5Page($I, $title) { - // Create a Page using the Classic Editor. - $I->addClassicEditorPage( - $I, - title: $title + // Create a Page. + $pageID = $I->havePostInDatabase( + [ + 'post_type' => 'page', + 'post_title' => $title, + 'post_content' => '', + 'meta_input' => [ + // Configure Kit Plugin to not display a default Form. + '_wp_convertkit_post_meta' => [ + 'form' => '0', + 'landing_page' => '', + 'tag' => '', + ], + '_et_pb_use_builder' => 'on', + ], + ] ); - // Configure metabox's Form setting = None, ensuring we only test the Divi block. - if ($configureMetaBox) { - $I->configureMetaboxSettings( - $I, - 'wp-convertkit-meta-box', - [ - 'form' => [ 'select2', 'None' ], - ] - ); - } - - // Publish Page. - $I->publishClassicEditorPage($I); + // Edit Page. + $I->amOnPage('/wp-admin/post.php?post=' . $pageID . '&action=edit'); // Click "Use The Divi Builder" button. - $I->click('#et_pb_use_the_builder'); + $I->click('#et-switch-to-divi'); // Wait for Divi Builder to load. $I->waitForElementVisible('body.et_pb_pagebuilder_layout'); @@ -71,6 +71,10 @@ public function insertDivi5RowWithModule($I, $name, $programmaticName, $fieldNam // Switch back to main window. $I->switchToIFrame(); + // Select 1 column layout. + $I->waitForElementVisible('button[value="equal-columns_1"]'); + $I->click('button[value="equal-columns_1"]'); + // Search for module. $I->waitForElementVisible('input[name="et-vb-field-input-text-filter-option"]'); $I->fillField('et-vb-field-input-text-filter-option', $name); From 7deeece9fb20748aca3675d12f08bf4d7f73abe7 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Thu, 19 Mar 2026 20:35:45 +0800 Subject: [PATCH 28/28] Remove skipped tests --- .../divi-theme/DiviThemeBroadcastsCest.php | 77 ------------------- .../divi-theme/DiviThemeFormCest.php | 71 ----------------- .../divi-theme/DiviThemeFormTriggerCest.php | 72 ----------------- .../divi-theme/DiviThemeProductCest.php | 72 ----------------- 4 files changed, 292 deletions(-) diff --git a/tests/EndToEnd/integrations/divi-theme/DiviThemeBroadcastsCest.php b/tests/EndToEnd/integrations/divi-theme/DiviThemeBroadcastsCest.php index 9aac59cb8..9aa0aeeac 100644 --- a/tests/EndToEnd/integrations/divi-theme/DiviThemeBroadcastsCest.php +++ b/tests/EndToEnd/integrations/divi-theme/DiviThemeBroadcastsCest.php @@ -122,83 +122,6 @@ public function testBroadcastsModule(EndToEndTester $I) ); } - /** - * Test the Broadcasts module displays the expected message when the Plugin has no credentials. - * - * @since 2.8.0 - * - * @param EndToEndTester $I Tester. - */ - public function testBroadcastsModuleWhenNoCredentials(EndToEndTester $I) - { - // Skip test until modules upgraded to Divi 5. - $I->useTheme('twentytwentytwo'); - $I->deactivateKitPlugin($I); - $I->resetKitPlugin($I); - $I->markTestSkipped('No Credentials notice cannot be displayed until modules upgraded to Divi 5.'); - - // Create a Divi Page in the backend editor. - $I->createDiviPageInBackendEditor( - $I, - title: 'Kit: Page: Broadcasts: Divi 5: No Credentials' - ); - - // Insert the Broadcasts module. - $I->insertDiviRowWithModule( - $I, - name: 'Kit Broadcasts', - programmaticName: 'convertkit_broadcasts' - ); - - // Confirm the on screen message displays. - $I->seeTextInDiviModule( - $I, - title: 'Not connected to Kit', - text: 'Connect your Kit account at Settings > Kit, and then refresh this page to configure broadcasts to display.' - ); - } - - /** - * Test the Broadcasts module displays the expected message when the Kit account - * has no broadcasts. - * - * @since 2.8.0 - * - * @param EndToEndTester $I Tester. - */ - public function testBroadcastsModuleWhenNoBroadcasts(EndToEndTester $I) - { - // Skip test until modules upgraded to Divi 5. - $I->useTheme('twentytwentytwo'); - $I->deactivateKitPlugin($I); - $I->resetKitPlugin($I); - $I->markTestSkipped('No resources notice cannot be displayed until modules upgraded to Divi 5.'); - - // Setup Plugin. - $I->setupKitPluginCredentialsNoData($I); - $I->setupKitPluginResourcesNoData($I); - - // Create a Divi Page in the backend editor. - $I->createDiviPageInBackendEditor( - $I, - title: 'Kit: Page: Broadcasts: Divi 5: No Broadcasts' - ); - - // Insert the Broadcasts module. - $I->insertDiviRowWithModule( - $I, - name: 'Kit Broadcasts', - programmaticName: 'convertkit_broadcasts' - ); - - // Confirm the on screen message displays. - $I->seeTextInDiviModule( - $I, - title: 'No broadcasts exist in Kit', - text: 'Add a broadcast to your Kit account, and then refresh this page to configure broadcasts to display.' - ); - } - /** * Deactivate and reset Plugin(s) after each test, if the test passes. * We don't use _after, as this would provide a screenshot of the Plugin diff --git a/tests/EndToEnd/integrations/divi-theme/DiviThemeFormCest.php b/tests/EndToEnd/integrations/divi-theme/DiviThemeFormCest.php index 003d2d08b..5eeb3a1a3 100644 --- a/tests/EndToEnd/integrations/divi-theme/DiviThemeFormCest.php +++ b/tests/EndToEnd/integrations/divi-theme/DiviThemeFormCest.php @@ -64,77 +64,6 @@ public function testFormModule(EndToEndTester $I) $I->deactivateThirdPartyPlugin($I, 'classic-editor'); } - /** - * Test the Form module displays the expected message when the Plugin has no credentials - * - * @since 2.8.0 - * - * @param EndToEndTester $I Tester. - */ - public function testFormModuleWhenNoCredentials(EndToEndTester $I) - { - // Skip test until modules upgraded to Divi 5. - $I->useTheme('twentytwentytwo'); - $I->deactivateKitPlugin($I); - $I->resetKitPlugin($I); - $I->markTestSkipped('No Credentials notice cannot be displayed until modules upgraded to Divi 5.'); - - // Create a Divi Page in the frontend editor. - $I->createDiviPageInFrontendEditor($I, 'Kit: Page: Form: Divi: Frontend: No Credentials', false); - - // Insert the Form module. - $I->insertDiviRowWithModule( - $I, - name: 'Kit Form', - programmaticName: 'convertkit_form' - ); - - // Confirm the on screen message displays. - $I->seeTextInDiviModule( - $I, - title: 'Not connected to Kit', - text: 'Connect your Kit account at Settings > Kit, and then refresh this page to select a form.' - ); - } - - /** - * Test the Form module displays the expected message when the Kit account - * has no forms. - * - * @since 2.8.0 - * - * @param EndToEndTester $I Tester. - */ - public function testFormModuleWhenNoForms(EndToEndTester $I) - { - // Skip test until modules upgraded to Divi 5. - $I->useTheme('twentytwentytwo'); - $I->deactivateKitPlugin($I); - $I->resetKitPlugin($I); - $I->markTestSkipped('No resources notice cannot be displayed until modules upgraded to Divi 5.'); - - // Setup Plugin. - $I->setupKitPluginCredentialsNoData($I); - $I->setupKitPluginResourcesNoData($I); - - // Create a Divi Page in the frontend editor. - $I->createDiviPageInFrontendEditor($I, 'Kit: Page: Form: Divi: Frontend: No Forms'); - - // Insert the Form module. - $I->insertDiviRowWithModule( - $I, - name: 'Kit Form', - programmaticName: 'convertkit_form' - ); - - // Confirm the on screen message displays. - $I->seeTextInDiviModule( - $I, - title: 'No forms exist in Kit', - text: 'Add a form to your Kit account, and then refresh this page to select a form.' - ); - } - /** * Test the Form module works when a valid Legacy Form is selected. * diff --git a/tests/EndToEnd/integrations/divi-theme/DiviThemeFormTriggerCest.php b/tests/EndToEnd/integrations/divi-theme/DiviThemeFormTriggerCest.php index 6c2fe182c..984d5ea02 100644 --- a/tests/EndToEnd/integrations/divi-theme/DiviThemeFormTriggerCest.php +++ b/tests/EndToEnd/integrations/divi-theme/DiviThemeFormTriggerCest.php @@ -64,78 +64,6 @@ public function testFormTriggerModule(EndToEndTester $I) $I->seeNumberOfElementsInDOM('form[data-sv-form="' . $_ENV['CONVERTKIT_API_FORM_FORMAT_MODAL_ID'] . '"]', 1); } - - /** - * Test the Form module displays the expected message when the Plugin has no credentials - * - * @since 2.8.0 - * - * @param EndToEndTester $I Tester. - */ - public function testFormTriggerModuleWhenNoCredentials(EndToEndTester $I) - { - // Skip test until modules upgraded to Divi 5. - $I->useTheme('twentytwentytwo'); - $I->deactivateKitPlugin($I); - $I->resetKitPlugin($I); - $I->markTestSkipped('No Credentials notice cannot be displayed until modules upgraded to Divi 5.'); - - // Create a Divi Page in the frontend editor. - $I->createDiviPageInFrontendEditor($I, 'Kit: Page: Form Trigger: Divi: Frontend: No Credentials', false); - - // Insert the Form module. - $I->insertDiviRowWithModule( - $I, - name: 'Kit Form Trigger', - programmaticName: 'convertkit_formtrigger' - ); - - // Confirm the on screen message displays. - $I->seeTextInDiviModule( - $I, - title: 'Not connected to Kit', - text: 'Connect your Kit account at Settings > Kit, and then refresh this page to select a form.' - ); - } - - /** - * Test the Form module displays the expected message when the Kit account - * has no forms. - * - * @since 2.8.0 - * - * @param EndToEndTester $I Tester. - */ - public function testFormTriggerModuleInFrontendEditorWhenNoForms(EndToEndTester $I) - { - // Skip test until modules upgraded to Divi 5. - $I->useTheme('twentytwentytwo'); - $I->deactivateKitPlugin($I); - $I->resetKitPlugin($I); - $I->markTestSkipped('No resources notice cannot be displayed until modules upgraded to Divi 5.'); - - // Setup Plugin. - $I->setupKitPluginCredentialsNoData($I); - $I->setupKitPluginResourcesNoData($I); - - // Create a Divi Page in the frontend editor. - $I->createDiviPageInFrontendEditor($I, 'Kit: Page: Form Trigger: Divi: Frontend: No Forms'); - - // Insert the Form module. - $I->insertDiviRowWithModule( - $I, - name: 'Kit Form Trigger', - programmaticName: 'convertkit_formtrigger' - ); - - // Confirm the on screen message displays. - $I->seeTextInDiviModule( - $I, - title: 'No modal, sticky bar or slide in forms exist in Kit', - text: 'Add a non-inline form to your Kit account, and then refresh this page to select a form.' - ); - } - /** * Test the Form module works when no Form is selected. * diff --git a/tests/EndToEnd/integrations/divi-theme/DiviThemeProductCest.php b/tests/EndToEnd/integrations/divi-theme/DiviThemeProductCest.php index ec6e61edf..9691bb89f 100644 --- a/tests/EndToEnd/integrations/divi-theme/DiviThemeProductCest.php +++ b/tests/EndToEnd/integrations/divi-theme/DiviThemeProductCest.php @@ -63,77 +63,6 @@ public function testProductModule(EndToEndTester $I) $I->deactivateThirdPartyPlugin($I, 'classic-editor'); } - /** - * Test the Product module displays the expected message when the Plugin has no credentials - * - * @since 2.8.0 - * - * @param EndToEndTester $I Tester. - */ - public function testProductModuleWhenNoCredentials(EndToEndTester $I) - { - // Skip test until modules upgraded to Divi 5. - $I->useTheme('twentytwentytwo'); - $I->deactivateKitPlugin($I); - $I->resetKitPlugin($I); - $I->markTestSkipped('No Credentials notice cannot be displayed until modules upgraded to Divi 5.'); - - // Create a Divi Page in the frontend editor. - $I->createDiviPageInFrontendEditor($I, 'Kit: Page: Product: Divi: Frontend: No Credentials', false); - - // Insert the Product module. - $I->insertDiviRowWithModule( - $I, - name: 'Kit Product', - programmaticName: 'convertkit_product' - ); - - // Confirm the on screen message displays. - $I->seeTextInDiviModule( - $I, - title: 'Not connected to Kit', - text: 'Connect your Kit account at Settings > Kit, and then refresh this page to select a product.' - ); - } - - /** - * Test the Product module displays the expected message when the Kit account - * has no products. - * - * @since 2.8.0 - * - * @param EndToEndTester $I Tester. - */ - public function testProductModuleWhenNoProducts(EndToEndTester $I) - { - // Skip test until modules upgraded to Divi 5. - $I->useTheme('twentytwentytwo'); - $I->deactivateKitPlugin($I); - $I->resetKitPlugin($I); - $I->markTestSkipped('No resources notice cannot be displayed until modules upgraded to Divi 5.'); - - // Setup Plugin. - $I->setupKitPluginCredentialsNoData($I); - $I->setupKitPluginResourcesNoData($I); - - // Create a Divi Page in the frontend editor. - $I->createDiviPageInFrontendEditor($I, 'Kit: Page: Product: Divi: Product: No Products'); - - // Insert the Product module. - $I->insertDiviRowWithModule( - $I, - name: 'Kit Product', - programmaticName: 'convertkit_product' - ); - - // Confirm the on screen message displays. - $I->seeTextInDiviModule( - $I, - title: 'No products exist in Kit', - text: 'Add a product to your Kit account, and then refresh this page to select a product.' - ); - } - /** * Test the Product module works when no Product is selected. * @@ -167,7 +96,6 @@ public function testProductModuleWithNoProductParameter(EndToEndTester $I) $I->dontSeeProductOutput($I); } - /** * Deactivate and reset Plugin(s) after each test, if the test passes. * We don't use _after, as this would provide a screenshot of the Plugin