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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Novolis.Testing.Appium" Version="2026.1.1.61" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Novolis.Testing.Appium" Version="2026.1.1.61" />
                    
Directory.Packages.props
<PackageReference Include="Novolis.Testing.Appium" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Novolis.Testing.Appium --version 2026.1.1.61
                    
#r "nuget: Novolis.Testing.Appium, 2026.1.1.61"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Novolis.Testing.Appium@2026.1.1.61
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Novolis.Testing.Appium&version=2026.1.1.61
                    
Install as a Cake Addin
#tool nuget:?package=Novolis.Testing.Appium&version=2026.1.1.61
                    
Install as a Cake Tool

Novolis

Novolis · Docs · Source

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.

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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