Skip to content

API Reference

aryehcitron@gmail.com edited this page May 24, 2026 · 42 revisions

Core Library (Kronikol)

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.

Integration Libraries

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 WebApplicationFactoryExtensions and ServiceCollectionExtensions classes are deprecated. Use the core Kronikol.WebApplicationFactoryExtensions and Kronikol.ServiceCollectionExtensions instead — they accept the base TestTrackingMessageHandlerOptions type, so any framework-specific options class works without a framework-specific extension method. | [Framework]ReportGenerator | Generates reports using framework-specific test metadata (xUnit ITestContext, NUnit TestContext, TUnit TestContext, 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.

CosmosDB Extension (Kronikol.Extensions.CosmosDB)

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.

EF Core Relational Extension (Kronikol.Extensions.EfCore.Relational)

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.

Redis Extension (Kronikol.Extensions.Redis)

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.

PlantUML IKVM Extension (Kronikol.PlantUml.Ikvm)

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.

OpenTelemetry Extension (Kronikol.Extensions.OpenTelemetry)

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.

DispatchProxy Extension (Kronikol.Extensions.DispatchProxy)

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.

MediatR Extension (Kronikol.Extensions.MediatR)

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.

gRPC Extension (Kronikol.Extensions.Grpc)

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.

Kafka Extension (Kronikol.Extensions.Kafka)

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.

Google Cloud Pub/Sub Extension (Kronikol.Extensions.PubSub)

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.

Home


Demo


Getting Started

Common Tasks

Integration Guides

Extensions

Configuration

Features

Reference

Clone this wiki locally