Novolis.Testing.Appium
2026.1.1.61
dotnet add package Novolis.Testing.Appium --version 2026.1.1.61
NuGet\Install-Package Novolis.Testing.Appium -Version 2026.1.1.61
<PackageReference Include="Novolis.Testing.Appium" Version="2026.1.1.61" />
<PackageVersion Include="Novolis.Testing.Appium" Version="2026.1.1.61" />
<PackageReference Include="Novolis.Testing.Appium" />
paket add Novolis.Testing.Appium --version 2026.1.1.61
#r "nuget: Novolis.Testing.Appium, 2026.1.1.61"
#:package Novolis.Testing.Appium@2026.1.1.61
#addin nuget:?package=Novolis.Testing.Appium&version=2026.1.1.61
#tool nuget:?package=Novolis.Testing.Appium&version=2026.1.1.61
Novolis.Testing.Appium
TUnit helpers that open Android and Windows Appium sessions for MAUI hosts and write a per-test evidence timeline from driver screenshots. The C# client connects to an already running Appium server. This package does not reference Microsoft.Maui.* and does not start Appium, install drivers, or launch emulators.
Install
dotnet add package Novolis.Testing.Appium
Prerequisites: .NET 10 SDK (net10.0), TUnit, Appium server already listening (default http://127.0.0.1:4723/). Install UiAutomator2 and/or the Windows driver on that server outside this repo. Override the URI with APPIUM_HOST.
Quick start (Android)
using Novolis.Testing.Appium;
using TUnit.Core;
public sealed class SettingsTests : AndroidAppiumTestBase<SettingsTests>
{
protected override AndroidAppiumSessionOptions CreateOptions() => new()
{
AppPackage = "com.android.settings",
AppActivity = ".Settings",
NoReset = true,
};
[Test]
public async Task Apps_row_opens()
{
await Timeline.StepAsync(
"Open Settings",
"The apps list is the first screen.",
_ => Session.StartActivity("com.android.settings", ".Settings"));
await Assert.That(Driver).IsNotNull();
}
}
Point AppPath at a built APK when the package is not already on the device. StartActivity sends mobile:startActivity (the 5.x AndroidDriver.StartActivity(package, activity) overload is gone).
Quick start (Windows)
using Novolis.Testing.Appium;
public sealed class HostTests : WindowsAppiumTestBase<HostTests>
{
protected override WindowsAppiumSessionOptions CreateOptions() => new()
{
App = @"C:\apps\Merglyph.exe",
};
}
App may be an exe path or a packaged application id. The server must run appium-windows-driver; this library only sets capabilities.
Timeline
The driver session stays class-scoped. Each test gets its own recording. Timeline.StepAsync runs the driver work, then stores a PNG via GetScreenshot. Timeline.CaptureAsync stores the current screen without extra work. Record, RecordTelemetry, and Log write evidence that has no frame. The test fixture flushes timeline.json, timeline.md, and timeline.html after the test and refreshes index.html at the collection root.
Override the title without losing the stamp folder:
protected override AppiumTimelineOptions CreateTimelineOptions() =>
base.CreateTimelineOptions() with { TimelineTitle = "Reach Android" };
Sessions opened with Connect can record without the fixture:
using var session = AndroidAppiumSession.Connect(new AndroidAppiumSessionOptions
{
AppPath = apk,
NoReset = true,
});
var timeline = new AppiumTimeline(session.Driver, new AppiumTimelineOptions
{
TimelineTitle = "Reach Android",
});
await timeline.CaptureAsync(
"client-launched",
"The client is ready for a trusted endpoint.");
await timeline.FlushAsync();
Artifact root: NOVOLIS_APPIUM_ARTIFACTS, otherwise artifacts/appium beside the nearest artifacts directory. Frames land in frames/NN-step.png.
Related packages
| Package | When to use |
|---|---|
Novolis.Testing.Timeline |
Frame, event, and HTML model this package writes |
Novolis.Testing.Playwright |
The same timeline shape on a browser page |
Novolis.Testing.TestBases |
In-process host fixtures (not device UI) |
Novolis.Testing.TUnit |
JSON/table dump helpers for assertions |
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
- Appium.WebDriver (>= 9.0.0)
- Novolis.Testing.Timeline (>= 2026.1.1.61)
- TUnit (>= 1.75.0)
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.61 | 46 | 10/25/2026 |
| 2026.1.1.60 | 81 | 10/18/2026 |
| 2026.1.1.58 | 89 | 10/18/2026 |
| 2026.1.1.54 | 97 | 10/5/2026 |
| 2026.1.1.53 | 95 | 10/4/2026 |
| 2026.1.1.52 | 99 | 10/4/2026 |
| 2026.1.1.51 | 94 | 10/4/2026 |
| 2026.1.1.50 | 89 | 10/4/2026 |
| 2026.1.1.49 | 93 | 10/4/2026 |
| 2026.1.1.47 | 94 | 10/4/2026 |
| 2026.1.1.45 | 85 | 10/4/2026 |
| 2026.1.1.44 | 93 | 10/4/2026 |
| 2026.1.1.43 | 103 | 10/2/2026 |
| 2026.1.1.42 | 98 | 10/2/2026 |
| 2026.1.1.41 | 100 | 10/1/2026 |
| 2026.1.1.40 | 103 | 9/30/2026 |