spec_ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt ADDED
@@ -0,0 +1,5 @@
1
+ = 0.0.2
2
+ * Made setup much easier
3
+
4
+ = 0.0.1
5
+ * Applied [#7685] spec_ui feedback and patch (Patch from Alvin Schur)
data/Manifest.txt ADDED
@@ -0,0 +1,25 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ lib/spec/ui.rb
6
+ lib/spec/ui/behaviour.rb
7
+ lib/spec/ui/configuration.rb
8
+ lib/spec/ui/formatter.rb
9
+ lib/spec/ui/rake_tasks.rb
10
+ lib/spec/ui/rmagick_not_installed.png
11
+ lib/spec/ui/screenshot_helper.rb
12
+ lib/spec/ui/selenium_helper.rb
13
+ lib/spec/ui/version.rb
14
+ lib/spec/ui/watir_helper.rb
15
+ lib/spec/ui/webapp_helper.rb
16
+ lib/spec/ui/win32screenshot_not_installed.png
17
+ lib/spec/ui/wrong_win32screenshot.png
18
+ examples/selenium/Rakefile
19
+ examples/selenium/README.txt
20
+ examples/selenium/spec/google/find_rspecs_homepage_spec.rb
21
+ examples/selenium/spec/spec_helper.rb
22
+ examples/watir/Rakefile
23
+ examples/watir/README.txt
24
+ examples/watir/spec/google/find_rspecs_homepage_spec.rb
25
+ examples/watir/spec/spec_helper.rb
data/README.txt ADDED
@@ -0,0 +1,12 @@
1
+ README for spec/ui
2
+ ==================
3
+
4
+ spec/ui is an add-on to RSpec that lets you use a UI-testing framework
5
+ such as Selenium or Watir/Safariwatir from RSpec. spec/ui also makes it
6
+ easy to create HTML reports with screenshots as described in this blogpost:
7
+
8
+ http://blog.aslakhellesoy.com/articles/2006/12/02/getting-screenshots-from-watir
9
+
10
+ As much as possible of the supporting code has been factored out to separate files
11
+ under spec/ui, and the distribution contains examples with a spec_helper and a Rakefile
12
+ that you can copy into your own project and tweak if needed.
data/Rakefile ADDED
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'rake/rdoctask'
8
+ require 'rake/contrib/rubyforgepublisher'
9
+ require 'fileutils'
10
+ require 'hoe'
11
+ include FileUtils
12
+ require File.join(File.dirname(__FILE__), 'lib', 'spec', 'ui', 'version')
13
+
14
+ AUTHOR = "Aslak Hellesoy" # can also be an array of Authors
15
+ EMAIL = "rspec-user@rubyforge.org"
16
+ DESCRIPTION = "Run UI RSpec examples with screenshot reports"
17
+ GEM_NAME = "spec_ui" # what ppl will type to install your gem
18
+ RUBYFORGE_PROJECT = "rspec" # The unix name for your project
19
+ HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
20
+ RELEASE_TYPES = %w( gem ) # can use: gem, tar, zip
21
+
22
+
23
+ NAME = "spec_ui"
24
+ REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
25
+ VERS = ENV['VERSION'] || (Spec::Ui::VERSION::STRING + (REV ? ".#{REV}" : ""))
26
+ CLEAN.include ['**/.*.sw?', '*.gem', '.config']
27
+ RDOC_OPTS = ['--quiet', '--title', "spec/ui documentation",
28
+ "--opname", "index.html",
29
+ "--line-numbers",
30
+ "--main", "README",
31
+ "--inline-source"]
32
+
33
+ # Generate all the Rake tasks
34
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
35
+ hoe = Hoe.new(GEM_NAME, VERS) do |p|
36
+ p.author = AUTHOR
37
+ p.description = DESCRIPTION
38
+ p.email = EMAIL
39
+ p.summary = DESCRIPTION
40
+ p.url = HOMEPATH
41
+ p.rubyforge_name = RUBYFORGE_PROJECT
42
+ p.clean_globs = CLEAN #An array of file patterns to delete on clean.
43
+
44
+ # == Optional
45
+ #p.changes - A description of the release's latest changes.
46
+ #p.extra_deps - An array of rubygem dependencies.
47
+ #p.spec_extras - A hash of extra values to set in the gemspec.
48
+ end
@@ -0,0 +1,29 @@
1
+ = Using Selenium with spec/ui =
2
+
3
+ The files in this directory are examples illustrating how to use Selenium
4
+ with spec/ui. Prerequisites:
5
+
6
+ * Install Java 1.4 or later
7
+ * Download SeleniumRC 0.9.0 or later (http://www.openqa.org/selenium-rc/)
8
+ * Copy selenium-server.jar into the spec directory.
9
+ * Copy selenium.rb into the spec directory.
10
+
11
+ After this is installed, open two shells in this directory.
12
+
13
+ In the first one, run:
14
+
15
+ java -jar spec/selenium-server.jar
16
+
17
+ In the second one, run:
18
+
19
+ rake spec:ui
20
+
21
+ = Note for OS X users =
22
+
23
+ == Firefox 2.0.0.1 ==
24
+ If you experience that the selenium server is just hanging, read this:
25
+ http://forums.openqa.org/message.jspa?messageID=16541
26
+
27
+ == Safari ==
28
+ You may have to set up Safari's proxy settings manually:
29
+ http://forums.openqa.org/thread.jspa?messageID=20570&#20570
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/spec/spec_helper'
2
+ Spec::Ui.create_tasks
@@ -0,0 +1,38 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "Google's search page" do
4
+ before(:all) do
5
+ @browser = Selenium::SeleniumDriver.new("localhost", 4444, "*safari", "http://www.google.no", 10000)
6
+ @browser.start
7
+ end
8
+
9
+ before(:each) do
10
+ @browser.open('http://www.google.no')
11
+ end
12
+
13
+ it "should find rspec's home page when I search for rspec" do
14
+ @browser.type "name=q", "rspec"
15
+ @browser.click_and_wait "name=btnG"
16
+ @browser.is_text_present("rspec.rubyforge.org").should be_true
17
+ end
18
+
19
+ it "should find rspec's home page when I search for 'better than fudge' (will probably fail)" do
20
+ @browser.type "name=q", "better than fudge"
21
+ @browser.click_and_wait "name=btnG"
22
+ @browser.is_text_present("rspec.rubyforge.org").should be_true
23
+ end
24
+
25
+ it "should not find Ali G when I search for rspec" do
26
+ @browser.type "name=q", "rspec"
27
+ @browser.click_and_wait "name=btnG"
28
+ @browser.is_text_present("Ali G").should be_false
29
+ end
30
+
31
+ after(:each) do
32
+ save_screenshot_and_source(@browser)
33
+ end
34
+
35
+ after(:all) do
36
+ @browser.kill! rescue nil
37
+ end
38
+ end
@@ -0,0 +1,11 @@
1
+ # You don't need to tweak the $LOAD_PATH if you have RSpec and Spec::Ui installed as gems
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../../../rspec/lib')
3
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../../lib')
4
+
5
+ require 'rubygems'
6
+ require 'spec'
7
+ require 'spec/ui'
8
+
9
+ Spec::Runner.configure do |config|
10
+ config.spec_ui_report_dir = File.dirname(__FILE__) + '/report'
11
+ end
@@ -0,0 +1,12 @@
1
+ = Using Watir with spec/ui =
2
+
3
+ The files in this directory are examples illustrating how to use Watir
4
+ with spec/ui. Prerequisites:
5
+
6
+ * See the general prerequisites in the toplevel README
7
+ * gem install watir -y # If you're on Windows
8
+ * gem install safariwatir -y # If you're on OS X
9
+
10
+ After this is installed, run the watir specs:
11
+
12
+ rake spec:ui
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/spec/spec_helper'
2
+ Spec::Ui.create_tasks
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "Google's search page" do
4
+ before(:all) do
5
+ @browser = Watir::Browser.new
6
+ end
7
+
8
+ before(:each) do
9
+ @browser.goto('http://www.google.com')
10
+ end
11
+
12
+ it "should find rspec's home page when I search for rspec" do
13
+ @browser.text_field(:name, "q").set("rspec")
14
+ @browser.button(:name, "btnG").click
15
+ @browser.should have_link(:url, "http://rspec.rubyforge.org/")
16
+ end
17
+
18
+ it "should find rspec's home page when I search for 'better than fudge' (this is supposed to fail)" do
19
+ @browser.text_field(:name, "q").set("better than fudge")
20
+ @browser.button(:name, "btnG").click
21
+ @browser.should have_link(:url, "http://rspec.rubyforge.org/")
22
+ end
23
+
24
+ it "should not find Ali G when I search for respec" do
25
+ @browser.text_field(:name, "q").set("respec")
26
+ @browser.button(:name, "btnG").click
27
+ @browser.should_not have_text("Ali G")
28
+ end
29
+
30
+ after(:each) do
31
+ save_screenshot_and_source(@browser)
32
+ end
33
+
34
+ after(:all) do
35
+ @browser.kill! rescue nil
36
+ end
37
+ end
@@ -0,0 +1,11 @@
1
+ # You don't need to tweak the $LOAD_PATH if you have RSpec and Spec::Ui installed as gems
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../../../rspec/lib')
3
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../../lib')
4
+
5
+ require 'rubygems'
6
+ require 'spec'
7
+ require 'spec/ui'
8
+
9
+ Spec::Runner.configure do |config|
10
+ config.spec_ui_report_dir = File.dirname(__FILE__) + '/report'
11
+ end
data/lib/spec/ui.rb ADDED
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/ui/configuration'
2
+ require File.dirname(__FILE__) + '/ui/behaviour'
3
+ require File.dirname(__FILE__) + '/ui/webapp_helper'
4
+ require File.dirname(__FILE__) + '/ui/watir_helper'
5
+ require File.dirname(__FILE__) + '/ui/selenium_helper'
6
+ require File.dirname(__FILE__) + '/ui/screenshot_helper'
7
+ require File.dirname(__FILE__) + '/ui/rake_tasks'
@@ -0,0 +1,6 @@
1
+ class Spec::DSL::Behaviour
2
+ def before_eval #:nodoc:
3
+ include Spec::Ui::WebappHelper
4
+ include Spec::Watir # This gives us Watir matchers
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ class Spec::DSL::Configuration
2
+ attr_accessor :spec_ui_report_dir
3
+
4
+ def spec_ui_image_dir
5
+ File.join(spec_ui_report_dir, 'images')
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ module Spec
2
+ module Ui
3
+ class ScreenshotFormatter < Spec::Runner::Formatter::HtmlFormatter
4
+ def extra_failure_content(failure)
5
+ super + " <div><a href=\"images/#{current_example_number}.png\"><img width=\"25%\" height=\"25%\" src=\"images/#{current_example_number}.png\"></a></div>\n"
6
+ end
7
+ end
8
+
9
+ class WebappFormatter < ScreenshotFormatter
10
+ def extra_failure_content(failure)
11
+ super + " <div><a href=\"images/#{current_example_number}.html\">HTML source</a></div>\n"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,31 @@
1
+ module Spec
2
+ module Ui
3
+ def self.create_tasks
4
+ require 'spec/rake/spectask'
5
+
6
+ if Spec::Runner.configuration.spec_ui_report_dir.nil?
7
+ STDERR.puts <<-EOF
8
+ You must tell Spec::Ui where the report should go.
9
+ Please put the following in your spec/spec_helper.rb file:
10
+
11
+ require 'spec'
12
+ require 'spec/ui'
13
+
14
+ Spec::Runner.configure do |config|
15
+ config.spec_ui_report_dir = File.dirname(__FILE__) + '/report'
16
+ end
17
+ EOF
18
+ end
19
+
20
+ FileUtils.rm_rf(Spec::Runner.configuration.spec_ui_report_dir) if File.exist?(Spec::Runner.configuration.spec_ui_report_dir)
21
+ FileUtils.mkdir_p(Spec::Runner.configuration.spec_ui_report_dir)
22
+
23
+ desc "Run UI Specs"
24
+ Spec::Rake::SpecTask.new('spec:ui') do |t|
25
+ t.spec_files = FileList['spec/**/*.rb']
26
+ t.spec_opts = ['--require', 'spec/spec_helper', '--format', 'Spec::Ui::WebappFormatter']
27
+ t.out = "#{Spec::Runner.configuration.spec_ui_report_dir}/index.html"
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,62 @@
1
+ require 'fileutils'
2
+
3
+ module Spec
4
+ module Ui
5
+ module ScreenshotHelper
6
+ def md(dir)
7
+ FileUtils.mkdir_p(dir) unless File.directory?(dir)
8
+ end
9
+
10
+ if RUBY_PLATFORM =~ /darwin/
11
+ def save_screenshot(dir, spec_number)
12
+ md(dir)
13
+ img_path = "#{dir}/#{spec_number}.png"
14
+ # How do we capture the current window??
15
+ `screencapture #{img_path}`
16
+ end
17
+ else # Win32
18
+ begin
19
+ require 'rubygems'
20
+ require 'RMagick'
21
+ gem 'win32screenshot', '>=0.0.2'
22
+ require 'win32screenshot'
23
+ def save_screenshot(dir, spec_number)
24
+ md(dir)
25
+ width, height, bmp = ::Win32::Screenshot.foreground
26
+ begin
27
+ img = Magick::Image.from_blob(bmp)[0]
28
+ img_path = "#{dir}/#{spec_number}.png"
29
+ dir = File.dirname(img_path)
30
+ FileUtils.mkdir_p(dir) unless File.exist?(dir)
31
+ img.write(img_path)
32
+ img
33
+ rescue Magick::ImageMagickError => e
34
+ if e.message =~ /Insufficient image data in file/
35
+ e.message << "\nTry this:\n1) Open your app (e.g. Internet Explorer)\n2) Resize the app to be bigger (without maximizing).\n3) close it so Windows remembers its size.\n" +
36
+ "This *may* make this error go away."
37
+ end
38
+ raise e
39
+ end
40
+ end
41
+ rescue Gem::LoadError => e
42
+ def save_screenshot(dir, spec_number)
43
+ md(dir)
44
+ FileUtils.cp(File.dirname(__FILE__) + '/wrong_win32screenshot.png', "#{dir}/#{spec_number}.png")
45
+ end
46
+ rescue LoadError => e
47
+ if(e.message =~ /win32screenshot/)
48
+ def save_screenshot(dir, spec_number)
49
+ md(dir)
50
+ FileUtils.cp(File.dirname(__FILE__) + '/win32screenshot_not_installed.png', "#{dir}/#{spec_number}.png")
51
+ end
52
+ else
53
+ def save_screenshot(dir, spec_number)
54
+ md(dir)
55
+ FileUtils.cp(File.dirname(__FILE__) + '/rmagick_not_installed.png', "#{dir}/#{spec_number}.png")
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,21 @@
1
+ module Selenium
2
+ class SeleniumDriver
3
+ def click_and_wait(locator, timeout="5000")
4
+ click(locator)
5
+ wait_for_page_to_load(timeout)
6
+ end
7
+
8
+ def open_and_wait(url, timeout="5000")
9
+ open(url)
10
+ wait_for_page_to_load(timeout)
11
+ end
12
+
13
+ def html
14
+ get_html_source
15
+ end
16
+
17
+ def kill!
18
+ stop
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ module Spec
2
+ module Ui
3
+ module VERSION #:nodoc:
4
+ MAJOR = 0
5
+ MINOR = 1
6
+ TINY = 0
7
+
8
+ STRING = [MAJOR, MINOR, TINY].join('.')
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,167 @@
1
+ require File.dirname(__FILE__) + '/webapp_helper'
2
+ require 'rubygems'
3
+
4
+ if RUBY_PLATFORM =~ /darwin/
5
+ require 'safariwatir'
6
+ Watir::Browser = Watir::Safari
7
+ else
8
+ require 'watir'
9
+ Watir::Browser = Watir::IE
10
+
11
+ class Watir::Browser
12
+ alias old_initialize initialize
13
+ # Brings the IE to the foreground (provided Win32::Screenshot is installed)
14
+ def initialize
15
+ result = old_initialize
16
+ ::Win32::Screenshot.setForegroundWindow(self.getIE.hwnd) rescue nil
17
+ result
18
+ end
19
+ end
20
+ end
21
+
22
+ class Watir::Browser
23
+ def kill!
24
+ close
25
+ end
26
+
27
+ alias contain_text? contains_text
28
+
29
+ alias old_goto goto
30
+ # Redefinition of Watir's original goto, which gives a better
31
+ # exception message (the URL is in the message)
32
+ def goto(url)
33
+ begin
34
+ old_goto(url)
35
+ rescue => e
36
+ e.message << "\nURL: #{url}"
37
+ raise e
38
+ end
39
+ end
40
+ end
41
+
42
+ module Spec
43
+ # Matchers for Watir::IE/Watir::Safari instances
44
+ module Watir
45
+ # RSpec matcher that passes if @browser#text matches +text+ (String or Regexp)
46
+ def have_text(text)
47
+ Spec::Watir::HaveText.new(text)
48
+ end
49
+
50
+ class HaveText # :nodoc
51
+ def initialize(text_or_regexp)
52
+ @text_or_regexp = text_or_regexp
53
+ end
54
+
55
+ def matches?(browser)
56
+ @browser = browser
57
+ if @text_or_regexp.is_a?(Regexp)
58
+ !!browser.text =~ @text_or_regexp
59
+ else
60
+ !!browser.text.index(@text_or_regexp.to_s)
61
+ end
62
+ end
63
+
64
+ def failure_message
65
+ "Expected browser to have text matching #{@text_or_regexp}, but it was not found in:\n#{@browser.text}"
66
+ end
67
+
68
+ def negative_failure_message
69
+ "Expected browser to not have text matching #{@text_or_regexp}, but it was found in:\n#{@browser.text}"
70
+ end
71
+ end
72
+
73
+ # RSpec matcher that passes if @browser#html matches +text+ (String or Regexp)
74
+ def have_html(text)
75
+ Spec::Watir::HaveHtml.new(text)
76
+ end
77
+
78
+ class HaveHtml # :nodoc
79
+ def initialize(text_or_regexp)
80
+ @text_or_regexp = text_or_regexp
81
+ end
82
+
83
+ def matches?(browser)
84
+ @browser = browser
85
+ if @text_or_regexp.is_a?(Regexp)
86
+ !!browser.html =~ @text_or_regexp
87
+ else
88
+ !!browser.html.index(@text_or_regexp.to_s)
89
+ end
90
+ end
91
+
92
+ def failure_message
93
+ "Expected browser to have HTML matching #{@text_or_regexp}, but it was not found in:\n#{@browser.html}"
94
+ end
95
+
96
+ def negative_failure_message
97
+ "Expected browser to not have HTML matching #{@text_or_regexp}, but it was found in:\n#{@browser.html}"
98
+ end
99
+ end
100
+
101
+ # RSpec matcher that passes if @browser#link(+how+,+what+) returns an existing link.
102
+ def have_link(how, what)
103
+ Spec::Watir::HaveLink.new(how, what)
104
+ end
105
+
106
+ class HaveLink # :nodoc
107
+ def initialize(how, what)
108
+ @how, @what = how, what
109
+ end
110
+
111
+ def matches?(browser)
112
+ @browser = browser
113
+ begin
114
+ link = @browser.link(@how, @what)
115
+ if link.respond_to?(:assert_exists)
116
+ # IE
117
+ link.assert_exists
118
+ true
119
+ else
120
+ # Safari
121
+ link.exists?
122
+ end
123
+ rescue ::Watir::Exception::UnknownObjectException => e
124
+ false
125
+ end
126
+ end
127
+
128
+ def failure_message
129
+ "Expected browser to have link(#{@how}, #{@what}), but it was not found"
130
+ end
131
+
132
+ def negative_failure_message
133
+ "Expected browser not to have link(#{@how}, #{@what}), but it was found"
134
+ end
135
+ end
136
+
137
+ # RSpec matcher that passes if @browser#text_field(+how+,+what+) returns an existing text field.
138
+ def have_text_field(how, what)
139
+ Spec::Watir::HaveTextField.new(how, what)
140
+ end
141
+
142
+ class HaveTextField # :nodoc
143
+ def initialize(how, what)
144
+ @how, @what = how, what
145
+ end
146
+
147
+ def matches?(browser)
148
+ @browser = browser
149
+ begin
150
+ text_field = @browser.text_field(@how, @what)
151
+ text_field.assert_exists
152
+ true
153
+ rescue ::Watir::Exception::UnknownObjectException => e
154
+ false
155
+ end
156
+ end
157
+
158
+ def failure_message
159
+ "Expected browser to have text_field(#{@how}, #{@what}), but it was not found"
160
+ end
161
+
162
+ def negative_failure_message
163
+ "Expected browser not to have text_field(#{@how}, #{@what}), but it was found"
164
+ end
165
+ end
166
+ end
167
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec'
2
+ require File.dirname(__FILE__) + '/screenshot_helper'
3
+ require File.dirname(__FILE__) + '/formatter'
4
+
5
+ module Spec
6
+ module Ui
7
+ module WebappHelper
8
+ include Spec::Ui::ScreenshotHelper
9
+ @@spec_number = 0
10
+
11
+ # Call this method from your teardown block to have source and screenshot written to disk.
12
+ def save_screenshot_and_source(browser)
13
+ save_screenshot(Spec::Runner.configuration.spec_ui_image_dir, @@spec_number)
14
+ save_source(Spec::Runner.configuration.spec_ui_image_dir, @@spec_number, browser.html)
15
+ @@spec_number += 1
16
+ end
17
+
18
+ def save_source(dir, spec_number, html)
19
+ File.open("#{dir}/#{spec_number}.html", "w") {|io| io.write(html)}
20
+ end
21
+ end
22
+ end
23
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.1
3
+ specification_version: 1
4
+ name: spec_ui
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2007-05-01 00:00:00 +02:00
8
+ summary: Run UI RSpec examples with screenshot reports
9
+ require_paths:
10
+ - lib
11
+ email: rspec-user@rubyforge.org
12
+ homepage: http://rspec.rubyforge.org
13
+ rubyforge_project: rspec
14
+ description: Run UI RSpec examples with screenshot reports
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Aslak Hellesoy
31
+ files:
32
+ - History.txt
33
+ - Manifest.txt
34
+ - README.txt
35
+ - Rakefile
36
+ - lib/spec/ui.rb
37
+ - lib/spec/ui/behaviour.rb
38
+ - lib/spec/ui/configuration.rb
39
+ - lib/spec/ui/formatter.rb
40
+ - lib/spec/ui/rake_tasks.rb
41
+ - lib/spec/ui/rmagick_not_installed.png
42
+ - lib/spec/ui/screenshot_helper.rb
43
+ - lib/spec/ui/selenium_helper.rb
44
+ - lib/spec/ui/version.rb
45
+ - lib/spec/ui/watir_helper.rb
46
+ - lib/spec/ui/webapp_helper.rb
47
+ - lib/spec/ui/win32screenshot_not_installed.png
48
+ - lib/spec/ui/wrong_win32screenshot.png
49
+ - examples/selenium/Rakefile
50
+ - examples/selenium/README.txt
51
+ - examples/selenium/spec/google/find_rspecs_homepage_spec.rb
52
+ - examples/selenium/spec/spec_helper.rb
53
+ - examples/watir/Rakefile
54
+ - examples/watir/README.txt
55
+ - examples/watir/spec/google/find_rspecs_homepage_spec.rb
56
+ - examples/watir/spec/spec_helper.rb
57
+ test_files: []
58
+
59
+ rdoc_options: []
60
+
61
+ extra_rdoc_files: []
62
+
63
+ executables: []
64
+
65
+ extensions: []
66
+
67
+ requirements: []
68
+
69
+ dependencies:
70
+ - !ruby/object:Gem::Dependency
71
+ name: hoe
72
+ version_requirement:
73
+ version_requirements: !ruby/object:Gem::Version::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 1.2.0
78
+ version: