This repository contains the planning and implementation assets for a modular Windows test suite focused on image validation and hardware benchmarking. The suite is authored in PowerShell with a WPF-based GUI shell and extensible module framework.
Config/ -> Configuration templates for module selection and reporting
Logs/ -> Default location for runtime logs (created on demand)
Modules/ -> Discoverable validation/benchmark modules
Core/ -> Shared framework utilities
Image/ -> Image validation modules
Hardware/ -> Hardware benchmarking modules
Reports/ -> Run output folder for exported results (created on demand)
Scripts/ -> Entry points and helper scripts
Tests/ -> Pester test scaffolding (to be populated)
UI/ -> XAML views for the WPF runbook builder
- Ensure PowerShell 7+ is installed on the target Windows validation workstation.
- Clone the repository and launch the suite using the starter script:
pwsh .\Scripts\Start-TestSuite.ps1 - To inspect available modules without executing them:
pwsh .\Scripts\Start-TestSuite.ps1 -ListModules
- Override the default module sequence by passing the desired module names:
pwsh .\Scripts\Start-TestSuite.ps1 -Modules BaselineInventory,HardwareDiagnostics
- Use the
-CliOnlyswitch to skip the GUI shell and run the configured modules in headless mode (ideal for CI or lab automation).
- Configure default export formats and archiving behavior in
Config/default.jsonunder theReportingsection. Supported formats include JSON, CSV, and HTML (with graceful handling for future PDF support). - Override the configured formats at runtime using
-ReportFormatsand-ExcludeReportFormatsto opt in or filter specific exporters:pwsh .\Scripts\Start-TestSuite.ps1 -ReportFormats Json,Csv,Html -ExcludeReportFormats Html
- Control packaging behavior with
-EnableReportArchiveor-DisableReportArchiveto toggle compression of the run folder into a timestamped ZIP archive underReports/.
- Module metadata is stored in
module.jsonmanifests. The core framework discovers these manifests and exposes them as a catalog for both CLI and GUI consumption. Config/default.jsondefines a default run plan that engineers can edit or extend. Each entry can inject module-specific parameters without touching the module code.- The WPF view at
UI/MainWindow.xamllays out a low-code experience where engineers can drag, drop, and reorder modules. The GUI binds to the shared run-plan data model so that CLI and GUI workflows remain consistent. - The core framework (
Modules/Core/CoreFramework.psm1) exposes helper functions (Get-TsModuleCatalog,New-TsRunPlan,Invoke-TsRunPlan) that can be composed in other scripts to create custom runbooks or integrate with orchestration tools.
Two illustrative modules are included to demonstrate the lifecycle contract:
- BaselineInventory (
Modules/Image/BaselineInventory): Collects baseline OS version, driver, and update data (stubbed for development). - HardwareDiagnostics (
Modules/Hardware/Diagnostics): Simulates CPU and disk checks with configurable thresholds.
Each module implements the Initialize → Execute → CollectResults flow and returns a consistent result payload that the core framework logs and persists.
- Flesh out additional validation and benchmarking modules per the project plan.
- Implement the PowerShell ViewModel that binds the run-plan builder GUI to the underlying framework commands.
- Extend reporting exporters with PDF generation and advanced packaging workflows.
- Introduce Pester coverage for module contracts and utility functions.
Implementation is broken into modular workstreams (Core framework, GUI, Image validation modules, Hardware benchmarking modules). See the project plan for milestone breakdown and responsibilities. Contributions should include appropriate documentation updates and, when feasible, automated tests.