A deterministic WPF patient-management application for developing and exercising Windows UI automation. It uses synthetic in-memory data and restores the same state on every process start.
- Windows 10 or later
- .NET SDK 10.0.302 or a compatible .NET 10 patch selected by
global.json - An unlocked interactive desktop for UI automation tests
No database, network service, account, or real patient data is required.
dotnet restore PatientManagementDemo.slnx
dotnet build PatientManagementDemo.slnx --no-restore
dotnet run --project src\PatientManagementDemo\PatientManagementDemo.csproj --no-buildRun deterministic unit and presentation-state tests:
dotnet test tests\PatientManagementDemo.Tests\PatientManagementDemo.Tests.csproj --no-restoreRun native Windows UI Automation tests from an unlocked interactive desktop:
dotnet test tests\PatientManagementDemo.UiTests\PatientManagementDemo.UiTests.csproj --no-restoreRun the complete suite:
dotnet test PatientManagementDemo.slnx --no-restoreUI tests launch and stop a new application process per scenario. They synchronize on automation properties and status changes rather than fixed sleeps.
Each process starts with these synthetic records, sorted by Patient ID:
| Patient ID | First name | Last name | Date of birth |
|---|---|---|---|
| PM-1001 | Avery | Chen | 1984-02-29 |
| PM-1002 | Jordan | Patel | 1992-07-15 |
| PM-1003 | Morgan | Rivera | 2001-11-03 |
- Search uses all populated fields with AND semantics.
- Patient ID search is exact and case-insensitive.
- Name search is a case-insensitive substring match.
- Blank search criteria return all patients.
- Add, Update, Search, and confirmed Delete expose a 300 ms busy state.
- Data exists only for the current process; restarting restores the seed set.
See requirements analysis, clarification defaults, execution plan, and automation contract for the full behavioral baseline.
This is a test fixture, not a production or regulated medical application. Authentication, authorization, durable persistence, audit history, clinical integrations, localization, packaging, and real patient data are intentionally excluded.