FS.GG.UI.Testing 0.8.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package FS.GG.UI.Testing --version 0.8.0
                    
NuGet\Install-Package FS.GG.UI.Testing -Version 0.8.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FS.GG.UI.Testing" Version="0.8.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FS.GG.UI.Testing" Version="0.8.0" />
                    
Directory.Packages.props
<PackageReference Include="FS.GG.UI.Testing" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FS.GG.UI.Testing --version 0.8.0
                    
#r "nuget: FS.GG.UI.Testing, 0.8.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FS.GG.UI.Testing@0.8.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FS.GG.UI.Testing&version=0.8.0
                    
Install as a Cake Addin
#tool nuget:?package=FS.GG.UI.Testing&version=0.8.0
                    
Install as a Cake Tool

FS.GG.UI.Testing

Generated product and package validation helpers for FS.GG.UI V3 products.

FS.GG.UI.Testing is one of the FS.GG.UI distribution packages — an F# / Elmish UI and 2D scene-graph framework for .NET 10 desktop, rendered through OpenGL + SkiaSharp.

Install

dotnet add package FS.GG.UI.Testing

Or scaffold a full governed project that wires the FS.GG.UI packages together:

dotnet new install FS.GG.UI.Template
dotnet new fs-gg-ui -o MyApp

Usage

open FS.GG.UI.Testing

// Describe what a generated product is expected to contain.
let expectation =
    { Profile = "default"
      RequiredFiles = [ "Program.fs"; "Directory.Packages.props" ]
      ForbiddenPrefixes = [ "Internal." ]
      PackageReferences =
        [ { PackageId = "FS.GG.UI"; Required = true } ] }

printfn "%s" (GeneratedProductAssertions.summarize expectation)

// Detect pinned-package drift against the expected local consumer feed.
let expected = [ { PackageId = "FS.GG.UI"; Version = "3.0.0"; FeedPath = "./feed" } ]
let actual = [ { PackageId = "FS.GG.UI"; Version = "2.9.0"; FeedPath = "./feed" } ]

for drift in LocalConsumerPackages.classifyDrift expected actual do
    printfn "%s expected %s but found %A — run: %s"
        drift.PackageId drift.ExpectedVersion drift.ActualVersion drift.RemediationCommand

// Validate structured visual inspection evidence produced by Scene/Controls.
let validation =
    VisualInspectionValidation.validate
        inspectionArtifact
        VisualInspectionValidation.defaultRules
        []

printfn "%s" (VisualInspection.statusText validation.ReadinessStatus)

API at a glance

  • GeneratedProductAssertionssummarize a GeneratedProductExpectation, plus validateDefaultInteractiveLaunch and validateWindowDiagnostics for launch/window checks.
  • LocalConsumerPackagesreport the local consumer feed and classifyDrift to surface version mismatches with remediation commands.
  • GeneratedConsumerValidation — verify package resolution and generated tests, selectVisualEvidence, and buildValidationContractOutput to assemble the full generated-product validation contract.
  • GeneratedLayoutValidation / DefaultTextGlyphEvidencevalidate HUD layout bounds and rendered text-glyph coverage from captured evidence.
  • HostWarningClassification.classify — classify a host warning as benign vs. launch/render/layout/package failure.
  • EvidenceReportsbuild, write, and validate evidence reports, including validateScreenshotArtifact and validateScreenshotEvidence for screenshot proofs.
  • VisualCaptureMatrix / VisualCompleteness / VisualReviewerClassifications / VisualReadiness / VisualReadinessMarkdown — shared visual-readiness helpers for screenshot matrices, PNG completeness, reviewer gates, contact-sheet metadata, reports, and managed summary sections.
  • VisualInspectionValidation / VisualInspectionReadiness / VisualInspectionMarkdown — deterministic structured-inspection validation, intentional exception handling, readiness aggregation, machine-readable JSON, reviewer Markdown, and managed-section updates over FS.GG.UI.Scene inspection artifacts.
  • PersistentLaunchArtifactValidation / ReadinessFileDiscoveryvalidate persisted launch artifacts and required readiness files.
  • LayoutReadiness — validate Feature150-style layout readiness reports that aggregate public contract, ScrollViewer, intrinsic/cache, parity, compatibility, diagnostics, evidence links, deltas, and limitations.

