diff --git a/CLAUDE.md b/CLAUDE.md index 45b392c84..b8b7b30eb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -28,6 +28,7 @@ cargo test --test kittest --all-features # UI integration tests (egui_ cargo test --test e2e --all-features # End-to-end tests ``` + Test locations: - Unit tests: inline in source files (`#[test]`) - UI integration: `tests/kittest/` @@ -35,6 +36,14 @@ Test locations: Always run `cargo clippy` and `cargo +nightly fmt` when finalizing your work. + +### Manual test scenarios + +You MUST identify manual tests needed for the changes and write a manual test scenarios. Use the `claudius:qa-engineer` agent if available. +Skip the manual test file only for non-functional changes (CI, docs, formatting, pure refactoring) — state why in the PR description. +Put tests in docs directory, as described in "Documentation" section below. Reference the file in the PR description under "Test plan". +Before creating a PR, re-review test scenarios and update them if needed. + ## CI: Safe Cargo Wrapper In GitHub Actions (Claude Code workflow), use `scripts/safe-cargo.sh` instead of `cargo` directly. This wrapper strips CI secrets from the environment before running cargo, preventing build scripts from accessing credentials. @@ -46,13 +55,14 @@ scripts/safe-cargo.sh clippy --all-features --all-targets -- -D warnings scripts/safe-cargo.sh +nightly fmt --all ``` + ## Architecture Overview **Dash Evo Tool** is a cross-platform GUI application (Rust + egui) for interacting with Dash Evolution. It enables DPNS username registration, contest voting, state transition viewing, wallet management, and identity operations across Mainnet/Testnet/Devnet. ## Documentation -- **docs/ai-design** should contain architecture and technical design files, grouped in subdirectories prefixed with ISO-formatted date +- **docs/ai-design** should contain architecture, technical design and manual testing scenarios files, grouped in subdirectories prefixed with ISO-formatted date - end-user documentation is in a separate repo: https://github.com/dashpay/docs/tree/HEAD/docs/user/network/dash-evo-tool , published at https://docs.dash.org/en/stable/docs/user/network/dash-evo-tool/ ### Core Module Structure @@ -129,7 +139,7 @@ Screens hold `Arc` and manage their own UI state. ## UI Component Pattern -Components follow a lazy initialization pattern (see `doc/COMPONENT_DESIGN_PATTERN.md`): +Components follow a lazy initialization pattern (see `docs/COMPONENT_DESIGN_PATTERN.md`): ```rust struct MyScreen { diff --git a/doc/COMPONENT_DESIGN_PATTERN.md b/docs/COMPONENT_DESIGN_PATTERN.md similarity index 100% rename from doc/COMPONENT_DESIGN_PATTERN.md rename to docs/COMPONENT_DESIGN_PATTERN.md diff --git a/src/ui/components/component_trait.rs b/src/ui/components/component_trait.rs index 6a5feb28e..d4a3aa6e1 100644 --- a/src/ui/components/component_trait.rs +++ b/src/ui/components/component_trait.rs @@ -69,7 +69,7 @@ pub trait ComponentResponse: Clone { /// /// # See also /// -/// See `doc/COMPONENT_DESIGN_PATTERN.md` for detailed design pattern documentation. +/// See `docs/COMPONENT_DESIGN_PATTERN.md` for detailed design pattern documentation. pub trait Component { /// The domain object type that this component is designed to handle. /// This type represents the data this component is designed to handle,