Novolis.Testing.Playwright
2026.1.1.50
See the version list below for details.
dotnet add package Novolis.Testing.Playwright --version 2026.1.1.50
NuGet\Install-Package Novolis.Testing.Playwright -Version 2026.1.1.50
<PackageReference Include="Novolis.Testing.Playwright" Version="2026.1.1.50" />
<PackageVersion Include="Novolis.Testing.Playwright" Version="2026.1.1.50" />
<PackageReference Include="Novolis.Testing.Playwright" />
paket add Novolis.Testing.Playwright --version 2026.1.1.50
#r "nuget: Novolis.Testing.Playwright, 2026.1.1.50"
#:package Novolis.Testing.Playwright@2026.1.1.50
#addin nuget:?package=Novolis.Testing.Playwright&version=2026.1.1.50
#tool nuget:?package=Novolis.Testing.Playwright&version=2026.1.1.50
Novolis.Testing.Playwright
Walkthrough storage on top of TUnit.Playwright PageTest. TUnit owns the browser lifecycle. This package writes a watchable recording of each test:
walkthrough.html— HTML recording with a part outline, narration, and stills (4s hold, starts paused)frames/NN-step.png— one full-page shot perStepAsyncwalkthrough.json— part + step timelinetrace.zip— Playwright trace (optional, on by default)
Real-time WebM is off by default. Playwright finishes a UI test in seconds, so a <video> of that run is unreadable. Set RecordVideo = true only if you want the raw capture tucked under “Raw capture” in the player.
This package does not start the application under test. Hours (and other hosts) start their own API and Blazor surfaces, then pass BaseUrl.
Install
dotnet add package Novolis.Testing.Playwright
Prerequisites: .NET 10 SDK (net10.0), TUnit.Playwright. Chromium is installed through Microsoft.Playwright.Program.Main(["install", "chromium"]) — C#, not Node. Override the artifact root with NOVOLIS_PLAYWRIGHT_ARTIFACTS. Set NOVOLIS_PLAYWRIGHT_HEADED=1 to show the browser.
Quick start
using Microsoft.Playwright;
using Novolis.Testing.Playwright;
using TUnit.Core;
public sealed class DoorTests : PlaywrightTestBase
{
protected override PlaywrightSessionOptions CreateOptions() => new()
{
BaseUrl = new Uri("http://localhost:5731/"),
ArtifactDirectory = PlaywrightArtifactStore.ForCurrentTest(),
WalkthroughTitle = "Hours door",
};
[Test]
public async Task Sign_in_reaches_the_week()
{
Session.BeginPart("1. Sign in");
await Session.StepAsync("Open door", "The week is behind the door.", page => page.GotoAsync("/"));
using (Session.BeginFlow("Set usual hours"))
{
await Session.StepAsync("Open My hours", "The usual clock is a form.", page =>
page.GetByRole(AriaRole.Link, new() { Name = "My hours" }).ClickAsync());
await Session.StepAsync("Enter 09:00–18:00", "Start and end, then save.", async page =>
{
await page.GetByLabel("Usual start").FillAsync("09:00");
await page.GetByLabel("Usual end").FillAsync("18:00");
});
}
using (Session.BeginFlow("Thursday · Changed", PlaywrightWalkthroughFlowKind.Deviated))
{
using (Session.BeginFlow("I worked different hours", PlaywrightWalkthroughFlowKind.Deviated))
{
await Session.StepAsync("Type 10:00–18:00", "Late, same length.", async page =>
{
await page.GetByLabel("Start").FillAsync("10:00");
await page.GetByLabel("End").FillAsync("18:00");
});
}
}
}
}
After the test, open walkthrough.html in the artifact folder.
Related packages
| Package | When to use |
|---|---|
TUnit.Playwright |
Browser lifecycle (PageTest, [RecordVideo]) — this package sits on it |
Novolis.Testing.Appium |
Android / Windows MAUI hosts |
Novolis.Testing.TUnit |
JSON/table dump helpers for assertions |
Novolis.Testing.TestServer |
In-process HTTP (not a real browser) |
More documentation
Support
Pre-release (2026.1.* on GitHub Packages).
| Product | Versions 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. |
-
net10.0
- Microsoft.Playwright (>= 1.63.0)
- TUnit (>= 1.72.16)
- TUnit.Playwright (>= 1.72.16)
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 |
|---|---|---|
| 2026.1.1.54 | 31 | 10/5/2026 |
| 2026.1.1.53 | 37 | 10/4/2026 |
| 2026.1.1.52 | 39 | 10/4/2026 |
| 2026.1.1.51 | 34 | 10/4/2026 |
| 2026.1.1.50 | 39 | 10/4/2026 |
| 2026.1.1.49 | 40 | 10/4/2026 |