Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
b663bb6
Run Tests against WordPress 7.0 Beta 1
n7studios Feb 21, 2026
5d56a47
Tests: Bulk Edit: Update option label to match WordPress 7.0 beta
n7studios Feb 24, 2026
96279f4
Merge branch 'main' into test-wp-7.0
n7studios Feb 26, 2026
1e83199
Run tests against WordPress 7.0 Beta 2
n7studios Mar 3, 2026
d3e6ac8
Merge remote-tracking branch 'origin/fix-form-injection' into test-wp…
n7studios Mar 3, 2026
01b3d4c
Fix: Use named ID for pre-publish action toggles
n7studios Mar 3, 2026
b5c18c1
Tests: Switch to main iframe before switching to the block editor
n7studios Mar 3, 2026
2647ae2
Merge branch 'main' into test-wp-7.0
n7studios Mar 9, 2026
ec6f1e6
Run tests against WordPress 7.0 Beta 3
n7studios Mar 9, 2026
4e0d753
Run Tests against WordPress 7.0 Beta 5
n7studios Mar 19, 2026
5eec76d
Merge branch 'main' into test-wp-7.0
n7studios Mar 19, 2026
719fb7e
Bump db_version to 61833
n7studios Mar 19, 2026
f5e0c4f
Tests: Posts to Broadcasts: Update selectors for Gutenberg
n7studios Mar 19, 2026
a6f48db
Tests: Broadcasts: Wait for success message to avoid flaky tests
n7studios Mar 19, 2026
ff39bd9
Tests: Check for paragraph with class
n7studios Mar 19, 2026
7565257
Tests: Improve reliability of completing block editor title
n7studios Mar 19, 2026
b256498
Tests: Improve Reliability of Divi Tests
n7studios Mar 19, 2026
1cb8073
Divi: Add page using helper, as Divi is iframed in 7.0
n7studios Mar 19, 2026
05e9bb2
Coding standards
n7studios Mar 19, 2026
43378d2
Divi 4: Detect Welcome Modal and dismiss, instead of waiting 5 seconds
n7studios Mar 19, 2026
5bf35e5
Run Divi Tests in PHP 8.1 only to check results
n7studios Mar 19, 2026
4a4ea1b
Conditionally dismiss modal
n7studios Mar 19, 2026
21835fd
Exit Divi 5 Builder instead of trying to use the dropdown
n7studios Mar 19, 2026
762ad37
Reinstate all tests
n7studios Mar 19, 2026
47c0e50
Merge remote-tracking branch 'origin/improve-divi-test-reliability' i…
n7studios Mar 19, 2026
974644c
Use a more reliable method of fetching current URL
n7studios Mar 19, 2026
f5f9365
Merge remote-tracking branch 'origin/improve-divi-test-reliability' i…
n7studios Mar 19, 2026
d2318ac
Publishing: Wait for panel to be visible, not button
n7studios Mar 19, 2026
84d8f52
Merge remote-tracking branch 'origin/improve-divi-test-reliability' i…
n7studios Mar 19, 2026
bc0fb9e
Try another method to detect pre-publish actions
n7studios Mar 19, 2026
3a7fe9e
Revert publish panel check
n7studios Mar 19, 2026
625cc87
Use Classic Editor for Divi 5 Tests
n7studios Mar 19, 2026
475ace1
Revert clickPublishOnPrePublishChecksForGutenbergPage
n7studios Mar 19, 2026
1c2955a
Change method of creating page for Divi 5 tests
n7studios Mar 19, 2026
7deeece
Remove skipped tests
n7studios Mar 19, 2026
1261669
Merge remote-tracking branch 'origin/improve-divi-test-reliability' i…
n7studios Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/coding-standards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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-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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
strategy:
fail-fast: false
matrix:
wp-versions: [ 'latest' ] #[ '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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 #inspector-toggle-control-0');
$I->click('.convertkit-pre-publish-actions.is-opened input#convertkit_action_broadcast_export');

// Publish the Post.
$I->clickPublishOnPrePublishChecksForGutenbergPage($I);
Expand Down
77 changes: 0 additions & 77 deletions tests/EndToEnd/integrations/divi-theme/DiviThemeBroadcastsCest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
71 changes: 0 additions & 71 deletions tests/EndToEnd/integrations/divi-theme/DiviThemeFormCest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*
Expand Down
72 changes: 0 additions & 72 deletions tests/EndToEnd/integrations/divi-theme/DiviThemeProductCest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions tests/Support/Data/dump.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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', '61833', 'on'),
(47, 'uploads_use_yearmonth_folders', '1', 'on'),
(48, 'upload_path', '', 'on'),
(49, 'blog_public', '1', 'on'),
Expand Down Expand Up @@ -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', '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'),
Expand Down
Loading
Loading