Skip to main content

Testing

Run tests from the repository root. Each suite has its own project and CI matrix

dotnet test Tests/Hyprism.Core.Tests/Hyprism.Core.Tests.csproj
dotnet test Tests/Hyprism.LocalNode.Tests/Hyprism.LocalNode.Tests.csproj
dotnet test Tests/Hyprism.Desktop.Tests/Hyprism.Desktop.Tests.csproj

Coverage boundariesโ€‹

SuiteMain coverage
CoreLaunch coordination, process tracking, profiles, downloads, configuration, mirrors, patching, mods
Local NodeHTTPS routes, tokens, account persistence, certificates, companion lifecycle
DesktopView-model workflows, localization, platform adapters, native view rendering and controls

Local Node tests pin generated certificates and disable platform trust changes. Unit tests use temporary data and mocks rather than live account, game, or third-party services

Desktop tests share an Avalonia application, dispatcher, and compositor and run sequentially. Wait for a final property or state; use fixed delays only when deliberately sampling an intermediate animation frame

Run a focused testโ€‹

Use a fully qualified name filter during development

dotnet test Tests/Hyprism.Desktop.Tests/Hyprism.Desktop.Tests.csproj \
--filter FullyQualifiedName~StringLocalizerTests

Screenshot generation is an opt-in workflow documented under Documentation site. Normal test runs skip that capture

CI and manual checksโ€‹

Core, Desktop, and Local Node run in separate reusable workflows, each with Ubuntu, Windows, and macOS matrix jobs and fail-fast: false. Every matrix job writes a GitHub Step Summary from the TRX result file with total, passed, skipped, and error counts. Failed runs include the last failure in a text code block and upload the TRX file as a job artifact

The macOS entry in the Local Node matrix also publishes apphosts and checks HTTPS health with a generated authority in the disposable runner keychain. This is a step in the macOS Local Node job, not a separate test job. It does not cover an interactive trust prompt on a player's Mac or a full proprietary Hytale launch

Packaging is a separate check group. In ci.yml, it starts only after the Core, Desktop, and Local Node reusable workflows complete successfully

Verify native compositor behavior, platform dialogs, and real game compatibility manually when those boundaries change. For a documentation-only change, run content checks and static export

Source: Tests

Edit this page on GitHub