From 337533c8d82a414a1e51d6df115c2db2f93e709a Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sat, 15 Aug 2026 17:28:57 +0200 Subject: [PATCH 1/6] Upgrade framework Pester baseline Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../actions/Get-PesterCodeCoverage/README.md | 2 +- .github/actions/Test-PSModule/action.yml | 2 ++ .../tests/Module/PSModule/PSModule.Tests.ps1 | 2 +- .github/workflows/Test-Actions.yml | 22 ++++++++++++++++++- .github/workflows/Test-ModuleLocal.yml | 6 +++-- docs/content/guides/writing-module-tests.md | 19 +++++++++++----- .../reference/powershell-module-standard.md | 2 +- 7 files changed, 44 insertions(+), 11 deletions(-) diff --git a/.github/actions/Get-PesterCodeCoverage/README.md b/.github/actions/Get-PesterCodeCoverage/README.md index 38c3b64d..e6ca8cf0 100644 --- a/.github/actions/Get-PesterCodeCoverage/README.md +++ b/.github/actions/Get-PesterCodeCoverage/README.md @@ -77,7 +77,7 @@ Summary: ## Requirements -1. **Pester Code Coverage Reports** +1. **Pester 6.1 Code Coverage Reports** Preceding steps must generate JSON coverage reports named `*-CodeCoverage*.json` 2. **GitHub CLI** diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index 9f974c53..8b8a27a2 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -288,6 +288,8 @@ runs: with: Debug: ${{ inputs.Debug }} Verbose: ${{ inputs.Verbose }} + Version: '[6.1.0,7.0.0)' + Prerelease: false GitHubVersion: ${{ inputs.Version }} GitHubPrerelease: ${{ inputs.Prerelease }} WorkingDirectory: ${{ inputs.WorkingDirectory }} diff --git a/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 b/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 index ac41caa0..7a6aed1e 100644 --- a/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 +++ b/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 @@ -43,7 +43,7 @@ if ($hasClassExporter) { # Run-phase setup — recompute from $Path so that It/Context blocks can use these variables. -# Pester v5 Discovery and Run are separate executions. The script-scope variables above drive +# Pester 6 Discovery and Run are separate executions. The script-scope variables above drive # -Skip and -ForEach during Discovery. This BeforeAll recomputes the same values for the Run # phase, where It blocks actually execute. The duplication is intentional and required. BeforeAll { diff --git a/.github/workflows/Test-Actions.yml b/.github/workflows/Test-Actions.yml index 08c857ed..a42b8c7f 100644 --- a/.github/workflows/Test-Actions.yml +++ b/.github/workflows/Test-Actions.yml @@ -34,13 +34,33 @@ jobs: - name: Install test dependencies shell: pwsh run: | - Install-PSResource -Name Pester -Version '[5.7.1,6.0.0)' -Repository PSGallery -TrustRepository + Install-PSResource -Name Pester -Version '[6.1.0,7.0.0)' -Repository PSGallery -TrustRepository Install-PSResource -Name PSSemVer -Repository PSGallery -TrustRepository Install-PSResource -Name GitHub -Version '[0.43.1,0.44.0)' -Repository PSGallery -TrustRepository - name: Run action unit tests shell: pwsh run: | + $configuration = New-PesterConfiguration + $configuration.Run.Shuffle = $true + $configuration.Run.ShuffleSeed = 42 + $configuration.Run.Parallel = $true + $configuration.Run.ParallelThrottleLimit = 2 + $configuration.Debug.ShowStartMarkers = $true + + $expectedOptions = @{ + 'Run.Shuffle' = $configuration.Run.Shuffle.Value + 'Run.ShuffleSeed' = $configuration.Run.ShuffleSeed.Value -eq 42 + 'Run.Parallel' = $configuration.Run.Parallel.Value + 'Run.ParallelThrottleLimit' = $configuration.Run.ParallelThrottleLimit.Value -eq 2 + 'Debug.ShowStartMarkers' = $configuration.Debug.ShowStartMarkers.Value + } + foreach ($option in $expectedOptions.GetEnumerator()) { + if (-not $option.Value) { + throw "Pester 6.1 configuration option [$($option.Key)] was not applied." + } + } + $testPaths = Get-ChildItem -Path '.github/actions' -Directory | ForEach-Object { Join-Path -Path $_.FullName -ChildPath 'tests' } | Where-Object { Test-Path -Path $_ } diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index 70e82ed9..63e7d3c6 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -72,9 +72,11 @@ jobs: uses: PSModule/Invoke-Pester@4ff33199141fdf22568990b6107fe3148ae93a1c # v5.1.0 with: Debug: ${{ fromJson(inputs.Settings).Debug }} - Prerelease: ${{ fromJson(inputs.Settings).Prerelease }} + Prerelease: false Verbose: ${{ fromJson(inputs.Settings).Verbose }} - Version: ${{ fromJson(inputs.Settings).Version }} + Version: '[6.1.0,7.0.0)' + GitHubVersion: ${{ fromJson(inputs.Settings).Version }} + GitHubPrerelease: ${{ fromJson(inputs.Settings).Prerelease }} TestResult_TestSuiteName: ${{ matrix.TestName }}-${{ matrix.OSName }} TestResult_Enabled: true CodeCoverage_Enabled: true diff --git a/docs/content/guides/writing-module-tests.md b/docs/content/guides/writing-module-tests.md index a5d161e3..cba3709b 100644 --- a/docs/content/guides/writing-module-tests.md +++ b/docs/content/guides/writing-module-tests.md @@ -11,15 +11,24 @@ been built and imported. ## Pester version -Module test files declare a Pester **6.x** requirement at the top of each `*.Tests.ps1`: +Module test files declare a Pester **6.1.x** requirement at the top of each `*.Tests.ps1`: ```powershell -#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '6.0.0'; MaximumVersion = '6.*' } +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '6.1.0'; MaximumVersion = '6.*' } ``` -This is a convention module authors add, not something the pipeline injects. The -[Invoke-Pester](https://github.com/PSModule/Invoke-Pester) action installs a matching `6.x`, so minor and patch updates -flow in automatically while a new major stays a deliberate, reviewed change. +This is a convention module authors add. Process-PSModule pins its reusable +[Invoke-Pester](https://github.com/PSModule/Invoke-Pester) action runs to the +`[6.1.0,7.0.0)` range, so patch updates flow in automatically while a new +major stays a deliberate, reviewed change. + +Pester 6.1 adds opt-in controls for shuffled and parallel file execution +(`Run.Shuffle`, `Run.ShuffleSeed`, `Run.Parallel`, and +`Run.ParallelThrottleLimit`) and diagnostic start markers +(`Debug.ShowStartMarkers`). These controls are available when invoking Pester +directly with `New-PesterConfiguration`. Process-PSModule's reusable action will +expose them after the coordinated `PSModule/Invoke-Pester` action adds matching +inputs; the current v5.1.0 action contract does not accept them. ## Test discovery diff --git a/docs/content/reference/powershell-module-standard.md b/docs/content/reference/powershell-module-standard.md index 6b9bd2a4..31d6ee32 100644 --- a/docs/content/reference/powershell-module-standard.md +++ b/docs/content/reference/powershell-module-standard.md @@ -319,7 +319,7 @@ Process-PSModule derives `TestName` from the file's basename before the first do Each `*.Tests.ps1` file must declare the Pester 6 requirement: ```powershell -#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '6.0.0'; MaximumVersion = '6.*' } +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '6.1.0'; MaximumVersion = '6.*' } ``` Tests run against the built module artifact installed locally, across a multi-OS matrix (Linux, macOS, Windows). The full suite must also remain runnable locally without mandatory cloud resources, special access, or secrets that cannot be mocked. From ad2961e755133688a5d2d1d8c9626696addbd099 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sat, 15 Aug 2026 17:40:04 +0200 Subject: [PATCH 2/6] Use Pester prerelease default Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/actions/Test-PSModule/action.yml | 1 - .github/workflows/Test-ModuleLocal.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index 8b8a27a2..42ebd4a6 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -289,7 +289,6 @@ runs: Debug: ${{ inputs.Debug }} Verbose: ${{ inputs.Verbose }} Version: '[6.1.0,7.0.0)' - Prerelease: false GitHubVersion: ${{ inputs.Version }} GitHubPrerelease: ${{ inputs.Prerelease }} WorkingDirectory: ${{ inputs.WorkingDirectory }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index 63e7d3c6..c5165913 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -72,7 +72,6 @@ jobs: uses: PSModule/Invoke-Pester@4ff33199141fdf22568990b6107fe3148ae93a1c # v5.1.0 with: Debug: ${{ fromJson(inputs.Settings).Debug }} - Prerelease: false Verbose: ${{ fromJson(inputs.Settings).Verbose }} Version: '[6.1.0,7.0.0)' GitHubVersion: ${{ fromJson(inputs.Settings).Version }} From 2c4069e46d02348ee0e6ecd384708153374cb9d5 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sat, 15 Aug 2026 17:42:06 +0200 Subject: [PATCH 3/6] Move action tests to tests folders Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/actions/Test-PSModule/src/main.ps1 | 2 +- .../{src => }/tests/Module/Module.Configuration.ps1 | 0 .../{src => }/tests/Module/PSModule/PSModule.Container.ps1 | 0 .../{src => }/tests/Module/PSModule/PSModule.Tests.ps1 | 0 .../{src => }/tests/SourceCode/PSModule/PSModule.Container.ps1 | 0 .../{src => }/tests/SourceCode/PSModule/PSModule.Tests.ps1 | 0 .../{src => }/tests/SourceCode/SourceCode.Configuration.ps1 | 0 7 files changed, 1 insertion(+), 1 deletion(-) rename .github/actions/Test-PSModule/{src => }/tests/Module/Module.Configuration.ps1 (100%) rename .github/actions/Test-PSModule/{src => }/tests/Module/PSModule/PSModule.Container.ps1 (100%) rename .github/actions/Test-PSModule/{src => }/tests/Module/PSModule/PSModule.Tests.ps1 (100%) rename .github/actions/Test-PSModule/{src => }/tests/SourceCode/PSModule/PSModule.Container.ps1 (100%) rename .github/actions/Test-PSModule/{src => }/tests/SourceCode/PSModule/PSModule.Tests.ps1 (100%) rename .github/actions/Test-PSModule/{src => }/tests/SourceCode/SourceCode.Configuration.ps1 (100%) diff --git a/.github/actions/Test-PSModule/src/main.ps1 b/.github/actions/Test-PSModule/src/main.ps1 index 1706791f..6284a354 100644 --- a/.github/actions/Test-PSModule/src/main.ps1 +++ b/.github/actions/Test-PSModule/src/main.ps1 @@ -8,7 +8,7 @@ $moduleName = if ([string]::IsNullOrEmpty($env:PSMODULE_TEST_PSMODULE_INPUT_Name $env:PSMODULE_TEST_PSMODULE_INPUT_Name } $settings = $env:PSMODULE_TEST_PSMODULE_INPUT_Settings -$testPath = Resolve-Path -Path "$PSScriptRoot/tests/$settings" | Select-Object -ExpandProperty Path +$testPath = Resolve-Path -Path "$PSScriptRoot/../tests/$settings" | Select-Object -ExpandProperty Path $localTestPath = Resolve-Path -Path 'tests' | Select-Object -ExpandProperty Path switch ($settings) { diff --git a/.github/actions/Test-PSModule/src/tests/Module/Module.Configuration.ps1 b/.github/actions/Test-PSModule/tests/Module/Module.Configuration.ps1 similarity index 100% rename from .github/actions/Test-PSModule/src/tests/Module/Module.Configuration.ps1 rename to .github/actions/Test-PSModule/tests/Module/Module.Configuration.ps1 diff --git a/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Container.ps1 b/.github/actions/Test-PSModule/tests/Module/PSModule/PSModule.Container.ps1 similarity index 100% rename from .github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Container.ps1 rename to .github/actions/Test-PSModule/tests/Module/PSModule/PSModule.Container.ps1 diff --git a/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 b/.github/actions/Test-PSModule/tests/Module/PSModule/PSModule.Tests.ps1 similarity index 100% rename from .github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 rename to .github/actions/Test-PSModule/tests/Module/PSModule/PSModule.Tests.ps1 diff --git a/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Container.ps1 b/.github/actions/Test-PSModule/tests/SourceCode/PSModule/PSModule.Container.ps1 similarity index 100% rename from .github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Container.ps1 rename to .github/actions/Test-PSModule/tests/SourceCode/PSModule/PSModule.Container.ps1 diff --git a/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1 b/.github/actions/Test-PSModule/tests/SourceCode/PSModule/PSModule.Tests.ps1 similarity index 100% rename from .github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1 rename to .github/actions/Test-PSModule/tests/SourceCode/PSModule/PSModule.Tests.ps1 diff --git a/.github/actions/Test-PSModule/src/tests/SourceCode/SourceCode.Configuration.ps1 b/.github/actions/Test-PSModule/tests/SourceCode/SourceCode.Configuration.ps1 similarity index 100% rename from .github/actions/Test-PSModule/src/tests/SourceCode/SourceCode.Configuration.ps1 rename to .github/actions/Test-PSModule/tests/SourceCode/SourceCode.Configuration.ps1 From b980d1a6711fc276fc6d781a6f4a517531ee0da9 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sat, 15 Aug 2026 17:42:13 +0200 Subject: [PATCH 4/6] Exclude context-dependent framework tests Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/workflows/Test-Actions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/Test-Actions.yml b/.github/workflows/Test-Actions.yml index a42b8c7f..7d82b7a4 100644 --- a/.github/workflows/Test-Actions.yml +++ b/.github/workflows/Test-Actions.yml @@ -62,6 +62,7 @@ jobs: } $testPaths = Get-ChildItem -Path '.github/actions' -Directory | + Where-Object { $_.Name -ne 'Test-PSModule' } | ForEach-Object { Join-Path -Path $_.FullName -ChildPath 'tests' } | Where-Object { Test-Path -Path $_ } if (-not $testPaths) { From 8c3366fdf36e2c9b0494e14400e2ccf485039a04 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sat, 15 Aug 2026 17:47:31 +0200 Subject: [PATCH 5/6] Restore internal action test layout Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/actions/Test-PSModule/src/main.ps1 | 2 +- .../{ => src}/tests/Module/Module.Configuration.ps1 | 0 .../{ => src}/tests/Module/PSModule/PSModule.Container.ps1 | 0 .../{ => src}/tests/Module/PSModule/PSModule.Tests.ps1 | 0 .../{ => src}/tests/SourceCode/PSModule/PSModule.Container.ps1 | 0 .../{ => src}/tests/SourceCode/PSModule/PSModule.Tests.ps1 | 0 .../{ => src}/tests/SourceCode/SourceCode.Configuration.ps1 | 0 .github/workflows/Test-Actions.yml | 1 - 8 files changed, 1 insertion(+), 2 deletions(-) rename .github/actions/Test-PSModule/{ => src}/tests/Module/Module.Configuration.ps1 (100%) rename .github/actions/Test-PSModule/{ => src}/tests/Module/PSModule/PSModule.Container.ps1 (100%) rename .github/actions/Test-PSModule/{ => src}/tests/Module/PSModule/PSModule.Tests.ps1 (100%) rename .github/actions/Test-PSModule/{ => src}/tests/SourceCode/PSModule/PSModule.Container.ps1 (100%) rename .github/actions/Test-PSModule/{ => src}/tests/SourceCode/PSModule/PSModule.Tests.ps1 (100%) rename .github/actions/Test-PSModule/{ => src}/tests/SourceCode/SourceCode.Configuration.ps1 (100%) diff --git a/.github/actions/Test-PSModule/src/main.ps1 b/.github/actions/Test-PSModule/src/main.ps1 index 6284a354..1706791f 100644 --- a/.github/actions/Test-PSModule/src/main.ps1 +++ b/.github/actions/Test-PSModule/src/main.ps1 @@ -8,7 +8,7 @@ $moduleName = if ([string]::IsNullOrEmpty($env:PSMODULE_TEST_PSMODULE_INPUT_Name $env:PSMODULE_TEST_PSMODULE_INPUT_Name } $settings = $env:PSMODULE_TEST_PSMODULE_INPUT_Settings -$testPath = Resolve-Path -Path "$PSScriptRoot/../tests/$settings" | Select-Object -ExpandProperty Path +$testPath = Resolve-Path -Path "$PSScriptRoot/tests/$settings" | Select-Object -ExpandProperty Path $localTestPath = Resolve-Path -Path 'tests' | Select-Object -ExpandProperty Path switch ($settings) { diff --git a/.github/actions/Test-PSModule/tests/Module/Module.Configuration.ps1 b/.github/actions/Test-PSModule/src/tests/Module/Module.Configuration.ps1 similarity index 100% rename from .github/actions/Test-PSModule/tests/Module/Module.Configuration.ps1 rename to .github/actions/Test-PSModule/src/tests/Module/Module.Configuration.ps1 diff --git a/.github/actions/Test-PSModule/tests/Module/PSModule/PSModule.Container.ps1 b/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Container.ps1 similarity index 100% rename from .github/actions/Test-PSModule/tests/Module/PSModule/PSModule.Container.ps1 rename to .github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Container.ps1 diff --git a/.github/actions/Test-PSModule/tests/Module/PSModule/PSModule.Tests.ps1 b/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 similarity index 100% rename from .github/actions/Test-PSModule/tests/Module/PSModule/PSModule.Tests.ps1 rename to .github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 diff --git a/.github/actions/Test-PSModule/tests/SourceCode/PSModule/PSModule.Container.ps1 b/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Container.ps1 similarity index 100% rename from .github/actions/Test-PSModule/tests/SourceCode/PSModule/PSModule.Container.ps1 rename to .github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Container.ps1 diff --git a/.github/actions/Test-PSModule/tests/SourceCode/PSModule/PSModule.Tests.ps1 b/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1 similarity index 100% rename from .github/actions/Test-PSModule/tests/SourceCode/PSModule/PSModule.Tests.ps1 rename to .github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1 diff --git a/.github/actions/Test-PSModule/tests/SourceCode/SourceCode.Configuration.ps1 b/.github/actions/Test-PSModule/src/tests/SourceCode/SourceCode.Configuration.ps1 similarity index 100% rename from .github/actions/Test-PSModule/tests/SourceCode/SourceCode.Configuration.ps1 rename to .github/actions/Test-PSModule/src/tests/SourceCode/SourceCode.Configuration.ps1 diff --git a/.github/workflows/Test-Actions.yml b/.github/workflows/Test-Actions.yml index 7d82b7a4..a42b8c7f 100644 --- a/.github/workflows/Test-Actions.yml +++ b/.github/workflows/Test-Actions.yml @@ -62,7 +62,6 @@ jobs: } $testPaths = Get-ChildItem -Path '.github/actions' -Directory | - Where-Object { $_.Name -ne 'Test-PSModule' } | ForEach-Object { Join-Path -Path $_.FullName -ChildPath 'tests' } | Where-Object { Test-Path -Path $_ } if (-not $testPaths) { From 0423d6a9e122962a126e6d3f41408748ba3b5f5c Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sat, 15 Aug 2026 17:51:35 +0200 Subject: [PATCH 6/6] Align coverage inputs with Pester 6.1 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/actions/Get-PesterCodeCoverage/README.md | 4 ++++ .github/actions/Test-PSModule/action.yml | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/actions/Get-PesterCodeCoverage/README.md b/.github/actions/Get-PesterCodeCoverage/README.md index e6ca8cf0..c2936f41 100644 --- a/.github/actions/Get-PesterCodeCoverage/README.md +++ b/.github/actions/Get-PesterCodeCoverage/README.md @@ -78,7 +78,11 @@ Summary: ## Requirements 1. **Pester 6.1 Code Coverage Reports** + Preceding steps must generate JSON coverage reports named `*-CodeCoverage*.json` + from the Pester 6.1 `CodeCoverage` result object. The action consumes + `CoveragePercent`, `CoveragePercentTarget`, `CommandsMissed`, + `CommandsExecuted`, and `FilesAnalyzed` plus their count properties. 2. **GitHub CLI** The action uses `gh run download` to fetch artifacts from the current workflow run diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index 42ebd4a6..f6321f67 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -85,7 +85,7 @@ inputs: required: false CodeCoverage_OutputFormat: description: | - Format to use for code coverage report. Possible values: JaCoCo, CoverageGutters, Cobertura + Format to use for code coverage report. Possible values in Pester 6.1: JaCoCo or Cobertura. required: false CodeCoverage_OutputPath: description: | @@ -113,7 +113,7 @@ inputs: required: false CodeCoverage_UseBreakpoints: description: | - EXPERIMENTAL: When false, use Profiler based tracer to do CodeCoverage instead of using breakpoints. + When false, use the profiler-based tracer instead of breakpoints for code coverage. required: false CodeCoverage_SingleHitBreakpoints: description: |