From ab1218eab00a34c90e5aece7cf165adc4d049038 Mon Sep 17 00:00:00 2001 From: Kayshen-X Date: Wed, 15 Jul 2026 22:47:28 +0800 Subject: [PATCH] fix(web): restore CanvasKit test coverage --- crates/op-host-web/src/web_chat.rs | 8 +++++--- crates/op-host-web/src/web_chat_credential_tests.rs | 1 + crates/op-host-web/src/web_settings_acp_scrub_tests.rs | 7 +++++-- crates/op-host-web/src/web_settings_validation.rs | 7 +++++++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/crates/op-host-web/src/web_chat.rs b/crates/op-host-web/src/web_chat.rs index 2ddeeb144..e35794793 100644 --- a/crates/op-host-web/src/web_chat.rs +++ b/crates/op-host-web/src/web_chat.rs @@ -411,9 +411,11 @@ mod tests { #[test] fn prepare_turn_carries_model_and_message() { let mut state = state_with_queued_send("design a login page"); - state.chat.available_models = vec![ModelEntry::new( + state.chat.available_models = vec![ModelEntry::builtin_with_display_name( AgentProvider::ClaudeCode, - "claude-sonnet-4-5", + "daemon-builtin:server-1", + "Server API Key", + "builtin:server-1:claude-sonnet-4-5", "Claude Sonnet 4.5", )]; state.chat.selected_model = 0; @@ -423,7 +425,7 @@ mod tests { let body: serde_json::Value = serde_json::from_str(&prepared.body_json).expect("body is JSON"); assert_eq!(body["provider"], "claude-code"); - assert_eq!(body["model"], "claude-sonnet-4-5"); + assert_eq!(body["model"], "builtin:server-1:claude-sonnet-4-5"); assert_eq!(body["user"], "design a login page"); assert_eq!(body["max_output_tokens"], 4096); assert_eq!(body["agent_team_size"], 3); diff --git a/crates/op-host-web/src/web_chat_credential_tests.rs b/crates/op-host-web/src/web_chat_credential_tests.rs index 169f9c9d1..4c4f541e5 100644 --- a/crates/op-host-web/src/web_chat_credential_tests.rs +++ b/crates/op-host-web/src/web_chat_credential_tests.rs @@ -1,4 +1,5 @@ use super::*; +use op_editor_core::chat::{AgentProvider, ModelEntry}; fn state_with_queued_send(text: &str) -> EditorState { let mut state = EditorState::new(); diff --git a/crates/op-host-web/src/web_settings_acp_scrub_tests.rs b/crates/op-host-web/src/web_settings_acp_scrub_tests.rs index a21c47424..27c5767d4 100644 --- a/crates/op-host-web/src/web_settings_acp_scrub_tests.rs +++ b/crates/op-host-web/src/web_settings_acp_scrub_tests.rs @@ -1,5 +1,5 @@ use super::*; -use op_editor_core::EditorState; +use op_editor_core::{AgentProvider, EditorState}; #[test] fn legacy_acp_in_separate_credentials_is_removed_without_losing_builtin_keys() { @@ -189,7 +189,10 @@ fn legacy_acp_configuration_is_removed_without_loading_or_migrating_it() { assert!(!writes[0].1.contains("legacy-env-secret")); assert!(!writes[0].1.contains("legacy-url-secret")); assert!(state.editor_ui.agent_settings.acp_agents.is_empty()); - assert_eq!(state.editor_ui.agent_settings.connected, [false; 5]); + assert_eq!( + state.editor_ui.agent_settings.connected, + [false; AgentProvider::ALL.len()] + ); } #[test] diff --git a/crates/op-host-web/src/web_settings_validation.rs b/crates/op-host-web/src/web_settings_validation.rs index ea0d9c33e..1dce4dc1b 100644 --- a/crates/op-host-web/src/web_settings_validation.rs +++ b/crates/op-host-web/src/web_settings_validation.rs @@ -182,6 +182,13 @@ fn validate_general_semantics(payload: &SettingsPayload) -> Result<(), String> { if payload.mcp_port.is_some_and(|port| port < 1024) { return Err("browser MCP port would be normalized".into()); } + if payload + .mcp_cli_enabled + .as_ref() + .is_some_and(|enabled| enabled.len() != McpCli::ALL.len()) + { + return Err("browser MCP CLI flags would be normalized".into()); + } if payload .recent_files .as_ref()