QaaS.Runner 4.1.0-alpha.2

This is a prerelease version of QaaS.Runner.
There is a newer version of this package available.
See the version list below for details.
dotnet add package QaaS.Runner --version 4.1.0-alpha.2
                    
NuGet\Install-Package QaaS.Runner -Version 4.1.0-alpha.2
                    
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="QaaS.Runner" Version="4.1.0-alpha.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="QaaS.Runner" Version="4.1.0-alpha.2" />
                    
Directory.Packages.props
<PackageReference Include="QaaS.Runner" />
                    
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 QaaS.Runner --version 4.1.0-alpha.2
                    
#r "nuget: QaaS.Runner, 4.1.0-alpha.2"
                    
#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 QaaS.Runner@4.1.0-alpha.2
                    
#: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=QaaS.Runner&version=4.1.0-alpha.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=QaaS.Runner&version=4.1.0-alpha.2&prerelease
                    
Install as a Cake Tool

QaaS.Runner

CI .NET C%23

QaaS.Runner is the execution orchestration layer for QaaS test workflows. It loads YAML-based test definitions, builds execution pipelines, runs sessions/assertions/storage flows, and writes rich reports (Allure).

Official documentation: TheSmokeTeam QaaS Docs

Table of Contents

Solution Overview

This repository contains one solution: QaaS.Runner.sln.

The solution is organized into:

  • QaaS.Runner: top-level execution orchestration and command loading.
  • QaaS.Runner.Assertions: assertion execution and report writing (Allure).
  • QaaS.Runner.Sessions: staged session/actions runtime.
  • QaaS.Runner.Storage: storage and retrieval of session data (FileSystem/S3).
  • QaaS.Runner.Infrastructure: shared utility layer.
  • *.Tests projects: NUnit test suites for each core area.

NuGet Packages

Badges use shields.io and NuGet endpoints.

Package Latest Version Downloads Notes
QaaS.Runner NuGet NuGet Published package
QaaS.Runner.Assertions NuGet NuGet Internal project in this solution
QaaS.Runner.Sessions NuGet NuGet Internal project in this solution
QaaS.Runner.Storage NuGet NuGet Internal project in this solution
QaaS.Runner.Infrastructure NuGet NuGet Internal project in this solution

Architecture

flowchart LR
  A["CLI / Consumer Args"] --> B["Bootstrap"]
  B --> C["RunLoader / ExecuteLoader"]
  C --> D["ExecutionBuilder"]
  D --> E["Execution"]
  E --> F["DataSourceLogic"]
  E --> G["SessionLogic"]
  E --> H["StorageLogic"]
  E --> I["AssertionLogic"]
  E --> J["ReportLogic"]
  J --> K["Allure Results"]

Execution flow is selected by command verb:

  • run: DataSources → Sessions → Assertions → Reports
  • act: DataSources → Sessions → Storage
  • assert: DataSources → Storage → Assertions → Reports
  • template: Prints templated/expanded configuration
  • execute: Runs a YAML list of commands sequentially

Core Functionalities

1. Bootstrap and Runner Lifecycle

  • Parses supported verbs with CommandLineParser.
  • Maps each verb into corresponding loader.
  • Builds one or more ExecutionBuilder instances.
  • Runs setup/build/start/teardown lifecycle in Runner.
  • Supports optional result cleanup and auto-serving Allure output.

2. Configuration Loading and Case Expansion

  • Loads .qaas.yaml configuration.
  • Supports overwrite files and overwrite arguments.
  • Supports push-references and environment variable resolution.
  • Supports running a single config or a set of case files.
  • Supports case loading from filesystem or JFrog Artifactory URL.

3. Sessions Runtime

  • Sessions are split into ordered stages.
  • Stage actions run concurrently where applicable.
  • Supports publishers, consumers, transactions, probes, and collectors.
  • Tracks action failures and flakiness metadata.
  • Produces SessionData payloads for assertions/storage.

