TestEngineer is a simple gem which adds some code around foreman for integration testing.
Currently it allows you to bring up an entire stack, based on what is defined
in the Foreman
Procfile, for the duration of a test case.
TestEngineer also allows you to arbitrarily shut off processes by name during the runtime of a test case.
There is an
Around hook that you can include with
require 'testengineer/cucumber'. This will wrap any Scenario tagged with the
Procfile such as:
web: ruby -r thin app.rb db: ./script/run-mongodb cache: memcached
A sample Cucumber feature might look like:
@testengineer Feature: Log in to My Site In order to facilitate meaningful relationships between users As a web visitor I should be able to log into my account on My Site Scenario: Log in Given an account named "octocat" When I log in to My Site Then I should be delighted with my fabulous profile Scenario: Log in when the site is degraded Given an account named "octocat" And the database is offline When I log in to My Site Then I should see a nice friendly fail whale.
For each scenario, TestEngineer will bring the entire stack (web, db, cache) up
and down. In the second scenario, I would have defined the step for
database is offline as:
Given /^the database is offline$/ do TestEngineer.stop_process('db') end