Gua.Testing.Recording
0.15.0
dotnet add package Gua.Testing.Recording --version 0.15.0
NuGet\Install-Package Gua.Testing.Recording -Version 0.15.0
<PackageReference Include="Gua.Testing.Recording" Version="0.15.0" />
<PackageVersion Include="Gua.Testing.Recording" Version="0.15.0" />
<PackageReference Include="Gua.Testing.Recording" />
paket add Gua.Testing.Recording --version 0.15.0
#r "nuget: Gua.Testing.Recording, 0.15.0"
#:package Gua.Testing.Recording@0.15.0
#addin nuget:?package=Gua.Testing.Recording&version=0.15.0
#tool nuget:?package=Gua.Testing.Recording&version=0.15.0
Gua.Testing.Recording
Gua.Testing.Recording records semantic Gua actions and replays them through the
normal request-ID-correlated action lifecycle. The package targets both net10.0
and netstandard2.1. It depends on Gua.Testing but has
no PNG codec dependency.
Record actions
GuaRecorder measures monotonic elapsed time, captures the semantic revision
before and after each completed action, and stores only the semantic target and
action arguments. Calls are serialized so one recording has deterministic order.
using Gua.Testing.Recording;
var recorder = new GuaRecorder(host.Context);
await recorder.ClickAsync(new(Id: "open-login"));
await recorder.SetValueAsync(new(Id: "email"), "player@example.com",
waitCondition: GuaWaitConditions.Visible("email"));
await recorder.SetValueAsync(new(Id: "password"), password,
sensitive: true, secretKey: "login-password");
await recorder.PressKeyAsync("Enter");
GuaRecordingFile.Save("recordings/login.json", recorder.Recording);
Sensitive values are never stored. A sensitive set_value step contains only a
secretKey; replay requires the caller to resolve it.
Replay reliably
Replay waits for the correlated host completion of every semantic action. It does not treat queue acceptance as success and it does not consume unrelated events. By default a recorded semantic wait condition replaces the corresponding delay; steps without a condition retain their recorded delay.
var recording = GuaRecordingFile.Load("recordings/login.json");
var result = await GuaReplayer.ReplayAsync(host.Context, recording, new()
{
SecretResolver = key => key == "login-password" ? password : null,
ActionTimeout = TimeSpan.FromSeconds(5),
});
Supported conditions are produced by GuaWaitConditions: visible, hidden,
enabled, disabled, focused, unfocused, checked, unchecked, text, and value.
Coordinate fallback is disabled by default and requires both explicit permission
and a caller-provided executor.
Import retained diagnostics
GuaRecordingFile.ImportDiagnostics pairs enqueued operations with observed events
by request ID. Current runtimes provide monotonic elapsed milliseconds, per-entry
revision, scroll deltas, checked values, key/modifier data, and scroll units. The
returned metadata reports unpaired operations and whether an older diagnostics
payload forced synthetic sequence-based timing. Use FromDiagnostics only when
that import metadata is not needed.
Recording version 1 follows protocol/schema/recording.schema.json.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Gua.Testing (>= 0.15.0)
- System.Text.Json (>= 10.0.0)
-
net10.0
- Gua.Testing (>= 0.15.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.