4. Assertions and Reporting

  • Builds assertions from configured hook names.
  • Filters sessions/data sources by name or regex.
  • Computes assertion status (Passed, Failed, Broken, etc.).
  • Generates Allure test results with:
    • links (Grafana/Kibana/Prometheus builders),
    • session data attachments,
    • assertion attachments,
    • configuration template attachment,
    • optional coverage XML attachments.

5. Storage

  • FileSystemStorage: stores/retrieves serialized session JSON files.
  • S3Storage: stores/retrieves session JSON via S3-compatible APIs.
  • Unified StorageBuilder ensures a single active storage type per builder.

6. Execute Orchestration

  • execute command reads a YAML command list and runs them in order.
  • Supports filtering by command IDs.
  • Prevents recursive execute invocation from within execute command file.

Getting Started

Prerequisites

  • .NET SDK 10.x
  • Access to QaaS configuration files (.qaas.yaml, optional cases)
  • Optional: Allure CLI for local result serving

Install Package

dotnet add package QaaS.Runner

Build and Test

dotnet restore QaaS.Runner.sln
dotnet build QaaS.Runner.sln --configuration Release
dotnet test QaaS.Runner.sln --configuration Release

Command Verbs

# full run (sessions + assertions + reports)
qaas run ./test.qaas.yaml

# act only (produce and store session data)
qaas act ./test.qaas.yaml

# assert only (load session data and assert)
qaas assert ./test.qaas.yaml

# template effective config
qaas template ./test.qaas.yaml

# execute command list from executable yaml
qaas execute ./executable.yaml

Typical useful flags (see source options for complete list):

  • --with-files: overlay configuration files
  • --overwrite-arguments: inline key-path overrides
  • --push-references: push reference fragments into list sections
  • --cases: run across a cases directory or URL
  • --session-names / --assertion-names: partial execution filters
  • --session-categories / --assertion-categories: category filters

Testing and Coverage

Coverage below was measured from local run:

  • Command: dotnet test QaaS.Runner.sln --collect:"XPlat Code Coverage" --results-directory TestResults
  • Date: 2026-03-06
  • Method: aggregated line coverage across all generated Cobertura reports
Project Coverage Covered Lines Total Lines
QaaS.Runner Coverage 1036 1059
QaaS.Runner.Assertions Coverage 716 807
QaaS.Runner.Sessions Coverage 2151 2201
QaaS.Runner.Storage Coverage 124 152
QaaS.Runner.Infrastructure Coverage 32 54

Project Structure

QaaS.Runner.sln
|- QaaS.Runner
|- QaaS.Runner.Assertions
|- QaaS.Runner.Sessions
|- QaaS.Runner.Storage
|- QaaS.Runner.Infrastructure
|- QaaS.Runner.Tests
|- QaaS.Runner.Assertions.Tests
|- QaaS.Runner.Sessions.Tests
|- QaaS.Runner.Storage.Tests
|- QaaS.Runner.Infrastructure.Tests
|- QaaS.Runner.E2ETests
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
4.3.0 81 3/31/2026
4.2.1 149 3/28/2026
4.2.0 79 3/26/2026
4.1.1 97 3/23/2026
4.1.1-alpha.1 34 3/22/2026
4.1.0 104 3/21/2026
4.1.0-alpha.27 30 3/22/2026
4.1.0-alpha.26 36 3/22/2026
4.1.0-alpha.25 38 3/21/2026
4.1.0-alpha.23 38 3/21/2026
4.1.0-alpha.22 42 3/17/2026
4.1.0-alpha.21 35 3/17/2026
4.1.0-alpha.20 35 3/17/2026
4.1.0-alpha.19 40 3/17/2026
4.1.0-alpha.17 43 3/17/2026
4.1.0-alpha.16 42 3/16/2026
4.1.0-alpha.15 58 3/15/2026
4.1.0-alpha.14 46 3/15/2026
4.1.0-alpha.3 48 3/11/2026
4.1.0-alpha.2 45 3/6/2026
Loading failed