Visual Readiness

Samples and generated products can keep rendering and screenshot capture at their app edge while using FS.GG.UI.Testing for generic visual-readiness evidence.

open FS.GG.UI.Testing

let pages =
    [ { PageId = "overview"; Title = "Overview"; Order = 0; Required = true } ]

let themes =
    [ { ThemeId = "light"; Title = "Light"; Order = 0 } ]

let sizes =
    [ { Role = "preferred"; Width = 1600; Height = 1000; Order = 0 } ]

let targets =
    VisualCaptureMatrix.expand pages themes sizes (fun page theme size ->
        $"{size.Role}/{theme.ThemeId}/{page.PageId}.png")

match targets with
| Ok targets ->
    let captures, staleDiagnostics = VisualCompleteness.validate "readiness/visual" targets
    let reviewerMarkdown = VisualReviewerClassifications.writeTemplate targets
    let reviewer = VisualReviewerClassifications.parse reviewerMarkdown targets
    let report =
        VisualReadiness.evaluate
            "sample-run"
            "readiness/visual"
            targets
            captures
            reviewer.Classifications
            []
            staleDiagnostics
            []

    printfn "%s" (VisualReadinessMarkdown.renderSummary report)
| Error diagnostics ->
    diagnostics |> List.iter (printfn "visual-readiness: %s")

Generated content in human-authored summaries is bounded by managed markers:


generated visual-readiness content

VisualReadinessMarkdown.updateManagedSection inserts missing markers deterministically and updates exactly one managed section. Multiple, reversed, or one-sided markers return SafeToWrite = false and leave the original text unchanged.

Structured Visual Inspection

Structured inspection complements screenshot evidence. FS.GG.UI.Scene defines the artifact records, FS.GG.UI.Controls can emit them from Control.renderTree, and FS.GG.UI.Testing validates rules such as required regions, text containment, clipping intent, paint coverage, overlay exceptions, identity stability, visual-order stability, and unsupported required facts.

Generated content in inspection summaries is bounded by managed markers:


generated visual-inspection content

Unsupported, not-inspected, not-run, and environment-limited scopes stay visible in summaries and are not collapsed into accepted evidence.

Layout Readiness

LayoutReadiness.validate is pure: pass a LayoutReadinessReport with discovered evidence and compatibility deltas, and it returns an accepted/missing/blocked status plus diagnostics. It is meant for package consumers and readiness scripts that need to distinguish accepted evidence from failed, skipped, synthetic-only, compatibility-blocked, or missing layout evidence.

Feature151 uses the same helper shape for final P8 readiness. Required evidence files are validated with ReadinessFileDiscovery, and the aggregate report links corpus, ScrollViewer, reuse, parity, regression, compatibility, package, and limitation evidence without adding new Testing API.

Versioning

All FS.GG.UI.* libraries share one version and move together. In a generated project a single <FsGgUiVersion> in Directory.Packages.props pins every package — upgrading is one edit; see docs/UPGRADING.md. Pre-release versions use a -preview.N suffix.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on FS.GG.UI.Testing:

Package Downloads
FS.GG.UI

Optional BOM / metapackage for the FS.GG.UI framework. Reference this single package at one version to pin the entire coherent FS.GG.UI.* set to that version; any attempt to mix a member at a different version fails loudly at restore/build. Ships no assembly — dependencies only.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.18.0 0 7/22/2026
0.15.0 141 7/20/2026
0.14.0 128 7/19/2026
0.13.0 145 7/18/2026
0.12.0 269 7/17/2026
0.11.0 353 7/16/2026
0.10.0 421 7/14/2026
0.9.2 476 7/13/2026
0.9.0 567 7/11/2026
0.8.0 204 7/11/2026
0.7.0 176 7/11/2026
0.6.0 151 7/10/2026
0.5.0 201 7/10/2026
0.4.0 273 7/9/2026
0.4.0-preview.1 66 7/9/2026
0.3.0-preview.1 59 7/7/2026
0.2.0-preview.1 56 7/6/2026
0.1.64-preview.1 54 7/5/2026
0.1.63-preview.1 61 7/4/2026
0.1.62-preview.1 59 7/4/2026
Loading failed