1

I have several Describe/It tests in a ps1 file called Behavior.Tests.ps1. Each test, however, can only run successfully on systems with specific hardware. I am aware that I can use tags like this in the Invoke-Pester command:

Invoke-Pester $path -Tag "Acceptance" -ExcludeTag "Flaky", "Slow", "LinuxOnly"

But I cannot count on the user to know the specifics of their hardware and choose the correct -Tag and -ExcludeTag to include. What I would rather do for my workflow is simply have Invoke-Pester .\Behavior.Tests.ps1, and then in the script have code like this that would get hardware info and build the right list of Tags and ExcludeTags:

if ($currentHardware -in $HardwareList) {
    $ExcludeTag += $TagFlaky
}

Then I would have a list of Tags and ExcludeTags before the first Describe/It that would run the right tests in the entire ps1 file. Is this possible in v5 Pester? I tried to debug and find the argument -Tag to modify it, but I could not find it.

1 Answer 1

1

You could create a wrapper PowerShell script that determines the tags prior to calling Invoke-Pester and then you can use that to Invoke Pester with the required tags.

For example:

$ComputerInfo = Get-ComputerInfo

$OS = switch ($ComputerInfo.WindowsProductName) {
    { $_ -match 'Windows 10' } { 'Win10' }
    { $_ -match 'Windows 8' { { 'Win8' }
    { $_ -match 'Linux' } { 'Linux' }
}

$Processor = switch ($ComputerInfo.CsProcessors.Name) {
    { $_ -match 'Intel' } { 'Intel' }
    { $_ -match 'ARM' } { 'ARM' }
}

Invoke-Pester $Path -Tag $OS,$Processor
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.