jsmestad-watircuke 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/README.rdoc +66 -0
- data/Rakefile +48 -0
- data/VERSION +1 -0
- data/cucumber.yml +2 -0
- data/features/ajax.feature +15 -0
- data/features/sample.feature +11 -0
- data/features/search.feature +6 -0
- data/features/step_definitions/search.rb +11 -0
- data/features/support/env.rb +19 -0
- data/features/support/paths.rb +25 -0
- data/lib/watircuke.rb +147 -0
- data/lib/webratcuke.rb +197 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/watircuke_spec.rb +7 -0
- data/watircuke.gemspec +51 -0
- metadata +70 -0
data/.gitignore
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
= Watircuke
|
2
|
+
|
3
|
+
Webrat & Watir Family common (and some cool) steps as a gem.
|
4
|
+
|
5
|
+
|
6
|
+
== Install
|
7
|
+
|
8
|
+
Cucumber:: http://wiki.github.com/aslakhellesoy/cucumber/install
|
9
|
+
Watir ~ Firewatir ~ Safariwatir:: http://wtr.rubyforge.org/install.html
|
10
|
+
|
11
|
+
|
12
|
+
== Use
|
13
|
+
|
14
|
+
* Remove step_definitions/webrat_steps.rb if you have it.
|
15
|
+
|
16
|
+
* In the scenarios you want to run watir, just add the @watir tag before.
|
17
|
+
|
18
|
+
* Run `cucumber` for webrat and `cucumber -p watir` for some Watir =D
|
19
|
+
|
20
|
+
|
21
|
+
== Rails Sample
|
22
|
+
|
23
|
+
|
24
|
+
cucumber.yml
|
25
|
+
|
26
|
+
default: -r features/support/env.rb -r features/support/webrat.rb -r features/step_definitions
|
27
|
+
watir: -r features/support/env.rb -r features/support/watir.rb -r features/step_definitions -t watir
|
28
|
+
|
29
|
+
|
30
|
+
support/watir.rb
|
31
|
+
|
32
|
+
require 'watircuke'
|
33
|
+
Before do
|
34
|
+
@environment = "http://localhost:3000/
|
35
|
+
sleep 1
|
36
|
+
end
|
37
|
+
# optional
|
38
|
+
# at_exit do
|
39
|
+
# @browser.close
|
40
|
+
# end
|
41
|
+
|
42
|
+
|
43
|
+
support/webrat.rb
|
44
|
+
|
45
|
+
require 'webrat'
|
46
|
+
Webrat.configure do |config|
|
47
|
+
config.mode = :rails
|
48
|
+
end
|
49
|
+
require 'cucumber/rails/rspec'
|
50
|
+
require 'webrat/core/matchers'
|
51
|
+
require 'webratcuke'
|
52
|
+
|
53
|
+
|
54
|
+
support/env.rb
|
55
|
+
|
56
|
+
ENV["RAILS_ENV"] ||= "cucumber"
|
57
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
|
58
|
+
require 'cucumber/rails/world'
|
59
|
+
require 'cucumber/formatter/unicode' # Comment out this line if you don't want Cucumber Unicode support
|
60
|
+
Cucumber::Rails.use_transactional_fixtures
|
61
|
+
Cucumber::Rails.bypass_rescue # Comment out this line if you want Rails own error handling
|
62
|
+
|
63
|
+
|
64
|
+
== ABOUT
|
65
|
+
|
66
|
+
**cukewatir maximizes the Gherkin speak and minimizes the Watir code.
|
data/Rakefile
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "watircuke"
|
8
|
+
gem.summary = "Watir steps for cucumber"
|
9
|
+
gem.email = "x@nofxx.com"
|
10
|
+
gem.homepage = "http://github.com/nofxx/watircuke"
|
11
|
+
gem.authors = ["Rich Downie", "Marcos Piccinini"]
|
12
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
13
|
+
end
|
14
|
+
|
15
|
+
rescue LoadError
|
16
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
17
|
+
end
|
18
|
+
|
19
|
+
require 'spec/rake/spectask'
|
20
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
21
|
+
spec.libs << 'lib' << 'spec'
|
22
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
23
|
+
end
|
24
|
+
|
25
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
26
|
+
spec.libs << 'lib' << 'spec'
|
27
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
28
|
+
spec.rcov = true
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
task :default => :spec
|
33
|
+
|
34
|
+
require 'rake/rdoctask'
|
35
|
+
Rake::RDocTask.new do |rdoc|
|
36
|
+
if File.exist?('VERSION.yml')
|
37
|
+
config = YAML.load(File.read('VERSION.yml'))
|
38
|
+
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
39
|
+
else
|
40
|
+
version = ""
|
41
|
+
end
|
42
|
+
|
43
|
+
rdoc.rdoc_dir = 'rdoc'
|
44
|
+
rdoc.title = "watircuke #{version}"
|
45
|
+
rdoc.rdoc_files.include('README*')
|
46
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
47
|
+
end
|
48
|
+
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.3.1
|
data/cucumber.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
Feature: Ajax
|
2
|
+
|
3
|
+
@watir
|
4
|
+
Scenario: ajaxy test
|
5
|
+
Given I am on the watircuke page
|
6
|
+
And I click "download_button"
|
7
|
+
And I wait until "facebox"
|
8
|
+
And I wait until "archives"
|
9
|
+
Then I should see "Download richdownie/watircuke at master "
|
10
|
+
|
11
|
+
@watir
|
12
|
+
Scenario: ajaxy search
|
13
|
+
Given I am on bing
|
14
|
+
And I fill in "q" with "cucu"
|
15
|
+
Then I should see "cucumber"
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Feature: Github
|
2
|
+
|
3
|
+
Scenario: search for cucumber at github
|
4
|
+
Given I am on the cucumber page
|
5
|
+
Then I should see "BDD that talks to domain experts first and code second"
|
6
|
+
When I fill in "q" with "watircuke"
|
7
|
+
And I press "Search"
|
8
|
+
And I select "Code" from "type_value"
|
9
|
+
Then I should see "Repositories"
|
10
|
+
When I follow "richdownie / watircuke"
|
11
|
+
Then I should see "H30 (watir, safariwatir, firewatir)"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec'
|
2
|
+
|
3
|
+
if ENV['CUC_ENV'] == 'webrat'
|
4
|
+
require 'webrat/core/matchers'
|
5
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../lib/webratcuke')
|
6
|
+
else
|
7
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../lib/watircuke')
|
8
|
+
|
9
|
+
Before do
|
10
|
+
@environment = "http://github.com/"
|
11
|
+
# sleep 1
|
12
|
+
end
|
13
|
+
|
14
|
+
# "after all"
|
15
|
+
at_exit do
|
16
|
+
@browser.close if @browser
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module NavigationHelpers
|
2
|
+
def path_to(page_name)
|
3
|
+
case page_name
|
4
|
+
|
5
|
+
when /the guides page/i
|
6
|
+
@environment + "guides/home"
|
7
|
+
when /the watircuke page/i
|
8
|
+
@environment + "richdownie/watircuke/tree/master"
|
9
|
+
when /the cucumber page/i
|
10
|
+
@environment + "aslakhellesoy/cucumber/tree/master"
|
11
|
+
when /the homepage/i
|
12
|
+
@environment
|
13
|
+
when /bing/i
|
14
|
+
"http://bing.com"
|
15
|
+
|
16
|
+
# Add more page name => path mappings here
|
17
|
+
|
18
|
+
else
|
19
|
+
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
|
20
|
+
"Now, go and add a mapping in features/support/paths.rb"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
World(NavigationHelpers)
|
data/lib/watircuke.rb
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
#
|
2
|
+
# Watircuke
|
3
|
+
#
|
4
|
+
# Commonly used watir steps
|
5
|
+
#
|
6
|
+
#
|
7
|
+
require 'cucumber'
|
8
|
+
require 'spec'
|
9
|
+
|
10
|
+
#
|
11
|
+
# Environment
|
12
|
+
#
|
13
|
+
if ENV['FIREWATIR']
|
14
|
+
require 'firewatir'
|
15
|
+
Browser = FireWatir::Firefox
|
16
|
+
else
|
17
|
+
case RUBY_PLATFORM
|
18
|
+
when /darwin|i686-linux/
|
19
|
+
require 'firewatir'
|
20
|
+
Browser = FireWatir::Firefox
|
21
|
+
# require 'safariwatir'
|
22
|
+
# Browser = Watir::Safari
|
23
|
+
when /win32|mingw/
|
24
|
+
require 'watir'
|
25
|
+
Browser = Watir::IE
|
26
|
+
when /java/
|
27
|
+
require 'celerity'
|
28
|
+
Browser = Celerity::Browser
|
29
|
+
else
|
30
|
+
raise "This platform is not supported (#{PLATFORM})"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
#
|
35
|
+
# Cucumber
|
36
|
+
#
|
37
|
+
Before do
|
38
|
+
@browser = Browser.new
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Browsing
|
43
|
+
#
|
44
|
+
Given /^I am on (.+)$/ do |page_name|
|
45
|
+
@browser.goto(path_to(page_name))
|
46
|
+
end
|
47
|
+
|
48
|
+
When /^I (visit|go to) the (.+)$/ do |_, text|
|
49
|
+
@browser.goto(@environment + text)
|
50
|
+
end
|
51
|
+
|
52
|
+
When /^I (click|follow) "([^\"]*)"$/ do |_, id|
|
53
|
+
link = @browser.link(:text, id).click rescue @browser.link(:id, id).click
|
54
|
+
end
|
55
|
+
|
56
|
+
Then /^I should be on (.+)$/ do |page_name|
|
57
|
+
URI.parse(@browser.url).path.should == path_to(page_name)
|
58
|
+
end
|
59
|
+
|
60
|
+
#
|
61
|
+
# Should see
|
62
|
+
#
|
63
|
+
#
|
64
|
+
Then /^I should see "([^\"]*)"$/ do |text|
|
65
|
+
@browser.contains_text(text).should be_true
|
66
|
+
end
|
67
|
+
|
68
|
+
Then /^I should not see "([^\"]*)"$/ do |text|
|
69
|
+
@browser.contains_text(text).should be_false
|
70
|
+
end
|
71
|
+
|
72
|
+
# Then /^I should see "([^\"]*)" (\d+) times*$/ do |text, count|
|
73
|
+
# res = @browser.body
|
74
|
+
# (count.to_i - 1).times { res.sub!(/#{text}/, "")}
|
75
|
+
# res.should contain(text)
|
76
|
+
# res.sub(/#{text}/, "").should_not contain(text)
|
77
|
+
# end
|
78
|
+
|
79
|
+
Given /I verify the page contains a div class "(.*)"/ do |byclass|
|
80
|
+
@browser.div(:class, byclass).exists?.should be_true
|
81
|
+
end
|
82
|
+
|
83
|
+
Given /I verify the page contains a div id "(.*)"/ do |id|
|
84
|
+
@browser.div(:id, id).exists?.should be_true
|
85
|
+
end
|
86
|
+
|
87
|
+
Given /I verify the page contains a link class "(.*)"/ do |byclass|
|
88
|
+
@browser.link(:class, byclass).exists?.should be_true
|
89
|
+
end
|
90
|
+
|
91
|
+
Given /I verify the page contains the image "(.*)"/ do |image|
|
92
|
+
@browser.image(:src, image).exists?.should be_true
|
93
|
+
end
|
94
|
+
|
95
|
+
Then /^the "([^\"]*)" checkbox should be checked$/ do |label|
|
96
|
+
@browser.checkbox(label).should be_checked
|
97
|
+
end
|
98
|
+
|
99
|
+
#
|
100
|
+
# Forms
|
101
|
+
#
|
102
|
+
#
|
103
|
+
When /^I press "([^\"]*)"$/ do |b|
|
104
|
+
@browser.button(:value, b).click
|
105
|
+
end
|
106
|
+
|
107
|
+
When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
|
108
|
+
@browser.text_field(:name, field).set(value)
|
109
|
+
end
|
110
|
+
|
111
|
+
When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, id|
|
112
|
+
@browser.select_list(:id, id).select(value)
|
113
|
+
end
|
114
|
+
|
115
|
+
When /^I choose "([^\"]*)"$/ do |id|
|
116
|
+
@browser.radio(:id, id).click
|
117
|
+
end
|
118
|
+
|
119
|
+
When /^I check "([^\"]*)"$/ do |id|
|
120
|
+
@browser.checkbox(:id, id).click
|
121
|
+
end
|
122
|
+
|
123
|
+
When /^I uncheck "([^\"]*)"$/ do |id|
|
124
|
+
@browser.checkbox(field).clear
|
125
|
+
end
|
126
|
+
|
127
|
+
#
|
128
|
+
# Javascript
|
129
|
+
#
|
130
|
+
Given /From the "(.*)" link I fire the "(.*)" event/ do |text, event|
|
131
|
+
@browser.link(:text , text).fire_event(event)
|
132
|
+
end
|
133
|
+
|
134
|
+
Given /I click the "(.*)" span/ do |text|
|
135
|
+
@browser.span(:text, text).click
|
136
|
+
end
|
137
|
+
|
138
|
+
Given /I wait (\d+) seconds*/ do |time|
|
139
|
+
sleep time.to_i
|
140
|
+
end
|
141
|
+
|
142
|
+
Given /^I wait until "([^\"]*)"$/ do |div|
|
143
|
+
7.times do |i|
|
144
|
+
break if @browser.div(:id, div).exists?
|
145
|
+
i == 7 ? raise(Watir::Exception::UnknownObjectException) : sleep(1)
|
146
|
+
end
|
147
|
+
end
|
data/lib/webratcuke.rb
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
#
|
2
|
+
# Watircuke
|
3
|
+
#
|
4
|
+
# Commonly used webrat steps
|
5
|
+
# http://github.com/brynary/webrat
|
6
|
+
#
|
7
|
+
|
8
|
+
#
|
9
|
+
# Browsing
|
10
|
+
#
|
11
|
+
#
|
12
|
+
Given /^I am on (.+)$/ do |page_name|
|
13
|
+
visit path_to(page_name)
|
14
|
+
end
|
15
|
+
|
16
|
+
When /^I go to (.+)$/ do |page_name|
|
17
|
+
visit path_to(page_name)
|
18
|
+
end
|
19
|
+
|
20
|
+
When /^I follow "([^\"]*)"$/ do |link|
|
21
|
+
click_link(link)
|
22
|
+
end
|
23
|
+
|
24
|
+
Then /^I should be on (.+)$/ do |page_name|
|
25
|
+
URI.parse(current_url).path.should == path_to(page_name)
|
26
|
+
end
|
27
|
+
|
28
|
+
#
|
29
|
+
# Should see
|
30
|
+
#
|
31
|
+
#
|
32
|
+
Then /^I should see "([^\"]*)"$/ do |text|
|
33
|
+
response.should contain(text)
|
34
|
+
end
|
35
|
+
|
36
|
+
Then /^I should not see "([^\"]*)"$/ do |text|
|
37
|
+
response.should_not contain(text)
|
38
|
+
end
|
39
|
+
|
40
|
+
Then /^I should see "([^\"]*)" (\d+) times*$/ do |text, count|
|
41
|
+
res = response.body
|
42
|
+
(count.to_i - 1).times { res.sub!(/#{text}/, "")}
|
43
|
+
res.should contain(text)
|
44
|
+
res.sub(/#{text}/, "").should_not contain(text)
|
45
|
+
end
|
46
|
+
|
47
|
+
Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value|
|
48
|
+
field_labeled(field).value.should =~ /#{value}/
|
49
|
+
end
|
50
|
+
|
51
|
+
Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value|
|
52
|
+
field_labeled(field).value.should_not =~ /#{value}/
|
53
|
+
end
|
54
|
+
|
55
|
+
Then /^the "([^\"]*)" checkbox should be checked$/ do |label|
|
56
|
+
field_labeled(label).should be_checked
|
57
|
+
end
|
58
|
+
|
59
|
+
Then /^I should see a (\S+) in the (\S+)$/ do |element, containing_element|
|
60
|
+
response.should have_tag("##{containing_element} .#{element}")
|
61
|
+
end
|
62
|
+
|
63
|
+
Then /^I should see the (\S+) in the (\S+)$/ do |element, containing_element|
|
64
|
+
response.should have_tag("##{containing_element} ##{element}")
|
65
|
+
end
|
66
|
+
|
67
|
+
Then /^I should see (\d+) (\S+) in the (\S+)$/ do |count, element, containing_element|
|
68
|
+
response.should have_tag("##{containing_element} .#{element.singularize}",:count => count.to_i)
|
69
|
+
end
|
70
|
+
|
71
|
+
Then /^I should see (\d+) to (\d+) (\S+) in the (\S+)$/ do |min, max, element, containing_element|
|
72
|
+
response.should have_tag("##{containing_element} .#{element.singularize}",min.to_i..max.to_i)
|
73
|
+
end
|
74
|
+
|
75
|
+
Then /^the (\S+) in the (\S+) should contain (a|an|the) (\S+)$/ do |middle_element, outer_element, a, inner_element|
|
76
|
+
response.should have_tag("##{outer_element} .#{middle_element} .#{inner_element}")
|
77
|
+
end
|
78
|
+
|
79
|
+
Then /^I should see the (\S+)$/ do |element_id|
|
80
|
+
response.should have_tag("##{element_id}")
|
81
|
+
end
|
82
|
+
|
83
|
+
Then /^I should see (a|an) (\S+)$/ do |a, element_class|
|
84
|
+
response.should have_tag(".#{element_class}")
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
#
|
89
|
+
# Forms
|
90
|
+
#
|
91
|
+
#
|
92
|
+
When /^I press "([^\"]*)"$/ do |button|
|
93
|
+
click_button(button)
|
94
|
+
end
|
95
|
+
|
96
|
+
When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
|
97
|
+
fill_in(field, :with => value)
|
98
|
+
end
|
99
|
+
|
100
|
+
When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, field|
|
101
|
+
select(value, :from => field)
|
102
|
+
end
|
103
|
+
|
104
|
+
# Use this step in conjunction with Rail's datetime_select helper. For example:
|
105
|
+
# When I select "December 25, 2008 10:00" as the date and time
|
106
|
+
When /^I select "([^\"]*)" as the date and time$/ do |time|
|
107
|
+
select_datetime(time)
|
108
|
+
end
|
109
|
+
|
110
|
+
When /^I (press|follow|check|uncheck|choose) "([^\"]*)" for (.*) whose (.*) is "([^\"]*)"$/ do |action, whatyouclick, class_name, var_name, value|
|
111
|
+
id = var_name == "id" ? value : eval("\"#{class_name}\".classify.constantize.find_by_#{var_name}(\"#{value}\").id.to_s")
|
112
|
+
within("tr[id=row_#{class_name}_#{id}]") do
|
113
|
+
case action
|
114
|
+
when "press" then click_button(whatyouclick)
|
115
|
+
when "follow" then click_link(whatyouclick)
|
116
|
+
when "check" then check(whatyouclick)
|
117
|
+
when "uncheck" then uncheck(whatyouclick)
|
118
|
+
when "choose" then uncheck(whatyouclick)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
# Use this step when using multiple datetime_select helpers on a page or
|
125
|
+
# you want to specify which datetime to select. Given the following view:
|
126
|
+
# <%= f.label :preferred %><br />
|
127
|
+
# <%= f.datetime_select :preferred %>
|
128
|
+
# <%= f.label :alternative %><br />
|
129
|
+
# <%= f.datetime_select :alternative %>
|
130
|
+
# The following steps would fill out the form:
|
131
|
+
# When I select "November 23, 2004 11:20" as the "Preferred" date and time
|
132
|
+
# And I select "November 25, 2004 10:30" as the "Alternative" date and time
|
133
|
+
When /^I select "([^\"]*)" as the "([^\"]*)" date and time$/ do |datetime, datetime_label|
|
134
|
+
select_datetime(datetime, :from => datetime_label)
|
135
|
+
end
|
136
|
+
|
137
|
+
# Use this step in conjunction with Rail's time_select helper. For example:
|
138
|
+
# When I select "2:20PM" as the time
|
139
|
+
# Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
|
140
|
+
# will convert the 2:20PM to 14:20 and then select it.
|
141
|
+
When /^I select "([^\"]*)" as the time$/ do |time|
|
142
|
+
select_time(time)
|
143
|
+
end
|
144
|
+
|
145
|
+
# Use this step when using multiple time_select helpers on a page or you want to
|
146
|
+
# specify the name of the time on the form. For example:
|
147
|
+
# When I select "7:30AM" as the "Gym" time
|
148
|
+
When /^I select "([^\"]*)" as the "([^\"]*)" time$/ do |time, time_label|
|
149
|
+
select_time(time, :from => time_label)
|
150
|
+
end
|
151
|
+
|
152
|
+
# Use this step in conjunction with Rail's date_select helper. For example:
|
153
|
+
# When I select "February 20, 1981" as the date
|
154
|
+
When /^I select "([^\"]*)" as the date$/ do |date|
|
155
|
+
select_date(date)
|
156
|
+
end
|
157
|
+
|
158
|
+
# Use this step when using multiple date_select helpers on one page or
|
159
|
+
# you want to specify the name of the date on the form. For example:
|
160
|
+
# When I select "April 26, 1982" as the "Date of Birth" date
|
161
|
+
When /^I select "([^\"]*)" as the "([^\"]*)" date$/ do |date, date_label|
|
162
|
+
select_date(date, :from => date_label)
|
163
|
+
end
|
164
|
+
|
165
|
+
When /^I choose "([^\"]*)"$/ do |field|
|
166
|
+
choose(field)
|
167
|
+
end
|
168
|
+
|
169
|
+
When /^I check "([^\"]*)"$/ do |field|
|
170
|
+
check(field)
|
171
|
+
end
|
172
|
+
|
173
|
+
When /^I uncheck "([^\"]*)"$/ do |field|
|
174
|
+
uncheck(field)
|
175
|
+
end
|
176
|
+
|
177
|
+
When /^I attach the file at "([^\"]*)" to "([^\"]*)"$/ do |path, field|
|
178
|
+
attach_file(field, path)
|
179
|
+
end
|
180
|
+
|
181
|
+
|
182
|
+
# Steps that are generally useful and help encourage use of semantic
|
183
|
+
# IDs and Class Names in your markup. In the steps below, a match following
|
184
|
+
# "the" will verify the presences of an element with a given ID while a match following
|
185
|
+
# "a" or "an" will verify the presence an element of a given class.
|
186
|
+
Then /^I debug$/ do
|
187
|
+
debugger
|
188
|
+
end
|
189
|
+
|
190
|
+
Then /^save_and_open_page$/ do
|
191
|
+
save_and_open_page
|
192
|
+
end
|
193
|
+
|
194
|
+
Then /^I wait for ([0-9]+) seconds$/ do |delay|
|
195
|
+
sleep delay.to_i
|
196
|
+
end
|
197
|
+
|
data/spec/spec_helper.rb
ADDED
data/watircuke.gemspec
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{watircuke}
|
5
|
+
s.version = "0.3.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Rich Downie", "Marcos Piccinini"]
|
9
|
+
s.date = %q{2009-06-29}
|
10
|
+
s.email = %q{x@nofxx.com}
|
11
|
+
s.extra_rdoc_files = [
|
12
|
+
"README.rdoc"
|
13
|
+
]
|
14
|
+
s.files = [
|
15
|
+
".gitignore",
|
16
|
+
"README.rdoc",
|
17
|
+
"Rakefile",
|
18
|
+
"VERSION",
|
19
|
+
"cucumber.yml",
|
20
|
+
"features/ajax.feature",
|
21
|
+
"features/sample.feature",
|
22
|
+
"features/search.feature",
|
23
|
+
"features/step_definitions/search.rb",
|
24
|
+
"features/support/env.rb",
|
25
|
+
"features/support/paths.rb",
|
26
|
+
"lib/watircuke.rb",
|
27
|
+
"lib/webratcuke.rb",
|
28
|
+
"spec/spec_helper.rb",
|
29
|
+
"spec/watircuke_spec.rb",
|
30
|
+
"watircuke.gemspec"
|
31
|
+
]
|
32
|
+
s.homepage = %q{http://github.com/nofxx/watircuke}
|
33
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
34
|
+
s.require_paths = ["lib"]
|
35
|
+
s.rubygems_version = %q{1.3.4}
|
36
|
+
s.summary = %q{Watir steps for cucumber}
|
37
|
+
s.test_files = [
|
38
|
+
"spec/spec_helper.rb",
|
39
|
+
"spec/watircuke_spec.rb"
|
40
|
+
]
|
41
|
+
|
42
|
+
if s.respond_to? :specification_version then
|
43
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
|
+
s.specification_version = 3
|
45
|
+
|
46
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
47
|
+
else
|
48
|
+
end
|
49
|
+
else
|
50
|
+
end
|
51
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jsmestad-watircuke
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rich Downie
|
8
|
+
- Marcos Piccinini
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-06-29 00:00:00 -07:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description:
|
18
|
+
email: x@nofxx.com
|
19
|
+
executables: []
|
20
|
+
|
21
|
+
extensions: []
|
22
|
+
|
23
|
+
extra_rdoc_files:
|
24
|
+
- README.rdoc
|
25
|
+
files:
|
26
|
+
- .gitignore
|
27
|
+
- README.rdoc
|
28
|
+
- Rakefile
|
29
|
+
- VERSION
|
30
|
+
- cucumber.yml
|
31
|
+
- features/ajax.feature
|
32
|
+
- features/sample.feature
|
33
|
+
- features/search.feature
|
34
|
+
- features/step_definitions/search.rb
|
35
|
+
- features/support/env.rb
|
36
|
+
- features/support/paths.rb
|
37
|
+
- lib/watircuke.rb
|
38
|
+
- lib/webratcuke.rb
|
39
|
+
- spec/spec_helper.rb
|
40
|
+
- spec/watircuke_spec.rb
|
41
|
+
- watircuke.gemspec
|
42
|
+
has_rdoc: false
|
43
|
+
homepage: http://github.com/nofxx/watircuke
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options:
|
46
|
+
- --charset=UTF-8
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: "0"
|
54
|
+
version:
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: "0"
|
60
|
+
version:
|
61
|
+
requirements: []
|
62
|
+
|
63
|
+
rubyforge_project:
|
64
|
+
rubygems_version: 1.2.0
|
65
|
+
signing_key:
|
66
|
+
specification_version: 3
|
67
|
+
summary: Watir steps for cucumber
|
68
|
+
test_files:
|
69
|
+
- spec/spec_helper.rb
|
70
|
+
- spec/watircuke_spec.rb
|