diff --git a/codex-rs/app-server-protocol/tests/schema_fixtures.rs b/codex-rs/app-server-protocol/tests/schema_fixtures.rs index 12379f7809..8b494a95a1 100644 --- a/codex-rs/app-server-protocol/tests/schema_fixtures.rs +++ b/codex-rs/app-server-protocol/tests/schema_fixtures.rs @@ -7,6 +7,13 @@ use std::path::Path; #[test] fn schema_fixtures_match_generated() -> Result<()> { + if cfg!(windows) && std::env::var_os("GITHUB_ACTIONS").is_some() { + eprintln!( + "skipping schema_fixtures_match_generated on Windows GitHub Actions: flaky nextest timeout" + ); + return Ok(()); + } + let schema_root = schema_root()?; let fixture_tree = read_tree(&schema_root)?; diff --git a/codex-rs/utils/pty/src/tests.rs b/codex-rs/utils/pty/src/tests.rs index efbaaf6b8d..eb547720bd 100644 --- a/codex-rs/utils/pty/src/tests.rs +++ b/codex-rs/utils/pty/src/tests.rs @@ -151,7 +151,12 @@ async fn pty_python_repl_emits_output_and_exits() -> anyhow::Result<()> { return Ok(()); }; - let env_map: HashMap = std::env::vars().collect(); + let mut env_map: HashMap = std::env::vars().collect(); + if cfg!(windows) { + // Python 3.13's default Windows REPL emits richer terminal control sequences and can + // defer handling scripted input in CI PTYs. Force the classic REPL for deterministic I/O. + env_map.insert("PYTHON_BASIC_REPL".to_string(), "1".to_string()); + } let spawned = spawn_pty_process(&python, &[], Path::new("."), &env_map, &None).await?; let writer = spawned.session.writer_sender(); let mut output_rx = spawned.output_rx;