Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: fixed

Agents Manager: Return wp-admin variant for connected CIAB environments instead of not loading.
Original file line number Diff line number Diff line change
Expand Up @@ -271,12 +271,12 @@ function ( $wp_admin_bar ) use ( $use_disconnected ) {
* @return string|null The variant name, or null if scripts should not be loaded.
*/
private function get_variant() {
// CIAB/Next Admin: only load when disconnected (connected CIAB is handled by Help Center).
// CIAB/Next Admin: use ciab-disconnected when disconnected, wp-admin when connected.
if ( $this->is_ciab_environment() ) {
if ( $this->is_enabled() && $this->is_jetpack_disconnected() ) {
return 'ciab-disconnected';
if ( ! $this->is_enabled() ) {
return null;
}
return null;
return $this->is_jetpack_disconnected() ? 'ciab-disconnected' : 'wp-admin';
}

// Frontend: load disconnected variant for eligible logged-in editors.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1952,11 +1952,11 @@ public function test_scripts_not_enqueued_on_p2_frontend() {
}

/**
* Tests that should_enqueue_script returns false in CIAB environment when Jetpack is connected.
* Tests that get_variant returns wp-admin in CIAB environment when Jetpack is connected.
*
* Connected CIAB is handled by Help Center; Agents Manager should not load.
* Since there is no dedicated ciab variant, connected CIAB should use wp-admin.
*/
public function test_should_enqueue_script_returns_false_in_ciab_when_connected() {
public function test_get_variant_returns_wp_admin_in_ciab_when_connected() {
$this->set_admin_context();

// Save and simulate CIAB environment.
Expand All @@ -1968,7 +1968,7 @@ public function test_should_enqueue_script_returns_false_in_ciab_when_connected(
// is_jetpack_disconnected() returns false for non-Jetpack sites.
add_filter( 'agents_manager_use_unified_experience', '__return_true', 20 );

$result = $this->call_should_enqueue_script();
$result = $this->call_get_variant();

remove_filter( 'agents_manager_use_unified_experience', '__return_true', 20 );

Expand All @@ -1979,7 +1979,7 @@ public function test_should_enqueue_script_returns_false_in_ciab_when_connected(
$wp_actions['next_admin_init'] = $original_action_count;
}

$this->assertFalse( $result );
$this->assertSame( 'wp-admin', $result );
}

/**
Copy link

Copilot AI Feb 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test verifies that get_variant returns 'wp-admin' for connected CIAB environments, but there's missing integration test coverage. While this unit test checks the variant selection logic, there should be a corresponding integration test similar to test_enqueue_scripts_includes_section_name_ciab_disconnected that verifies the complete enqueue flow with the wp-admin variant actually being used in the inline script data for CIAB connected scenarios. This would ensure that the wp-admin variant scripts can be successfully loaded and that the sectionName is correctly set to "wp-admin" in the agentsManagerData.

Suggested change
/**
/**
* Tests that enqueue_scripts uses the wp-admin variant in CIAB environment when Jetpack is connected.
*
* This verifies that the complete enqueue flow for a CIAB-connected site
* results in agentsManagerData having sectionName set to "wp-admin".
*/
public function test_enqueue_scripts_includes_section_name_ciab_connected_uses_wp_admin_variant() {
$this->set_admin_context();
// Save and simulate CIAB environment.
global $wp_actions;
$original_action_count = $wp_actions['next_admin_init'] ?? 0;
do_action( 'next_admin_init' );
// Enable unified experience but do NOT simulate a Jetpack disconnected site.
// is_jetpack_disconnected() returns false for non-Jetpack sites.
add_filter( 'agents_manager_use_unified_experience', '__return_true', 20 );
// Capture inline script data added during enqueue_scripts.
$inline_scripts = array();
Functions::when( 'wp_add_inline_script' )->alias(
function ( $handle, $data, $position = 'after' ) use ( &$inline_scripts ) {
$inline_scripts[] = array(
'handle' => $handle,
'data' => $data,
'position' => $position,
);
return true;
}
);
$this->agents_manager->enqueue_scripts();
remove_filter( 'agents_manager_use_unified_experience', '__return_true', 20 );
// Restore did_action counter.
if ( $original_action_count === 0 ) {
unset( $wp_actions['next_admin_init'] );
} else {
$wp_actions['next_admin_init'] = $original_action_count;
}
// Ensure that at least one inline script was enqueued and that it includes sectionName "wp-admin".
$this->assertNotEmpty( $inline_scripts, 'Expected enqueue_scripts to add inline script data.' );
$found_wp_admin_section = false;
foreach ( $inline_scripts as $script ) {
if ( is_string( $script['data'] ) && strpos( $script['data'], '"sectionName":"wp-admin"' ) !== false ) {
$found_wp_admin_section = true;
break;
}
}
$this->assertTrue(
$found_wp_admin_section,
'Expected agentsManagerData inline script to have sectionName set to "wp-admin" for CIAB-connected sites.'
);
}
/**

Copilot uses AI. Check for mistakes.
Expand Down