test(render): add connected remote-player shadow gate

This commit is contained in:
Erik 2026-08-22 14:03:50 +02:00
parent e56ac57486
commit a861510a37
4 changed files with 376 additions and 0 deletions

View file

@ -12,6 +12,8 @@ public sealed class ConnectedRenderPackGateContractTests
private const string SoakScript = "run-connected-r6-soak.ps1";
private const string PackageLifecycleScript =
"run-connected-render-pack-package-lifecycle.ps1";
private const string RemotePlayerScript =
"run-connected-render-pack-remote-player-gate.ps1";
[Fact]
public void ScreenshotJsonCarriesAuthoritativeCasterClassCounters()
@ -233,6 +235,40 @@ Remove-ConnectedGraphicalSessionConfig -State $state -Path $sessionConfigPath
"checkpoint package-lifecycle");
}
[Fact]
public void ConnectedRemotePlayerGateUsesDistinctCharactersAndRequiresCasterEvidence()
{
string source = ReadTool(RemotePlayerScript);
Assert.Contains("PrimaryCharacterIndex = 0", source, StringComparison.Ordinal);
Assert.Contains("ObserverCharacterIndex = 1", source, StringComparison.Ordinal);
Assert.Contains("Primary and observer character indexes must differ", source, StringComparison.Ordinal);
Assert.Contains("Get-ConnectedGateBinaryIdentity", source, StringComparison.Ordinal);
Assert.Contains("-CharacterIndex $ObserverCharacterIndex", source, StringComparison.Ordinal);
Assert.Contains("-CharacterIndex $PrimaryCharacterIndex", source, StringComparison.Ordinal);
Assert.Contains("[int]$classes.RemotePlayers -lt 1", source, StringComparison.Ordinal);
Assert.Contains("both clients entered world with the same character identity", source, StringComparison.Ordinal);
Assert.Contains("Restore-ConnectedRenderPackGateEnvironment $primaryState", source, StringComparison.Ordinal);
Assert.Contains("Restore-ConnectedRenderPackGateEnvironment $observerState", source, StringComparison.Ordinal);
string observer = ReadTool("connected-render-pack-remote-observer.route.txt");
AssertAppearsInOrder(
observer,
"command /teleloc 0x09040008",
"wait materialized 1 90000",
"input down MovementForward",
"input up MovementForward",
"checkpoint remote-observer");
string primary = ReadTool("connected-render-pack-remote-primary.route.txt");
AssertAppearsInOrder(
primary,
"command /teleloc 0x09040008",
"wait materialized 1 90000",
"screenshot remote-player-before 15000",
"screenshot remote-player-after 15000",
"checkpoint remote-primary");
}
[Fact]
public void EveryConnectedScreenshotMustProveExactFailureFreeActivation()
{