Skip to content

Samples screenshot regression#3158

Merged
xen2 merged 5 commits intostride3d:masterfrom
xen2:samples-screenshot-regression
May 5, 2026
Merged

Samples screenshot regression#3158
xen2 merged 5 commits intostride3d:masterfrom
xen2:samples-screenshot-regression

Conversation

@xen2
Copy link
Copy Markdown
Member

@xen2 xen2 commented May 5, 2026

PR Details

End-to-end screenshot regression pipeline for Stride samples.

  • New Stride.Games.AutoTesting drives input + captures back-buffer PNGs from inside the regenerated sample.
  • xunit Theory wrapper (Stride.Samples.Tests) discovers fixtures from tests/Stride.Samples.Tests/*.cs, regenerates + builds + launches each sample, then compares captures against committed baselines PNGs
  • Image comparison: LPIPS-AlexNet comparator with Claude-vision fallback (for non-deterministic frames)
  • GH Actions matrix: D3D11 (gating) + D3D12/Vulkan (best-effort, continue-on-error)
  • Daily schedule + manual workflow_dispatch + a manual Update Baselines workflow that opens a PR with refreshed PNGs

xen2 added 5 commits May 5, 2026 09:30
NugetStore.GetLocalPackages mirrors newer local-folder .nupkgs into the
global cache so dev Stride.* shadows public versions. Drops the
metadata-delete in StrideAutoPackDeploy (the mirror replaces it), adds
stride-local + Stride.* mapping in nuget.config, bumps
Microsoft.Build / NuGet / DependencyModel to the .NET 10 SDK versions.
NuGet skips re-extracting when the version matches, leaving stale DLLs
in consumer bins. Remove the extracted dir after each pack.
…ructure

The new Stride.Games.AutoTesting + sample-screenshot pipeline replaces
the SamplesTestServer / ConnectionRouter / Games.Testing path end-to-end.
ConnectionRouter stays — Game Studio, EffectCompilerServer and TestRunner
still use it.
End-to-end screenshot regression pipeline for samples.

* Stride.Games.AutoTesting harness — drives input, captures PNGs,
  writes done.json.
* In-proc LPIPS-AlexNet comparator + optional Claude-vision fallback
  for non-deterministic frames.
* xunit Theory wrapper discovers fixtures from tests/samples/*.cs and
  runs regen + build + launch + compare per sample.
* GH Actions matrix: D3D11 gating, D3D12/Vulkan best-effort (Vulkan via
  Lavapipe), daily schedule + manual update-baselines workflow.
ConfirmRenderingSettings clamps the requested back-buffer size to fit
Window.ClientBounds — fine for dev, wrong for headless CI capture (a
portrait 640x1136 sample gets clipped to 640x749 on a shorter desktop).

Adds SkipBackBufferClampToWindow on GraphicsDeviceManager (copied to
PresentationParameters in ChangeOrCreateDevice). ConfirmRenderingSettings
honours it; the Vulkan swap-chain creation also bypasses
surfaceCapabilities.currentExtent when set. The autotesting harness sets
the flag in OnGameStarted, before device creation.
@xen2 xen2 force-pushed the samples-screenshot-regression branch from a89157d to d1e333b Compare May 5, 2026 01:33
@xen2 xen2 merged commit 514f096 into stride3d:master May 5, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant