Rust Testing
The Rust implementation uses standardcargo test along with specialized tools.
Running Tests
1
Run Tests for a Specific Crate
Always start by testing the specific crate you modified:
2
Run Full Test Suite (If Needed)
If you changed
common, core, or protocol crates, run the complete test suite:3
Check Results
Review test output for any failures or warnings.
Snapshot Tests
Codex uses snapshot tests viainsta to validate rendered output, especially in codex-tui.
Requirement: Any change that affects user-visible UI must include corresponding
insta snapshot coverage.1
Run Tests to Generate Snapshots
2
Check Pending Snapshots
3
Review Changes
Review the generated
*.snap.new files directly, or preview a specific file:4
Accept Snapshots (If Correct)
Only accept if you’ve verified the changes are correct:
Installing cargo-insta
Installing cargo-insta
If you don’t have the tool installed:
Test Assertions Best Practices
Integration Tests
When writing end-to-end Codex tests, use the utilities incore_test_support::responses.
Spawning Workspace Binaries in Tests
TypeScript Testing
The TypeScript CLI uses Vitest for unit tests.Running TypeScript Tests
Git Hooks
The TypeScript project uses Husky to enforce code quality:- Pre-commit hook: Runs lint-staged to format and lint files
- Pre-push hook: Runs tests and type checking
These hooks help maintain code quality and prevent pushing code with failing tests.
App-Server Protocol Testing
After changing API shapes inapp-server-protocol:
1
Regenerate Schema Fixtures
2
Validate Changes
Sandbox Testing
Test commands under the Codex sandbox using dedicated subcommands:Before Submitting a PR
Before marking your PR as ready for review, run all checks locally:- Rust
- TypeScript
Next Steps
Guidelines
Review contribution guidelines
Building
Learn how to build the project