Minitest::Flash
Simple Minitest reporter to indicate the result of test runs in as fancy a way you like. Here's how I like it: Flash the macOS menu bar in green or red and play a short and mutable sound effect.
- Homepage
- Author: Sven Schwyn - Bitcetera
Thank you for supporting free and open-source software by sponsoring on GitHub or on Donorbox. Any gesture is appreciated, from a single Euro for a ☕️ cup of coffee to 🍹 early retirement.
Install
This gem is cryptographically signed in order to assure it hasn't been tampered with. Unless already done, please add the author's public key as a trusted certificate now:
gem cert --add <(curl -Ls https://raw.github.com/svoop/minitest-flash/main/certs/svoop.pem)
Add the following to the Gemfile or gems.rb of your Bundler powered Ruby project:
gem 'minitest-flash'
And then install the bundle:
bundle install --trust-policy MediumSecurity
Finally, require this gem in your test_helper.rb
or spec_helper.rb
:
require 'minitest/flash'
Usage
After every test run, the reporter simply invokes the minitest-flash
executable:
-
minitest-flash green
if the run passed -
minitest-flash red
if the run failed or has errors
It's your job to create the minitest-flash
executable to your liking and to place it somewhere in the PATH
.
Other people might work on the same code and prefer not use minitest-flash
. This is no problem as it won't do a thing unless a minitest-flash
executable exists.
Example
I'm on macOS and like things to be as obvious and unobtrusive as possible: Flash the menu bar either in green or red and optionally play a sound effect.
Here's what my /usr/local/bin/minitest-flash
executable looks like:
#!/bin/zsh
declare -A colors
colors[red]=bb0000
colors[green]=00bb00
if [ -z "$MINITEST_FLASH_NO_SOUND" ]; then
mpg123 $0.d/$1.mp3 2>/dev/null &
fi
for i in {1..2}; do
$0.d/ChangeMenuBarColor SolidColor "$colors[$1]" >/dev/null
$0.d/ChangeMenuBarColor SolidColor "000000" >/dev/null
done
As you see, the sound effects can easily be muted with:
export MINITEST_FLASH_NO_SOUND=1
For the above to work, you have to install mpg123
easiest through Homebrew:
brew install mpg123
A few support files are also necessary, let's create the directory for them:
sudo mkdir /usr/local/bin/minitest-flash.d
In there you have to put three files:
- the latest binary release of ChangeMenuBarColor
- a sound file
green.mp3
for successful runs - a sound file
red.mp3
for failed or errored runs
Development
To install the development dependencies and then run the test suite:
bundle install
bundle exec rake # run tests once
bundle exec guard # run tests whenever files are modified
You're welcome to submit issues and contribute code by forking the project and submitting pull requests.
License
The gem is available as open source under the terms of the MIT License.