diff --git a/src/NScenario/NScenario.csproj b/src/NScenario/NScenario.csproj
index e57dff1..fb19566 100644
--- a/src/NScenario/NScenario.csproj
+++ b/src/NScenario/NScenario.csproj
@@ -21,6 +21,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/src/NScenario/StepExecutors/InstrumentationScenarioStepExecutor.cs b/src/NScenario/StepExecutors/InstrumentationScenarioStepExecutor.cs
new file mode 100644
index 0000000..a0886f3
--- /dev/null
+++ b/src/NScenario/StepExecutors/InstrumentationScenarioStepExecutor.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Diagnostics;
+using System.Threading.Tasks;
+
+namespace NScenario.StepExecutors;
+
+public static class NScenarioInstrumentation
+{
+ public static ActivitySource DiagnosticSource = new ActivitySource("NScenario");
+}
+
+public class InstrumentationScenarioStepExecutor : IScenarioStepExecutor
+{
+ private readonly IScenarioStepExecutor _scenarioStepExecutorImplementation;
+
+
+ public InstrumentationScenarioStepExecutor(IScenarioStepExecutor scenarioStepExecutorImplementation)
+ {
+ _scenarioStepExecutorImplementation = scenarioStepExecutorImplementation;
+ }
+
+ public async Task Step(string scenarioName, string stepDescription, Func action, StepContext stepContext)
+ {
+ using var activity = NScenarioInstrumentation.DiagnosticSource.StartActivity(name: stepDescription);
+ await _scenarioStepExecutorImplementation.Step(scenarioName, stepDescription, action, stepContext);
+ }
+
+ public async Task Step(string scenarioName, string stepDescription, Action action, StepContext stepContext)
+ {
+ using var activity = NScenarioInstrumentation.DiagnosticSource.StartActivity(name: stepDescription);
+ await _scenarioStepExecutorImplementation.Step(scenarioName, stepDescription, action, stepContext);
+ }
+}
\ No newline at end of file
diff --git a/src/NScenario/TestScenarioFactory.cs b/src/NScenario/TestScenarioFactory.cs
index b52db90..9b3a9af 100644
--- a/src/NScenario/TestScenarioFactory.cs
+++ b/src/NScenario/TestScenarioFactory.cs
@@ -88,6 +88,7 @@ private static IScenarioStepExecutor BuildScenarioStepExecutor(IScenarioOutputWr
stepExecutorBuilder.WrapWith(u => new IndentionScenarioStepExecutor(u));
stepExecutorBuilder.WrapWith(u => new PrefixedScenarioStepExecutor(u, scenarioPrefix, stepPrefix));
stepExecutorBuilder.WrapWith(u => new OrderedScenarioStepExecutor(u));
+ stepExecutorBuilder.WrapWith(u => new InstrumentationScenarioStepExecutor (u));
var stepExecutor = stepExecutorBuilder.Build();
return stepExecutor;
}