View your emails with cucumber

I’ve been developing some new mailers at work, and I’ve found it really helpful to be able to view the emails as they are sent to the users. So I’ve implemented a cucumber step to help me achieve that, inspired on a similar webrat step for web pages.

Inside a support file for cucumber, like features/support/open_email.rb, insert the following code:

module SaveAndOpenEmail
  include Webrat::SaveAndOpenPage
  def save_and_open_email(email)
    return unless File.exist?(saved_page_dir)
    filename = "#{saved_page_dir}/email-#{}.html", "w") do |f|
      f.write email.to_s

Then in your step definitions, you can implement a step like this

Then(/^show me the emails?$/) do

UPDATE: As of version 0.2.2 of pickle, they already include this functionality, although it has a bug which has not been fixed. If you try to call that step, you will see:

undefined method `open_in_browser' for #<Cucumber::Rails::World:0x..fdb4951fa> (NoMethodError)

To fix it, as a workaround do this in features/support/email.rb

require 'pickle/email'

Pickle::Email.module_eval do
  include Webrat::SaveAndOpenPage

By Jorge Dias on

comments powered by Disqus