typeduck-codex-web 0.5.1

A standalone browser interface and Codex runtime
Documentation
use std::path::PathBuf;

use serde_json::json;
use topcoat::context::Cx;
use topcoat::view::view;

use super::AccountProfile;
use super::goal_modal;
use super::settings_modal;

#[tokio::test]
async fn renders_goal_editor_with_every_lifecycle_status() {
    let cx = &Cx::default();
    let view = view! { cx => goal_modal() }.expect("render goal modal");

    insta::assert_snapshot!(view.render(cx));
}

#[tokio::test]
async fn renders_account_and_mcp_management() {
    let cx = &Cx::default();
    let accounts = [AccountProfile {
        name: "primary".to_string(),
        label: "Work".to_string(),
        codex_home: PathBuf::from("/home/codex/.codex-work"),
        proxy: None,
        use_ssh_tunnel: false,
    }];
    let servers = json!([{
        "name": "jira",
        "authStatus": "notAuthenticated"
    }]);
    let view = view! { cx =>
        settings_modal(
            mcp_servers: servers.as_array().expect("servers"),
            accounts: &accounts,
            active_account: "primary",
        )
    }
    .expect("render settings modal");

    insta::assert_snapshot!(view.render(cx));
}