Skip to content

how to contribute testing

Douwe de Vries edited this page Jul 1, 2026 · 2 revisions

Testing

CSV Align uses Rust integration tests, Tauri wrapper tests, and colocated frontend tests. The expected validation commands are also listed in /Users/vriesd/projects/csv-align/AGENTS.md.

Root Rust validation

Run from /Users/vriesd/projects/csv-align:

cargo fmt --check
cargo test
cargo clippy -- -D warnings

Root Rust tests cover the shared library crate, Axum handlers, workflow contracts, persistence, export behavior, release metadata scripts, and packaging helpers. Public workflow coverage belongs in /Users/vriesd/projects/csv-align/tests/.

Tauri wrapper validation

Run from /Users/vriesd/projects/csv-align:

(cd /Users/vriesd/projects/csv-align/src-tauri && cargo test && cargo fmt --check && cargo clippy -- -D warnings)

Tauri tests cover desktop command behavior, command registration parity, file-dialog wrapper helpers, pair-order save/load behavior, and comparison snapshot save/load behavior. Keep Tauri-specific tests under /Users/vriesd/projects/csv-align/src-tauri/src/.

Frontend validation

Run from /Users/vriesd/projects/csv-align:

(cd /Users/vriesd/projects/csv-align/frontend && npm test && npm run lint && npm run build)

Frontend tests are colocated under /Users/vriesd/projects/csv-align/frontend/src/. CI runs frontend tests and lint for frontend changes, and always builds the frontend when Tauri packaging needs /Users/vriesd/projects/csv-align/frontend/dist.

Parity testing

Transport parity is a release-critical invariant:

  • /Users/vriesd/projects/csv-align/tests/transport_parity_integration.rs checks that frontend HTTP route templates match backend route constants.
  • /Users/vriesd/projects/csv-align/src-tauri/src/tests.rs checks Tauri command registration and wrapper behavior.
  • /Users/vriesd/projects/csv-align/frontend/src/services/tauri.test.ts checks browser and desktop branches in the frontend transport switch.

When a transport operation changes, update both the Rust and TypeScript constants before changing tests.

Fixtures and samples

Test helpers live in /Users/vriesd/projects/csv-align/tests/common/ when shared across integration tests. Frontend render fixtures live under /Users/vriesd/projects/csv-align/frontend/src/test/. Sample CSV files in /Users/vriesd/projects/csv-align/samples/ are useful for manual checks, but regression tests should use controlled fixture data rather than private user files.

Key test files

File Coverage
/Users/vriesd/projects/csv-align/tests/comparison_engine_integration.rs Row matching, duplicates, flexible keys, JSON comparison, and normalization behavior.
/Users/vriesd/projects/csv-align/tests/backend_workflow_integration.rs Session workflow, stale writeback, file loading, compare execution, and saved work behavior.
/Users/vriesd/projects/csv-align/tests/response_contracts.rs Stable API response shapes, errors, result variants, snapshots, and exports.
/Users/vriesd/projects/csv-align/tests/transport_parity_integration.rs Backend route and frontend route template parity.
/Users/vriesd/projects/csv-align/tests/linux_package_metadata_integration.rs Linux package metadata validators, RPM builder, APT repository builder, and installer contracts.
/Users/vriesd/projects/csv-align/src-tauri/src/tests.rs Desktop command registration and wrapper contracts.
/Users/vriesd/projects/csv-align/src-tauri/src/pair_order_tests.rs Desktop pair-order file dialog helper behavior.
/Users/vriesd/projects/csv-align/src-tauri/src/comparison_snapshot_tests.rs Desktop comparison snapshot file dialog helper behavior.
/Users/vriesd/projects/csv-align/frontend/src/hooks/useComparisonWorkflow.test.ts Frontend workflow behavior.
/Users/vriesd/projects/csv-align/frontend/src/components/ResultsTable.test.tsx Results table presentation and interaction coverage.

Clone this wiki locally