Skip to main content

Driver sessions

The DriverSession class manages test session state and cleanup.

using Avalonia.HeadlessTestingFramework.Appium;

// Create session with capabilities
var capabilities = new SessionCapabilities
{
ImplicitWait = TimeSpan.FromSeconds(5),
PageLoadTimeout = TimeSpan.FromSeconds(30),
ScreenshotsOnFailure = true,
ScreenshotDirectory = "test-screenshots",
RecordLogs = true
};

using var session = new DriverSession(driver, capabilities);

// Store session data
session.SetData("testUser", "admin");
session.SetData("environment", "staging");

// Retrieve data
var user = session.GetData<string>("testUser");
var timeout = session.GetData("timeout", TimeSpan.FromSeconds(10)); // with default

// Check data
bool hasUser = session.HasData("testUser");
var keys = session.DataKeys;

// Remove data
session.RemoveData("testUser");

// Register cleanup actions
session.RegisterCleanup(() => driver.FindElement(By.Id("logout")).Click());
session.RegisterCleanup(() => Console.WriteLine("Test completed"));

// Get session info
var info = session.GetSessionInfo();
Console.WriteLine($"Session ID: {info["sessionId"]}");
Console.WriteLine($"Duration: {info["duration"]}");

// Reset session (runs cleanup and clears data)
session.Reset();

// Session logging
var logger = new SessionLogger();
logger.Info("Starting test");
logger.Debug("Clicking button");
logger.Warning("Element took longer than expected");
logger.Error("Failed to find element", new NoSuchElementException("Element not found"));

// Get logs
var errors = logger.GetEntries(LogLevel.Error);
foreach (var entry in errors)
{
Console.WriteLine(entry.ToString());
}