[rspec-devel] [ANN] RSpec 0.9.4

aslak hellesoy aslak.hellesoy at gmail.com
Thu May 10 06:57:50 EDT 2007


RSpec 0.9.4 has just been released. Gems haven't rsync'ed around the
globe yet, so you might have to wait a few hours to install it.

The big news this time is Spec::Ui 0.2.0, which has been released
along with RSpec core. This RSpec extension gives you custom Watir
matchers (custom Selenium-RC matchers are not implemented yet).
Moreover, it comes with a custom KICK ASS formatter that, for each
failing example, puts a screenshot of your browser - and its HTML
source - straight into the report. And it all gets embedded into one
single HTML file.

Spec::Ui is not documented on the website yet (there are some READMEs
and examples in the source though). But here is the gist of it:

== Install ==
gem install rspec -r 0.9.4
gem install spec_ui -r 0.2.0

=== Windows users - if you want screenshots ===
gem install win32screenshot
Install RMagick (special install procedure)

== Configure ==

=== Rakefile ===
require 'spec/rake/spectask'

desc "Run UI Specs"
Spec::Rake::SpecTask.new('spec:ui') do |t|
  t.spec_files = FileList['spec/**/*.rb']
  t.spec_opts = [
    '--require', 'spec/spec_helper',
    '--format', 'Spec::Ui::ScreenshotFormatter:spec_report.html',
    '--format', 'progress',
  ]
end

=== spec_helper.rb ===
# require this file from all your specs under MYAPP/spec/watir or
MYAPP/spec/selenium
require 'rubygems'
require 'spec'
require 'spec/ui'
require 'spec/ui/watir'

class Spec::DSL::Behaviour
  def before_eval
    # This gives us Watir matchers. Sorry - Selenium-RC users must use
the low level API
    include Spec::Matchers::Watir
  end
end

=== before and after blocks ===
All of your specs need some carefully designed before and after blocks:

before(:all) do
  @browser = Watir::Browser.new
  #@browser = Selenium::SeleniumDriver.new("localhost", 4444,
"*safari", "http://www.google.no", 10000)
end

after(:each) do
  # This is needed to make screenshots work
  Spec::Ui::ScreenshotFormatter.browser = @browser
end

after(:all) do
  @browser.kill! rescue nil
end


More information about the rspec-devel mailing list