‘Sup PSHomies,
As excited as I get whenever I see all purple (or is it magenta? 😛 ) and green on my test results, how do you report your results? I saw this great article on reporting against Pester results by Dirk Bremen. I did see a screenshot of this somewhere on twitter but it didn’t register at that time. So having this article was great! You should definitely read his blog!
When I saved the Active Directory operational readiness, I realized that on screen it looked great, but as a report it was kinda flat. So I went back and looked at the code, I had only on Describe!
I decided to categorize the test by functionality and give the test appropriate Tags. Giving the tests tags helps target a specific test, no need to run the whole test to get a specific test 😉
Save the output to a XML file. I saw Flynn Bundy use the -PassThru switch to save the results as an object.
I also exported the results to XML just for good measure. You can always refer to past results if necessary…
Here’s a screenshot with the Forest operational test expanded:
Nice!
A little Slack notification on the side please!
Flynn also used Slack to send a notification. As luck would have it @pscookiemonster has a Slack Module aptly named, wait for it… PSSlack! Warren’s take on Slack is definitely worth reading if you’re considering using Slack as  a way to communicate with team members. I’m quite notorious for stalking my colleagues with unsolicited notification/reports. Slack is a great way to communicate without feeling pushy about it. Information is there, feel free to read it or don’t, your call.
I’m using the summary count of the Pester results for notification purposes.
Quick tip on the token: Jaap Brasser has a blog about saving credentials safely. Your Slack token should be treated as careful as a password. I saved the token as a password using the Slack team name as the username for reference. This makes retrieving the token simple.
Here’s what the notification looks like in Slack
Warren’s module is one to watch!
Ok here the code all put together:
<# | |
Author: I. Strachan | |
Version: | |
Version History: | |
Purpose: Get Active Directory Report Unit tests and send notification to Slack | |
#> | |
#region import module and saved credentials/tokens | |
Import-Module PSSlack | |
#Jaap Brassers blog on saving credentials. Saved slack's token as a password | |
#http://www.jaapbrasser.com/quickly-and-securely-storing-your-credentials-powershell/ | |
$savedCreds = Import-CliXml -Path "${env:\userprofile}\Hash.Cred" | |
$token = $savedCreds.'udm-slack'.GetNetworkCredential().Password | |
$exportDate = Get-Date -Format ddMMyyyy | |
#endregion | |
#region Main | |
$pesterADDS = Invoke-Pester .\ps1\dsa\AD.Operations* -OutputFile .\export\adds\ADConfiguration.NUnit.xml -OutputFormat NUnitXml -PassThru | |
#run reportunit against DFSnShares.NUnit.xml and display result in browser | |
& .\tools\ReportUnit\reportunit.exe .\export\adds\ADConfiguration.NUnit.xml | |
Invoke-Item .\export\adds\ADConfiguration.NUnit.html | |
#Export Pester results to xml | |
$pesterADDS | Export-Clixml .\export\adds\PesterResults-ADDS-$($exportDate).xml -Encoding UTF8 | |
#endregion | |
#region Send Slack notification of Pester results | |
$iconEmoji = @{$true = ':white_check_mark:';$false=':red_circle:'}[$pesterADDS.FailedCount -eq 0] | |
$color = @{$true='green';$false='red'}[$pesterADDS.FailedCount -eq 0] | |
#SlackFields | |
$Fields = [PSCustomObject]@{ | |
Total = $pesterADDS.TotalCount | |
Passed = $pesterADDS.PassedCount | |
Failed = $pesterADDS.FailedCount | |
Skipped = $pesterADDS.SkippedCount | |
Pending = $pesterADDS.PendingCount | |
} | New-SlackField -Short | |
$slackAttachments = @{ | |
Color = $([System.Drawing.Color]::$color) | |
PreText = 'Active Directory Pester Results' | |
AuthorName = '@irwins' | |
AuthorIcon = 'https://raw.githubusercontent.com/irwins/PowerShell-scripts/master/wrench.png' | |
Fields = $Fields | |
Fallback = 'Your client is bad' | |
Title = 'Pester counts' | |
TitleLink = 'https://www.youtube.com/watch?v=IAztPZBQrrU' | |
Text = @{$true='Everything passed';$false='Check failed tests'}[$pesterADDS.FailedCount -eq 0] | |
} | |
New-SlackMessageAttachment @slackAttachments | | |
New-SlackMessage -Channel 'powershell' -IconEmoji $iconEmoji -AsUser -Username '@irwins' | | |
Send-SlackMessage -Token $token | |
#endregion |
Shout-out to you guys for your contribution to the PowerShell community! Keep it up! This is going to make Pester reporting and notifications way easier and not to mention cool! 😉
Hope it’s worth something to you
Ttyl,
Urv