test: add opt-in panel e2e harness

This commit is contained in:
2026-06-13 23:38:51 +09:00
parent 134e8b8b57
commit 96561897ae
10 changed files with 1035 additions and 2 deletions
+8 -1
View File
@@ -4,6 +4,7 @@ mod cache;
mod command;
mod composer_history;
mod composer_keys;
mod e2e_observer;
mod input;
pub mod keys;
mod markdown;
@@ -108,6 +109,7 @@ pub async fn launch(options: LaunchOptions) -> ExitCode {
// Always restore the terminal first so any pending eprintln below
// shows up cleanly in scrollback rather than inside an active
// alternate-screen buffer.
e2e_observer::emit("tui", "terminal_cleanup_started", serde_json::json!({}));
let mut stdout = io::stdout();
let _ = execute!(
stdout,
@@ -117,9 +119,13 @@ pub async fn launch(options: LaunchOptions) -> ExitCode {
);
let _ = disable_raw_mode();
let _ = execute!(stdout, crossterm::cursor::Show);
e2e_observer::emit("tui", "terminal_cleanup_finished", serde_json::json!({}));
match result {
Ok(()) => ExitCode::SUCCESS,
Ok(()) => {
e2e_observer::emit("tui", "exit", serde_json::json!({ "status": "success" }));
ExitCode::SUCCESS
}
Err(e) => {
// SpawnError has already been painted into the inline
// viewport's final frame, so it's already visible in the
@@ -129,6 +135,7 @@ pub async fn launch(options: LaunchOptions) -> ExitCode {
if e.downcast_ref::<spawn::SpawnError>().is_none() {
eprintln!("yoi: {e}");
}
e2e_observer::emit("tui", "exit", serde_json::json!({ "status": "failure" }));
ExitCode::FAILURE
}
}