TestEngineer
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.
With Cucumber
There is an Around hook that you can include with
require 'testengineer/cucumber'. This will wrap any Scenario tagged with the
@testengineer tag.
Imagine a 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 And the
database is offline as:
Given /^the database is offline$/ do
TestEngineer.stop_process('db')
end