Platform.Sdk
1.0.0-alpha.3
dotnet add package Platform.Sdk --version 1.0.0-alpha.3
NuGet\Install-Package Platform.Sdk -Version 1.0.0-alpha.3
<PackageReference Include="Platform.Sdk" Version="1.0.0-alpha.3" />
<PackageVersion Include="Platform.Sdk" Version="1.0.0-alpha.3" />
<PackageReference Include="Platform.Sdk" />
paket add Platform.Sdk --version 1.0.0-alpha.3
#r "nuget: Platform.Sdk, 1.0.0-alpha.3"
#:package Platform.Sdk@1.0.0-alpha.3
#addin nuget:?package=Platform.Sdk&version=1.0.0-alpha.3&prerelease
#tool nuget:?package=Platform.Sdk&version=1.0.0-alpha.3&prerelease
Platform.Sdk
The compile-time provider SDK for authoring vouchfx
step providers. This package is the frozen v1 contract (v1.x engine series) — the
narrow, strongly-typed surface a provider compiles against.
vouchfx compiles declarative .e2e.yaml integration tests into C#, runs them through
Roslyn, and orchestrates the required container topology with .NET Aspire + Testcontainers
to test distributed .NET systems end-to-end — one business transaction crossing a REST
call, a Kafka event, a DB mutation and an outbound webhook.
What this package gives you
A step provider is a compile-time, source-level plugin — there is no runtime loader, no
dynamic assembly loading, and no sandbox. You add a project, reference Platform.Sdk,
implement the contract interfaces, and mark your provider class [StepProvider]; the
engine's reflective StepKindRegistry (frozen at startup) discovers it.
The contract surface exposed by this package:
| Type | Role |
|---|---|
IStepProvider |
Provider identity (Kind + Metadata). |
IStepBinder<TModel> |
Deserialises a step's YAML into a strongly-typed model + supplies its JSON Schema fragment. |
IStepValidator<TModel> |
Validates a bound model with author-friendly diagnostics. |
IStepCompiler<TModel> |
Emits the CsxFragment spliced into the compiled test delegate. |
IResourceContributor<TModel> |
Contributes Aspire resources a step needs. |
IStepModel |
Marker every provider step-model record implements. |
StepKindId |
The <family>.<provider> identity (e.g. db-assert.postgres). |
ProviderMetadata |
Version / min-engine-version / licence / authors. |
CsxFragment |
RequiredUsings + RequiredHelpers + one brace-enclosed StatementBlock. |
[StepProvider] |
Discovery attribute placed on the provider class. |
Quick start
using Platform.Sdk;
[StepProvider]
public sealed class MyProvider : IStepProvider
{
public StepKindId Kind => new("db-assert", "postgres");
public ProviderMetadata Metadata => new(
Version: "1.0.0",
MinEngineVersion: "1.0.0",
License: "Apache-2.0",
Authors: new[] { "you" });
}
Then implement IStepBinder<TModel>, IStepValidator<TModel>, IStepCompiler<TModel>,
and (if the step needs infrastructure) IResourceContributor<TModel> for your model.
Authoring rules that matter
- Step type =
<family>.<provider>— family is the intent (db-assert), provider is the technology (postgres). - Models are strongly-typed records, never
Dictionary<string,object>. CsxFragmentcomposition:RequiredUsingsare bare namespace strings (never inlineusinglines);RequiredHelpersare nested static classes prefixed with your provider id; theStatementBlockis exactly one brace-enclosed C# block.using varis illegal in a Roslyn script body — use plainvar+ explicit.Dispose()in afinally. Sanitise step ids withCsxFragment.SanitiseIdbefore splicing.- Cross-step state passes only through the
Varsglobal.
The v1 interface contract is frozen for the v1.x engine series — evolution is additive only, via new optional interfaces.
Contributing a provider
The authoritative provider-authoring guide is the provider architecture section (§13) of
the Technical Architecture and Engineering Blueprint, alongside the CONTRIBUTING guide in
the repository:
- Provider architecture (§13):
docs/01_Technical_Architecture_and_Engineering_Blueprint.md - Contributing guide:
CONTRIBUTING.md
Licence
Apache-2.0. See LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- YamlDotNet (>= 16.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 |
|---|