Similatron

The laziest way to test generated artifacts.

Similatron compares files. It can make image, pdf, text or pure binary comparisons.

It's designed to be used in tests, so:

  • If the files are different, it'll raise an exception
  • If the expected file doesn't yet exist, it'll copy the expected one over (so you can build your tests post-hoc in one go)
  • It can create html/json reports after running, so you'll be able to inspect differences in the actual files, and, when available, have access to a file with the differences as computed.

Usage

One of the simplest ways to use it is the following:


after :all do
  Similatron.complete
end


it "creates an image for an ugly face" do
  expected = "spec/assets/expected_face.jpg"
  actual = face_builder.ugly_face(:path => "tmp/ugly.jpg")

  Similatron.compare(expected: expected, actual: actual)
end

Depending on the files...

  • If the actual exists and is equal to the expected, the spec will pass.
  • If the expected face doesn't exist, tmp/ugly.jpg will be copied over, and the spec will not fail.
  • Otherwise, the spec fails.

Whenever the images are not equal, an html report is generated so you can check the reasons for the failure.

Installation

Add this line to your application's Gemfile:

gem 'similatron'

And then execute:

$ bundle

Or install it yourself as:

$ gem install similatron

Similatron needs Imagemagick (to compare images), and a standard implementation of diff.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/dgsuarez/similatron.

License

The gem is available as open source under the terms of the MIT License.