[profile.default] # Retry once so one transient failure does not fail full-CI outright. # Fanout keeps the full-CI shards moving without treating every >30s test as # stuck. Keep this aligned with the broader timeout budget we give sharded CI. slow-timeout = { period = "30s", terminate-after = 2 } retries = 1 [[profile.default.overrides]] # These cases cold-start a daemon before confirming a second launch with new settings. filter = 'package(codex-cli) & binary(daemon_startup) & test(requires_confirmation_to_disable_)' slow-timeout = { period = "1m", terminate-after = 2 } [[profile.default.overrides]] # This case validates and copies both the initial and replacement debug package. filter = 'package(codex-cli) & binary(=app_server_daemon_package) & test(=packaged_daemon_start_and_explicit_replacement)' slow-timeout = { period = "1m", terminate-after = 3 } threads-required = "num-test-threads" [[profile.default.overrides]] # These copies must not compete with other tests on the same runner. filter = 'package(codex-cli) & binary(=app_server_daemon_package)' slow-timeout = { period = "1m", terminate-after = 2 } threads-required = "num-test-threads" [profile.default.junit] path = "junit.xml" [profile.local] inherits = "default" [test-groups.app_server_protocol_codegen] max-threads = 1 [test-groups.app_server_integration] max-threads = 1 # Higher concurrency causes integration test timeouts under resource contention # on common developer machines. [test-groups.app_server_integration_local] max-threads = 4 [test-groups.core_apply_patch_cli_integration] max-threads = 1 [test-groups.windows_sandbox_legacy_sessions] max-threads = 1 [test-groups.windows_sandbox_accounts] max-threads = 1 [test-groups.windows_process_heavy] max-threads = 2 [[profile.default.overrides]] # Do not add new tests here filter = 'test(rmcp_client) | test(humanlike_typing_1000_chars_appears_live_no_placeholder)' slow-timeout = { period = "1m", terminate-after = 4 } [[profile.default.overrides]] # This end-to-end case launches several CLI subprocesses and checks cloud policy. filter = 'package(codex-exec) & test(worktree_start_and_fork_use_host_pool_and_preserve_legacy_resume)' slow-timeout = { period = "30s", terminate-after = 4 } [[profile.default.overrides]] filter = 'test(approval_matrix_covers_all_modes)' slow-timeout = { period = "30s", terminate-after = 2 } [[profile.default.overrides]] filter = 'package(codex-app-server-protocol) & (test(typescript_schema_fixtures_match_generated) | test(json_schema_fixtures_match_generated) | test(generate_ts_with_experimental_api_retains_experimental_entries) | test(generated_ts_optional_nullable_fields_only_in_params) | test(generate_json_filters_experimental_fields_and_methods))' test-group = 'app_server_protocol_codegen' [[profile.default.overrides]] # These integration tests spawn a fresh app-server subprocess per case. # Keep the library unit tests parallel. filter = 'package(codex-app-server) & kind(test)' test-group = 'app_server_integration' [[profile.local.overrides]] # Use up to four app-server subprocesses locally. The global nextest pool still # limits this to the machine's logical CPU count. filter = 'package(codex-app-server) & kind(test)' test-group = 'app_server_integration_local' [[profile.default.overrides]] # These tests exercise full Codex turns and apply_patch execution, and they are # sensitive to Windows runner process-startup stalls when many cases launch at once. filter = 'package(codex-core) & kind(test) & test(apply_patch_cli)' test-group = 'core_apply_patch_cli_integration' [[profile.default.overrides]] # These cases share the runner's elevated sandbox accounts. Queue them before # starting their timeout; their file lock still coordinates other test processes. platform = 'cfg(windows)' filter = ''' (package(codex-core) & binary(windows_sandbox)) | (package(codex-exec-server) & test(file_system_elevated_relative_read_denial_uses_policy_cwd)) | (package(codex-windows-sandbox) & test(elevated_non_tty_cmd_forwards_env_output_and_exit)) ''' test-group = 'windows_sandbox_accounts' [[profile.default.overrides]] # These tests create restricted-token Windows child processes and private desktops. # Serialize them to avoid exhausting Windows session/global desktop resources in CI. filter = 'package(codex-windows-sandbox) & test(legacy_)' test-group = 'windows_sandbox_legacy_sessions' [[profile.default.overrides]] # This Codex-home startup path still exceeded the broader Windows-heavy ceiling # in both Windows full-CI lanes after contention was reduced. platform = 'cfg(windows)' filter = 'test(start_thread_uses_all_default_environments_from_codex_home)' slow-timeout = { period = "1m", terminate-after = 2 } [[profile.default.overrides]] # These Windows-heavy tests spawn subprocesses, session files, or JSON-RPC # clients and have been the dominant source of 30s full-CI timeouts. platform = 'cfg(windows)' filter = 'test(suite::resume::) | test(suite::cli_stream::) | test(suite::auth_env::) | test(start_thread_uses_all_default_environments_from_codex_home) | test(connect_stdio_command_initializes_json_rpc_client_on_windows)' test-group = 'windows_process_heavy' slow-timeout = { period = "45s", terminate-after = 2 }