-
Notifications
You must be signed in to change notification settings - Fork 1
API Reference
| Class / Record | Description |
|---|---|
ReportConfigurationOptions |
Configuration for report file names, titles, PlantUML server, excluded headers, setup separation, focus styling, PlantUML theme, image format, and custom stylesheets. |
DiagramsFetcherOptions |
Configuration for diagram content formatting processors, header exclusions, setup separation, focus styling, PlantUML theme, and image format. |
DefaultDiagramsFetcher |
Static class; GetDiagramsFetcher(options?) returns a Func<DiagramAsCode[]> that fetches all generated diagrams. |
DefaultDiagramsFetcher.DiagramAsCode |
Record containing TestRuntimeId, ImgSrc (rendered PNG URL), and CodeBehind (raw PlantUML). |
DefaultTrackingDiagramOverride |
Static class for manual diagram control: StartOverride, EndOverride, InsertPlantUml, InsertTestDelimiter, StartAction. |
DiagramFocus |
Static class for declarative field highlighting. Request<T>(...) and Response<T>(...) set focus fields for the next HTTP call. Prefer the fluent WithDiagramFocus() API when the focus and HTTP call are in the same method. See Content Formatting#DiagramFocus (Field Highlighting). |
HttpClientDiagramFocusExtensions |
Extension method WithDiagramFocus() on HttpClient. Returns a FocusedHttpClient for fluent focus configuration. |
FocusedHttpClient |
Fluent builder returned by WithDiagramFocus(). Chain .OnRequest<T>(...) / .OnResponse<T>(...) then a terminal HTTP method (PostAsJsonAsync, GetAsync, etc.) or .ApplyFocus() to get back the underlying HttpClient for use with custom extension methods. |
FocusEmphasis |
[Flags] enum: None, Bold, Colored. Controls styling of focused fields in diagram notes. |
FocusDeEmphasis |
[Flags] enum: None, LightGray, SmallerText, Hidden. Controls styling of non-focused fields in diagram notes. |
PlantUmlImageFormat |
Enum: Png, Svg, Base64Png, Base64Svg. Controls the image format used for rendered diagram URLs. Base64Png/Base64Svg embed images inline as data URIs (requires LocalDiagramRenderer). |
DiagramFormat |
Enum: PlantUml. Controls the output format for sequence diagrams. |
PlantUmlRendering |
Enum: Server, BrowserJs, Local, NodeJs. Controls how PlantUML diagrams are rendered. Server uses a remote PlantUML server. BrowserJs renders client-side via the official TeaVM JS engine with lazy IntersectionObserver rendering. Local renders in-process via IKVM (requires LocalDiagramRenderer). NodeJs renders locally via Node.js — downloads the PlantUML JS engine, shells out to node, and produces SVG (requires node on PATH). |
JsonFocusFormatter |
Applies per-line PlantUML markup to pretty-printed JSON based on focus fields and emphasis/de-emphasis settings. Used internally by PlantUmlCreator. |
TestTrackingMessageHandlerOptions |
Base configuration for the HTTP tracking handler (service names, port mappings, headers to forward). |
TestTrackingMessageHandler |
DelegatingHandler that intercepts and logs HTTP requests/responses with tracking headers. |
TestTrackingHttpClientFactory |
IHttpClientFactory implementation that creates HttpClient instances with the tracking handler. |
RequestResponseLogger |
Static log collector; Log(entry) to add, LogPair(...) for convenience request/response pair logging, RequestAndResponseLogs to retrieve all entries. |
RequestResponseLog |
Record capturing a single HTTP request or response with all metadata. Includes Timestamp, ActivitySpanId, ActivityTraceId for OTel correlation. See Tracking Custom Dependencies#RequestResponseLog Constructor Reference for full constructor parameter documentation. |
MessageTracker |
Logs non-HTTP interactions (events, messages, commands) so they appear in diagrams. See Event & Message Tracking. |
ServiceCollectionHelper.TrackMessagesForDiagrams() |
Extension method that registers MessageTracker in DI for non-HTTP interaction tracking. |
WebApplicationFactoryExtensions.CreateTestTrackingClient() |
Creates an HttpClient with the tracking handler attached. Accepts the base TestTrackingMessageHandlerOptions so it works with any framework's options. Also supports params DelegatingHandler[] overload. |
ServiceCollectionExtensions.TrackDependenciesForDiagrams() |
Registers tracking services in DI. Accepts the base TestTrackingMessageHandlerOptions. |
ScenarioTitleResolver |
Static utility: FormatFeatureName(className) titleizes a test class name; FormatScenarioDisplayName(displayName) humanizes a fully-qualified test name with parameter extraction; ResolveScenarioTitle(...) replaces BDDfy class-named titles with humanized method names. |
PlantUmlCreator |
Converts RequestResponseLog entries into PlantUML sequence diagram code. |
PlantUmlTextEncoder |
Encodes PlantUML text to URL-safe format for server rendering. |
InternalFlowSegment |
Record: RequestResponseId, BoundaryType, TestId, StartTime, EndTime, Spans. Represents a segment of internal flow between two consecutive HTTP boundaries. |
InternalFlowSegmentBuilder |
Static class; BuildSegments(logs, spans) correlates OTel spans with HTTP boundary timestamps to produce a dictionary of segments keyed by iflow-{id}. |
InternalFlowRenderer |
Static class; RenderActivityDiagram(segment) produces PlantUML activity diagram with swimlanes. RenderCallTree(segment) produces HTML nested list. |
InternalFlowHtmlGenerator |
Static class; GenerateSegmentDataScript(segments, style) produces a <script> block populating window.__iflowSegments. |
InternalFlowSpanCollector |
Static class; CollectSpans(granularity, sources) loads spans from InternalFlowSpanStore and filters by granularity. |
InternalFlowSpanStore |
Static class; thread-safe ConcurrentQueue<Activity> store in core package. Add(Activity), Complete(Activity?) (stops + adds), GetSpans(), Clear(). Deduplicates by reference identity. Both InternalFlowActivityListener and TestTrackingSpanExporter write here. |
InternalFlowActivityListener |
Sealed class implementing IDisposable; wraps System.Diagnostics.ActivityListener with AllData sampling. Auto-started by TestTrackingMessageHandler constructor (process-wide singleton). Captures well-known auto-instrumentation sources plus custom sources. |
InternalFlowServiceCollectionExtensions |
Extension methods; AddActivityListenerForInternalFlowTracking(this IServiceCollection, params string[]) registers an InternalFlowActivityListener for DI. Optional — auto-start covers the default case. |
InternalFlowDiagramStyle |
Enum: ActivityDiagram, CallTree, SequenceDiagram. Controls the visual style of internal flow popup content. |
InternalFlowDisplay |
Enum: Popup, Inline. Controls how internal flow content is shown. |
InternalFlowTrigger |
Enum: Click, Hover. Controls the user interaction that opens the popup. |
InternalFlowSpanGranularity |
Enum: AutoInstrumentation, Manual, Full. Controls which spans are included. |
InternalFlowNoDataBehavior |
Enum: ShowMessage, HideLink, VisualDistinction. Controls behaviour when no spans exist for a segment. |
InternalFlowContentStrategy |
Enum: Embedded, SeparateFragments. Controls how segment data is stored in the report. |
InternalFlowFlameChartPosition |
Enum: Underneath, BehindWithToggle. Controls flame chart positioning. |
ActivitySourceDiscovery |
Static class; GetDiscoveredSources() returns a Dictionary<string, int> of all ActivitySource names that produced spans, with their counts. See Diagnostics and Debugging. |
ReportDiagnostics |
Static class; Analyse(logs, features, includeSourceDiscovery) returns diagnostic warning strings for the report footer. |
DiagnosticReportGenerator |
Static class; Generate(logs, features, options) produces DiagnosticReport.html with config dumps, log counts, unpaired requests, and activity source discovery. Only called when DiagnosticMode is true. |
ReportGenerator |
Generates HTML and YAML report files from features, scenarios, and diagrams. CreateStandardReportsWithDiagrams() is the main entry point; also exposes GenerateHtmlReport(), GenerateSpecificationsData(), GenerateTestRunReportData(), and GenerateTestRunReportSchema() for custom pipelines. |
DataFormat |
Enum: Json, Xml, Yaml. Format for generated report data files (Specifications.*, TestRunReport.*). |
CiMetadata |
Record: Provider, BuildId, BuildNumber, Branch, CommitSha, PipelineName, PipelineUrl, RunUrl. Embedded in reports when CI environment is detected. |
Feature |
Record: DisplayName, Description?, Endpoint?, Labels?[], Scenarios[]. |
Scenario |
Record: Id, DisplayName, IsHappyPath, Result, Duration? (TimeSpan), ErrorMessage?, ErrorStackTrace?, Steps? (ScenarioStep[]), BackgroundSteps?, Labels? (string[]), Categories? (string[]), Rule?, OutlineId? (string), ExampleValues?, Attachments?. BackgroundSteps contains common prefix steps extracted by BackgroundStepsDetector. |
ScenarioStep |
Record representing a test scenario step with Keyword, Text, Status, Duration, BypassReason?, SubSteps[], Parameters[], Comments[], Attachments[], DocString?, DocStringMediaType?, TextSegments[]. |
BackgroundStepsDetector |
Static class; DetectAndExtract(Scenario[]) groups scenarios by Rule, finds the longest common step prefix within each group, moves matched steps to Scenario.BackgroundSteps, and trims them from Scenario.Steps. No-op for single-scenario groups or groups with no common prefix. See Step Tracking#Background Steps. |
StepParameter |
Record representing step parameters with Name, Kind (StepParameterKind), InlineValue?, TabularValue?, TreeValue?. |
FileAttachment |
Record: Name, RelativePath. Represents a file attachment associated with a test step or scenario for inclusion in reports. Created via Track.Attachment() or framework-specific attachment APIs. See Step Tracking#File Attachments. |
WholeTestFlowVisualization |
Enum: None, FlameChart, ActivityDiagram, Both. Controls whole-test-flow visualization in the HTML report. |
InternalFlowHasDataBehavior |
Enum: ShowLinkOnHover, ShowLink. Controls how internal flow links appear on diagram arrows when span data exists. |
StringCasing |
Static class; string casing conversions (Titleize, Camelize, Underscore, Dasherize). Ported from Humanizer for zero-dependency usage. |
Stylesheets |
Constants class; VioletThemeStyleSheet (the default HTML report stylesheet). Used as the default for HtmlSpecificationsCustomStyleSheet. |
NodeJsPlantUmlRenderer |
Static class; Render(plantUml, format) renders PlantUML diagrams locally via Node.js. Downloads the PlantUML JS engine on first use and shells out to node. Requires node on PATH. |
RequestResponseType |
Enum: Request, Response. Distinguishes request and response entries in RequestResponseLog. |
OneOf<TOption1, TOption2> |
Discriminated union type. Wraps one of two possible values with IsOption1/IsOption2 and Match(). Used in configuration options that accept either a fixed value or a delegate. |
ParameterGrouper |
Static class; GroupParameterizedScenarios(scenarios, maxColumns, titleize) groups test scenarios that share a method name but differ only in parameters into ParameterizedGroup tables. |
ParameterizedGroup |
Record: MethodName, Scenarios[], ParameterNames[], DisplayRule. Holds grouped parameterized test cases for tabular display. |
ParameterParser |
Static class; ExtractParameters(displayName) parses parameter names and values from xUnit/NUnit/TUnit display names. |
ParameterDisplayRule |
Enum: Fallback, ScalarColumns. Controls whether parameters are shown as plain text or structured columns. |
FailureClusterer |
Static class; ClusterFailures(scenarios) groups failed scenarios by error message pattern similarity using Levenshtein distance. Produces clusters for the failure summary section. |
ErrorDiffParser |
Static class; Parse(errorMessage) extracts expected/actual value pairs from assertion error messages (supports xUnit, NUnit, FluentAssertions, Shouldly formats). |
ComponentDiagramDiffer |
Static class; Compare() detects added/removed relationships and P95 performance regressions/improvements. GenerateDiffPlantUml() generates colour-coded diff diagrams. |
RelationshipStats |
Record: CallCount, TestCount, MeanMs, MedianMs, P95Ms, P99Ms, MinMs, MaxMs, ErrorRate, StatusCodeDistribution, EndpointBreakdown, PayloadSizes, Concurrency, CV, MethodDistribution, Outliers, LatencyContributionPct. Performance statistics for a component relationship. |
DependencyGraphMetrics |
Record: ServiceMetrics (fan-in/fan-out per service), CircularDependencies (Tarjan's SCC), LongestChain. |
ComponentFlowSegmentBuilder |
Static class; ComputeRelationshipStats(), BuildRelationshipSegments(), ComputeErrorCorrelations(), ComputeCallOrderingPatterns(), ComputeGraphMetrics(). Advanced analytics on component relationships. |
HttpRequestExtensions |
Extension methods on HttpRequest for extracting tracking headers and test identity from incoming requests. |
StringExtensions |
Extension methods; ChunksUpTo(maxLength) splits strings into chunks, StringJoin(separator) joins enumerables, TrimEnd(suffix) trims a specific suffix. |
ComponentDiagramReportGenerator |
Static class; GenerateComponentDiagramReport() produces .puml and .html files from tracked logs. Returns ComponentDiagramResult with file paths and raw PlantUML. |
ComponentRelationship |
Record: Caller, Service, Protocol, Methods (HashSet), CallCount, TestCount. Represents a unique directional relationship between two participants. |
ComponentDiagramOptions |
Record: FileName, EmbedInTestRunReport, Title, PlantUmlTheme, ParticipantFilter, RelationshipLabelFormatter. Configuration for component diagram generation. |
CiEnvironment |
Enum: None, GitHubActions, AzureDevOps. Identifies the CI platform. |
CiEnvironmentDetector |
Static class; Detect() returns the current CiEnvironment based on environment variables (GITHUB_ACTIONS, TF_BUILD). |
CiSummaryGenerator |
Static class; GenerateMarkdown(features, diagrams, startTime, endTime, maxDiagrams) produces a failure-focused Markdown summary with embedded PlantUML image URLs. See CI Summary Integration. |
CiSummaryWriter |
Static class; Write(markdown, environment) writes the summary to the CI platform ($GITHUB_STEP_SUMMARY for GitHub Actions, ##vso[task.uploadsummary] for Azure DevOps). See CI Summary Integration. |
CiArtifactPublisher |
Static class; Publish(reportFilePaths, environment, artifactName, retentionDays) publishes report files as CI artifacts (##vso[artifact.upload] for Azure DevOps, $GITHUB_OUTPUT for GitHub Actions). See CI Artifact Upload. |
ExecutionResult |
Enum: Passed, Failed, Skipped, Bypassed, SkippedAfterFailure. Bypassed is LightBDD-specific (step body ran, developer opted out). SkippedAfterFailure indicates cascading non-execution after a prior step failure. |
RequestResponseMetaType |
Enum: Default, Event. Logs with Event meta type receive special styling in diagrams (light-blue background, rounded corners). |
TestTrackingHttpHeaders |
Constants for tracking HTTP headers (test-tracking-ignore, test-tracking-current-test-name, etc.). |
TrackingProxy<T> |
DispatchProxy-based generic wrapper; Create(target, options) wraps any interface for diagram tracking. Handles sync/async/void methods, serialises arguments and return values, supports ActivitySource spans, and logs via Immediate or Deferred mode. See Integration DispatchProxy Extension. |
Track.Attachment() |
Static method; Attachment(filePath, name?) attaches a file to the current step (via StepCollector) or to the scenario when no step is active. Name defaults to the file name from filePath. Attachments render as <a class="step-attachment"> links in the report. See Step Tracking#File Attachments. |
TrackingProxyOptions |
Record: ServiceName (required), CallerName, ActivitySourceName?, UriScheme, SerializerOptions?, LogMode, CurrentTestInfoFetcher?. Configuration for TrackingProxy<T>. |
TrackingLogMode |
Enum: Immediate, Deferred. Controls whether proxy logs are emitted immediately or queued for later flush. |
TrackingSafeSerializer |
Static class; Serialize(value, options?) safely serialises objects for diagram content. Handles circular references, CancellationToken filtering, mock proxy detection, Task unwrapping, and configurable max depth with ToString() fallback. |
TrackingSerializerOptions |
Class: MaxDepth (10), WriteIndented (true), UnwrapTasks (true), FilterCancellationTokens (true), SkipMockProxies (true), SkipTypes ([]). |
TrackingTraceContext |
Static class; AsyncLocal<Guid?> trace scope. BeginTrace(out traceId) returns IDisposable that restores previous value. CreateParentContext() creates ActivityContext from trace ID bytes. |
PendingRequestResponseLogs |
Static class; thread-safe deferred log queue. Enqueue(entry), FlushAll(testName, testId), Clear(), Count. Used with TrackingLogMode.Deferred. |
PendingLogEntry |
Record: ServiceName, CallerName, Method, RequestContent?, ResponseContent?, Uri, StatusCode, ActivityTraceId?, ActivitySpanId?. Queue entry for deferred logging. |
DeferredLogFlushHandler |
DelegatingHandler that calls PendingRequestResponseLogs.FlushAll() after each HTTP response. Use with CreateTestTrackingClient(options, new DeferredLogFlushHandler(options)). |
TestTrackingServerBridge |
Static class; GetCurrentTestInfo(IHttpContextAccessor) reads test name and ID from HTTP headers on the server thread. Returns (string Name, string Id)?. |
TestInfoResolver |
Static class; Resolve(IHttpContextAccessor?, Func<(string,string)>?) resolves test identity with httpContext-first + delegate fallback. CreateHttpFallbackFetcher(IHttpContextAccessor?, Func<(string,string)>) returns a Func<(string Name, string Id)> delegate encapsulating the dual-resolution pattern — eliminates the boilerplate httpContext dance when setting CurrentTestInfoFetcher. |
ServiceCollectionDecoratorExtensions |
Extension methods; DecorateAll<TService>(Func<IServiceProvider, TService, TService>) wraps all registrations of TService with a decorator (removes original, adds decorated, preserves lifetime). DecorateAllOpen(Type openGenericServiceType, Type openGenericDecoratorType) scans for all closed-generic registrations matching an open generic type and replaces each with a decorator type, resolving additional constructor args from DI. |
Each integration package provides the same set of framework-specific types:
| Type | Purpose |
|---|---|
[Framework]TestTrackingMessageHandlerOptions |
Extends TestTrackingMessageHandlerOptions with auto-populated CurrentTestInfoFetcher. |
CurrentTestInfo |
Static class with a Fetcher property (Func<(string Name, string Id)>) — the standard way to set CurrentTestInfoFetcher on any tracking options class. One per framework package. |
ServiceCollectionExtensions.TrackDependenciesForDiagrams() |
Registers tracking services in DI. |
WebApplicationFactoryExtensions.CreateTestTrackingClient() |
Creates an HttpClient with the tracking handler attached. Also supports params DelegatingHandler[] additionalHandlers overload for chaining extra handlers (e.g. DeferredLogFlushHandler). |
TrackingDiagramOverride |
Framework-specific wrapper that auto-resolves the test ID from the current test context. |
Deprecation note (v2.0.131+): The per-framework
WebApplicationFactoryExtensionsandServiceCollectionExtensionsclasses are deprecated. Use the coreKronikol.WebApplicationFactoryExtensionsandKronikol.ServiceCollectionExtensionsinstead — they accept the baseTestTrackingMessageHandlerOptionstype, so any framework-specific options class works without a framework-specific extension method. |[Framework]ReportGenerator| Generates reports using framework-specific test metadata (xUnitITestContext, NUnitTestContext, TUnitTestContext, BDDfy scenarios, ReqNRoll scenarios). |
BDDfy-specific:
| Type | Purpose |
|---|---|
BDDfyDiagramsConfigurator |
Configure() registers BDDfy processors and the step-tracking executor for diagram capture and implicit setup detection. |
BDDfyStepTrackingExecutor |
Custom IStepExecutor that tracks the current BDD step type (GIVEN/WHEN/THEN) via AsyncLocal for implicit setup separation. |
BDDfyScenarioCollector |
Thread-safe collector for BDDfy scenario metadata. |
BDDfyScenarioInfo / BDDfyStepInfo
|
Records for BDD scenario and step metadata. |
ReqNRoll-specific:
| Type | Purpose |
|---|---|
ReqNRollTrackingHooks |
Auto-registered [Binding] class with [BeforeScenario]/[AfterStep]/[AfterScenario] hooks. |
ReqNRollScenarioCollector |
Thread-safe collector for ReqNRoll scenario metadata. |
ReqNRollScenarioInfo / ReqNRollStepInfo
|
Records for Gherkin scenario and step metadata. |
ReqNRollConstants |
Constants for context keys and tag conventions. |
ReqNRollReportEnhancer |
Post-processes ReqNRoll's native HTML report to inject sequence diagram attachments linked to each scenario's last step. Registered automatically by ReqNRollReportGenerator. |
AttachmentCapturingOutputHelper |
Decorator for IReqnrollOutputHelper. Intercepts AddAttachment(filePath) and routes it through Track.Attachment() so Reqnroll attachments automatically appear in Kronikol reports. |
AttachmentCapturingPlugin |
IRuntimePlugin that registers AttachmentCapturingOutputHelper at test thread initialization. Activated automatically via [assembly: RuntimePlugin] — no configuration needed. |
| Class / Record / Enum | Description |
|---|---|
CosmosTrackingMessageHandler |
DelegatingHandler that intercepts Cosmos SDK HTTP traffic, classifies each request into a Cosmos operation, and logs it to RequestResponseLogger. |
CosmosTrackingMessageHandlerOptions |
Configuration for the Cosmos tracking handler: service names, verbosity level, test info fetcher, excluded headers. |
CosmosTrackingVerbosity |
Enum: Raw, Detailed, Summarised. Controls how much detail appears in diagram labels and notes. |
CosmosOperation |
Enum: Create, Read, Replace, Patch, Delete, Upsert, Query, List, ExecStoredProc, Batch, Other. |
CosmosOperationInfo |
Record: Operation, DatabaseName, CollectionName, DocumentId, QueryText. Returned by the classifier. |
CosmosOperationClassifier |
Static class that classifies an HttpRequestMessage into a CosmosOperationInfo using HTTP method, URL path, and headers. Also provides GetDiagramLabel() for verbosity-aware label generation. |
CosmosClientOptionsExtensions |
Extension methods WithTestTracking() and WithTestTrackingAndCustomSslValidation() on CosmosClientOptions. |
See Integration CosmosDB Extension for setup and configuration.
| Class / Record / Enum | Description |
|---|---|
SqlTrackingInterceptor |
DbCommandInterceptor that intercepts EF Core SQL commands, classifies each into a SQL operation, and logs it to RequestResponseLogger. |
SqlTrackingInterceptorOptions |
Configuration for the SQL tracking interceptor: service names, verbosity level, test info fetcher, step type fetcher. |
SqlTrackingVerbosity |
Enum: Raw, Detailed, Summarised. Controls how much detail appears in diagram labels and notes. |
SqlOperation |
Enum: Select, Insert, Update, Delete, Merge, Upsert, StoredProc, Other. |
SqlOperationInfo |
Record: Operation, TableName, CommandText. Returned by the classifier. |
SqlOperationClassifier |
Static class that classifies SQL command text into a SqlOperationInfo. Handles all SQL dialects including SQL Server, PostgreSQL, MySQL, SQLite, Oracle, and Spanner. Also provides GetDiagramLabel() for verbosity-aware label generation and GetRawKeyword() for raw SQL keyword extraction. |
DbContextOptionsBuilderExtensions |
Extension method WithSqlTestTracking() on DbContextOptionsBuilder. |
See Integration EF Core Relational Extension for setup and configuration.
| Class / Record / Enum | Description |
|---|---|
RedisTrackingDatabase |
DispatchProxy-based IDatabase decorator that intercepts StackExchange.Redis operations, classifies each into a Redis operation with cache hit/miss detection, and logs it to RequestResponseLogger. |
RedisTracker |
Core logging engine used by RedisTrackingDatabase. Logs Redis request/response pairs with classified labels and URIs. Can be used directly for custom integration scenarios. |
RedisTrackingDatabaseOptions |
Configuration for the Redis tracking proxy: service names, verbosity level, test info fetcher, step type fetcher. |
RedisTrackingVerbosity |
Enum: Raw, Detailed, Summarised. Controls how much detail appears in diagram labels and notes. |
RedisOperation |
Enum: Get, Set, Delete, KeyExists, Expire, HashGet, HashSet, HashDelete, HashGetAll, ListPush, ListRange, SetAdd, SetMembers, Increment, Decrement, Publish, Other. |
RedisCacheResult |
Enum: Hit, Miss, None. Classifies whether a read operation returned data (hit) or not (miss). Write operations use None. |
RedisOperationInfo |
Record: Operation, CacheResult, Key, DatabaseNumber. Returned by the classifier. |
RedisOperationClassifier |
Static class that classifies a Redis command name into a RedisOperationInfo with hit/miss detection. Also provides GetDiagramLabel() for verbosity-aware label generation (e.g. Get (Hit), Set, HashGet (Miss)). |
DatabaseExtensions |
Extension methods WithRedisTestTracking() on IDatabase and GetTrackedDatabase() on IConnectionMultiplexer. |
See Integration Redis Extension for setup and configuration.
| Class | Description |
|---|---|
IkvmPlantUmlRenderer |
Static class; Render(string plantUml, PlantUmlImageFormat format) renders PlantUML text to PNG or SVG bytes locally via IKVM. No remote server or Java installation required. Use as the LocalDiagramRenderer delegate on DiagramsFetcherOptions or ReportConfigurationOptions. |
See Integration PlantUML IKVM for setup and configuration.
| Class | Description |
|---|---|
OpenTelemetryTrackingExtensions |
Static class; AddTestTrackingExporter(this TracerProviderBuilder) registers a SimpleActivityExportProcessor with TestTrackingSpanExporter to capture spans into InternalFlowSpanStore. |
TestTrackingSpanStore |
Backward-compatible static facade that delegates Add(), GetSpans(), and Clear() to InternalFlowSpanStore in the core package. |
TestTrackingSpanExporter |
Internal BaseExporter<Activity> implementation that forwards completed spans to InternalFlowSpanStore. |
See Integration OpenTelemetry Extension for setup and configuration.
| Class | Description |
|---|---|
ServiceCollectionTrackingExtensions |
Static class; ReplaceWithTracked<TService>(services, implementation, options) replaces a DI registration with a TrackingProxy<T> wrapper. Also has a simplified overload taking just serviceName. |
See Integration DispatchProxy Extension for setup and configuration.
| Class / Record | Description |
|---|---|
MediatorTrackingExtensions |
Static class; TrackMediatorForDiagrams(services, options) replaces IMediator and ISender registrations with TrackingProxy wrappers. |
MediatorTrackingOptions |
Record: ServiceName ("Application"), CallerName ("Caller"), ActivitySourceName?, LogMode, CurrentTestInfoFetcher?, SerializerOptions?. |
See Integration MediatR Extension for setup and configuration.
| Class / Record | Description |
|---|---|
GrpcTrackingInterceptor |
Grpc.Core.Interceptors.Interceptor subclass that records all 5 gRPC call types. Implements ITrackingComponent. Constructor: (GrpcTrackingOptions, IHttpContextAccessor?). |
GrpcTrackingOptions |
Record: ServiceName, CallerName, Verbosity, CurrentTestInfoFetcher?, CurrentStepTypeFetcher?, UseProtoServiceNameInDiagram, HttpContextAccessor?, phase-aware properties. |
GrpcTrackingChannel |
Static factory; Create(handler, baseAddress, options) and CreateWithChannel(...). Builds CallInvoker with tracking. |
GrpcTrackingHttpHandlerExtensions |
Extension method; AsGrpcTrackingCallInvoker(handler, baseAddress, options). |
GrpcChannelExtensions |
Extension method; WithTestTracking(channel, options) wraps a GrpcChannel with tracking. |
GrpcWebApplicationFactoryExtensions |
CreateTestTrackingGrpcClient<TEntryPoint,TClient>(options) and WithChannel variant. Auto-resolves IHttpContextAccessor from factory.Services (v2.26.0+). |
GrpcServiceCollectionExtensions |
Static class; AddTrackedGrpcClient<TClient>(handler, baseAddress, configure?) registers a singleton tracked gRPC client. Auto-resolves IHttpContextAccessor from DI (v2.26.0+). |
GrpcResponseVersionHandler |
DelegatingHandler that fixes HTTP/1.1 → HTTP/2 response version for TestServer. |
GrpcOperationClassifier |
Classifies method names and streaming types for diagram labels. |
GrpcOperationInfo |
Record: Operation, ServiceName?, MethodName?, FullMethodName?. |
GrpcOperation |
Enum: UnaryCall, ServerStreamingCall, ClientStreamingCall, DuplexStreamingCall. |
GrpcTrackingVerbosity |
Enum: Raw, Detailed, Summarised. |
See Integration Grpc Extension for setup and configuration.
| Class / Record | Description |
|---|---|
KafkaTracker |
Central logging helper for Kafka operations. Implements ITrackingComponent. Constructor: (KafkaTrackingOptions, IHttpContextAccessor?). |
KafkaTrackingOptions |
Record: ServiceName, CallerName, Verbosity, CurrentTestInfoFetcher?, CurrentStepTypeFetcher?, TrackProduce, TrackConsume, TrackSubscribe, TrackCommit, LogMessageKey, LogMessageValue, phase-aware properties. |
TrackingKafkaProducer<TKey,TValue> |
Decorator implementing IProducer<TKey,TValue>. Wraps produce calls and delegates to KafkaTracker. |
TrackingKafkaConsumer<TKey,TValue> |
Decorator implementing IConsumer<TKey,TValue>. Wraps consume/subscribe calls and delegates to KafkaTracker. |
KafkaServiceCollectionExtensions |
Static class; AddKafkaProducerTestTracking<TKey,TValue>(options?) decorates all IProducer<TKey,TValue> registrations with tracking wrappers. AddKafkaConsumerTestTracking<TKey,TValue>(options?) decorates IConsumer<TKey,TValue>. Both auto-resolve IHttpContextAccessor from DI. |
KafkaOperationInfo |
Record: Operation, Topic?, Partition?, Offset?. |
KafkaOperation |
Enum: Produce, ProduceAsync, Consume, Subscribe, Unsubscribe, Commit, Flush, Other. |
KafkaTrackingVerbosity |
Enum: Raw, Detailed, Summarised. |
See Integration Kafka Extension for setup and configuration.
| Class / Record | Description |
|---|---|
PubSubTracker |
Central logging helper for Pub/Sub operations. Implements ITrackingComponent. Constructor: (PubSubTrackingOptions, IHttpContextAccessor?). |
PubSubTrackingOptions |
Record: ServiceName, CallerName, Verbosity, CurrentTestInfoFetcher?, CurrentStepTypeFetcher?, phase-aware properties. |
TrackingPublisherClient |
Wrapper around PublisherClient. Intercepts publish operations and delegates to PubSubTracker. |
TrackingSubscriberClient |
Wrapper around SubscriberClient. Intercepts message handler callback and delegates to PubSubTracker. |
PubSubServiceCollectionExtensions |
Static class; AddPubSubTestTracking(options?) registers a singleton PubSubTracker in DI with IHttpContextAccessor auto-resolved. |
PubSubOperationInfo |
Record: Operation, TopicName?, SubscriptionName?, MessageCount?. |
PubSubOperation |
Enum: Publish, PublishBatch, Pull, Acknowledge, ModifyAckDeadline, Receive, StartSubscriber, StopSubscriber, Other. |
PubSubTrackingVerbosity |
Enum: Raw, Detailed, Summarised. |
See Integration PubSub Extension for setup and configuration.
LightBDD-specific:
| Type | Purpose |
|---|---|
ReportWritersConfigurationExtensions |
CreateStandardReportsWithDiagrams() extension methods. The LightBddConfiguration overload (xUnit v3 only) also registers automatic raw argument capture via ArgumentCaptureScenarioDecorator. The ReportWritersConfiguration overload is legacy and does not capture arguments. |
ArgumentCaptureScenarioDecorator |
IScenarioDecorator (xUnit v3 only) that captures raw test method arguments during scenario execution for rich sub-table rendering. Registered automatically by the LightBddConfiguration.CreateStandardReportsWithDiagrams() overload. |
LightBddDiagramsFetcher |
Wraps diagrams for LightBDD's DiagramAsCode type. |
Getting Started
Common Tasks
Integration Guides
- Integration xUnit3
- Integration xUnit2
- Integration NUnit
- Integration MSTest
- Integration TUnit
- Integration BDDfy xUnit3
- Integration LightBDD xUnit2
- Integration LightBDD xUnit3
- Integration LightBDD TUnit
- Integration ReqNRoll xUnit2
- Integration ReqNRoll xUnit3
- Integration ReqNRoll TUnit
Extensions
- Integration AtlasDataApi Extension
- Integration BigQuery Extension
- Integration Bigtable Extension
- Integration BlobStorage Extension
- Integration ClickHouse Extension
- Integration CloudStorage Extension
- Integration CosmosDB Extension
- Integration Dapper Extension
- Integration DynamoDB Extension
- Integration EF Core Relational Extension
- Integration Elasticsearch Extension
- Integration EventBridge Extension
- Integration EventHubs Extension
- Integration Grpc Extension
- Integration Kafka Extension
- Integration MassTransit Extension
- Integration MongoDB Extension
- Integration MySqlConnector Extension
- Integration Npgsql Extension
- Integration Oracle Extension
- Integration PubSub Extension
- Integration Redis Extension
- Integration S3 Extension
- Integration ServiceBus Extension
- Integration SNS Extension
- Integration Spanner Extension
- Integration SqlClient Extension
- Integration Sqlite Extension
- Integration SQS Extension
- Integration StorageQueues Extension
- Integration OpenTelemetry Extension
- Integration DispatchProxy Extension
- Integration MediatR Extension
- Integration PlantUML IKVM
Configuration
- Tracking Dependencies
- Tracking Custom Dependencies
- HTTP Tracking Setup
- Report Configuration
- Diagram Customisation
- Phase-Aware Tracking
- Content Formatting
- PlantUML Server Configuration
Features
- Generated Reports
- Search Syntax
- Component Diagrams
- PlantUML Browser Rendering
- Inline SVG Rendering
- Internal Flow Tracking
- Tags and Attributes
- Excluding Requests
- Excluded Headers
- Multi-Host Test Architectures
- Event-Driven Architecture Testing
- Service Bus Tracking Patterns
- Background Thread Correlation
- Parallel-Safe Background Correlation
- Event & Message Tracking
- Assertion Tracking
- Step Tracking
- Tabular Attributes
- Large Response and Diagram Handling
- Diagnostics and Debugging
- CI Summary Integration
- CI Artifact Upload
- Merging Parallel Reports
Reference