MacroDeck.Plugin.Testing
3.0.0-preview.10
dotnet add package MacroDeck.Plugin.Testing --version 3.0.0-preview.10
NuGet\Install-Package MacroDeck.Plugin.Testing -Version 3.0.0-preview.10
<PackageReference Include="MacroDeck.Plugin.Testing" Version="3.0.0-preview.10" />
<PackageVersion Include="MacroDeck.Plugin.Testing" Version="3.0.0-preview.10" />
<PackageReference Include="MacroDeck.Plugin.Testing" />
paket add MacroDeck.Plugin.Testing --version 3.0.0-preview.10
#r "nuget: MacroDeck.Plugin.Testing, 3.0.0-preview.10"
#:package MacroDeck.Plugin.Testing@3.0.0-preview.10
#addin nuget:?package=MacroDeck.Plugin.Testing&version=3.0.0-preview.10&prerelease
#tool nuget:?package=MacroDeck.Plugin.Testing&version=3.0.0-preview.10&prerelease
MacroDeck.Plugin.Testing
Test host, fakes and assertions for a plugin built on MacroDeck.Plugin.Hosting - written against that
package's public surface only, so it stays accurate across hosting refactors instead of drifting the
way a hand-rolled double would.
What's here
MacroDeckTestHost- a real loopback host speaking the plugin protocol. Host a plugin in-process withHostAsync, or launch a real executable withLaunchAsync; either way you get aPluginSessionViewto invoke capabilities on and assert against.PluginTestHarness- drives a plugin's capability handlers directly, with no socket at all, for a fast unit test that does not need the wire.MacroDeck.Plugin.Testing.Conformance- a framework-agnostic suite of protocol-level checks any plugin can be run against, from your own test project or frommacrodeck-plugin test. See the conformance guide.MacroDeck.Plugin.Testing.Fakes- in-memory stand-ins for the eight APIsIIntegrationContextexposes (variables, user variables, config and secrets, deck navigation, scripts, widgets, events, notifications) plus action interactions, so an integration can be exercised without a host on the other end of any of them.ManualTimeProviderandWait.UntilAsync- a clock you advance by hand and a polling helper that throwsPluginTestTimeoutExceptioninstead of hanging.
Two authentication modes
PluginTestCredentials.Managed and PluginTestCredentials.SelfRegistering drive HostAsync through
both registration modes a real plugin can run in, the same way MacroDeck:Plugin:* configuration and
MACRO_DECK_PLUGIN_* environment variables do for a host-launched or self-registering plugin
respectively - both paths derive their key names from PluginEnvironmentConfiguration.KeysByVariable
rather than restating them.
What this package deliberately does not do
It has no dependency on host/src and never will - a plugin author testing against it gets exactly the
fidelity a third party gets, nothing the real host does differently. It also references no test
framework: Wait.UntilAsync throws rather than asserting, so it works the same under NUnit, xUnit or
anything else.
Licensed under Apache-2.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- JsonSchema.Net (>= 9.4.0)
- MacroDeck.Plugin.Hosting (>= 3.0.0-preview.10)
- MacroDeck.Plugin.Packaging (>= 3.0.0-preview.10)
- Serilog (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0-preview.10 | 150 | 9/4/2026 |
| 3.0.0-preview.8 | 63 | 9/1/2026 |
| 3.0.0-preview.7 | 69 | 8/28/2026 |
| 3.0.0-preview.6 | 78 | 8/24/2026 |
| 3.0.0-preview.5 | 68 | 8/22/2026 |
| 3.0.0-preview.4 | 73 | 8/20/2026 |
| 3.0.0-preview.3 | 81 | 8/14/2026 |
| 3.0.0-preview.2 | 68 | 8/14/2026 |
| 3.0.0-preview.1 | 71 | 8/13/2026 |
| 3.0.0-beta.11 | 104 | 9/17/2026 |
| 3.0.0-beta.7 | 61 | 9/16/2026 |
| 3.0.0-beta.6 | 41 | 9/15/2026 |
| 3.0.0-beta.5 | 61 | 9/14/2026 |
| 3.0.0-beta.4 | 100 | 9/11/2026 |
| 3.0.0-beta.3 | 58 | 9/9/2026 |
| 3.0.0-beta.2 | 64 | 9/6/2026 |
| 3.0.0-beta.1 | 74 | 9/6/2026 |