watirmark 5.28.2 → 5.29.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.
- checksums.yaml +4 -4
- data/bin/firefox_extensions/firebug/README.md +1 -0
- data/lib/watirmark/configuration.rb +1 -0
- data/lib/watirmark/controller/actions.rb +2 -1
- data/lib/watirmark/controller/controller.rb +10 -5
- data/lib/watirmark/cucumber/hook_helper.rb +11 -3
- data/lib/watirmark/cucumber/hooks.rb +10 -3
- data/lib/watirmark/cucumber/model_helper.rb +2 -8
- data/lib/watirmark/models/factory.rb +10 -2
- data/lib/watirmark/session.rb +13 -0
- data/lib/watirmark/version.rb +1 -1
- data/spec/controller_actions_spec.rb +56 -0
- data/spec/model_factory_spec.rb +18 -4
- metadata +29 -28
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 869eb50af6ffc0f094ab946ce3a02e65300f0cf5
|
|
4
|
+
data.tar.gz: cb1343978e8f19130cefe1da8ddaa3b9e1a9b469
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 31406663981f396d3660f6785f46a5f63c75dab98d847a7262c5fd3b35a9c2efda3ed5210efba9b6f171f646182d930494f3cc8781fe29a645e87b45f861a5d9
|
|
7
|
+
data.tar.gz: 54971e2d3debcb65fca67e92faab264b339601f528c57af641f065b888a17e5574af87ca13748f9188b272af2e1499853f2de5dcbd388e446b7650131412bb99
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Set :firebug to true in config file to automatically download and use latest version of Firebug extension for Firefox
|
|
@@ -38,14 +38,14 @@ module Watirmark
|
|
|
38
38
|
initialize_model(data)
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
def populate_data
|
|
42
|
-
submit_process_page(@last_process_page.underscored_name) {submit} if populate_values
|
|
41
|
+
def populate_data(updates=nil)
|
|
42
|
+
submit_process_page(@last_process_page.underscored_name) {submit} if populate_values(updates)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
def populate_values
|
|
45
|
+
def populate_values(updates=nil)
|
|
46
46
|
@seen_value = false
|
|
47
47
|
@last_process_page = nil
|
|
48
|
-
|
|
48
|
+
keyed_update_elements(updates).each do |k|
|
|
49
49
|
next unless k.populate_allowed?
|
|
50
50
|
submit_process_page_when_page_changes(k)
|
|
51
51
|
before_process_page(k)
|
|
@@ -123,7 +123,7 @@ module Watirmark
|
|
|
123
123
|
|
|
124
124
|
def populate_keyword_value(keyed_element)
|
|
125
125
|
call_method_if_exists("populate_#{keyed_element.keyword}") do
|
|
126
|
-
@view.send(keyed_element.keyword).wait_until_present
|
|
126
|
+
@view.send(keyed_element.keyword).wait_until_present
|
|
127
127
|
@view.send("#{keyed_element.keyword}=", value(keyed_element))
|
|
128
128
|
end
|
|
129
129
|
end
|
|
@@ -159,6 +159,11 @@ module Watirmark
|
|
|
159
159
|
@view.keyed_elements.select{|e| !value(e).nil?}
|
|
160
160
|
end
|
|
161
161
|
|
|
162
|
+
def keyed_update_elements(updates)
|
|
163
|
+
Watirmark.logger.info("Editing these keyword(s) in populate_data: #{updates}") unless updates.nil? || updates.empty?
|
|
164
|
+
keyed_elements.select{|k| updates.nil? || updates.include?(k.keyword) }
|
|
165
|
+
end
|
|
166
|
+
|
|
162
167
|
def locate_model(supermodel)
|
|
163
168
|
case supermodel
|
|
164
169
|
when Hash
|
|
@@ -10,12 +10,20 @@ module HookHelper
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
def take_screenshot
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
def take_screenshot(folder='', feature='')
|
|
14
|
+
path = "reports/screenshots/#{folder}"
|
|
15
|
+
if folder.empty?
|
|
16
|
+
image = "#{Time.now.to_i}-#{UUID.new.generate(:compact)}.png"
|
|
17
|
+
else
|
|
18
|
+
image = "#{feature}.png"
|
|
19
|
+
end
|
|
16
20
|
file = "#{path}/#{image}"
|
|
17
21
|
FileUtils.mkdir_p path unless File.directory? path
|
|
18
22
|
begin
|
|
23
|
+
if Page.browser.alert.exists?
|
|
24
|
+
Watirmark.logger.warn("Alert is Open while taking screenshot: #{Page.browser.alert.text}")
|
|
25
|
+
Page.browser.alert.close
|
|
26
|
+
end
|
|
19
27
|
Page.browser.screenshot.save file
|
|
20
28
|
data = File.open(file, 'rb') { |f| f.read }
|
|
21
29
|
data = Base64.encode64(data)
|
|
@@ -13,9 +13,16 @@ Before do |scenario|
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
After do |scenario|
|
|
16
|
-
|
|
16
|
+
if scenario.passed?
|
|
17
|
+
prepend = 'p_'
|
|
18
|
+
elsif scenario.failed?
|
|
19
|
+
prepend = 'f_'
|
|
20
|
+
else
|
|
21
|
+
prepend = 'i_'
|
|
22
|
+
end
|
|
23
|
+
folder = scenario.location.to_s[/\/features\/([^\.]*)/, 1]
|
|
24
|
+
feature = prepend+scenario.title.tr(' ', '_')
|
|
25
|
+
(file, file_type) = HookHelper.take_screenshot(folder, feature)
|
|
17
26
|
embed file, file_type
|
|
18
27
|
HookHelper.serialize_models
|
|
19
28
|
end
|
|
20
|
-
|
|
21
|
-
|
|
@@ -20,15 +20,9 @@ module ModelHelper
|
|
|
20
20
|
# Perform an action using a models and update
|
|
21
21
|
# the models if that action is successful
|
|
22
22
|
def with_model(model, table)
|
|
23
|
-
|
|
24
|
-
update_model(
|
|
23
|
+
cloned_model = model.clone
|
|
24
|
+
update_model(cloned_model, table)
|
|
25
25
|
yield
|
|
26
|
-
if Watirmark::Session.instance.post_failure
|
|
27
|
-
Watirmark.logger.info "Reverting Model #{Watirmark::Session.instance.post_failure}"
|
|
28
|
-
model.update(orig_model.to_h) # revert models on failure
|
|
29
|
-
elsif model.to_h != orig_model.to_h
|
|
30
|
-
Watirmark.logger.info "Updated model '#{model.model_name}' #{hash_record(table).inspect}"
|
|
31
|
-
end
|
|
32
26
|
end
|
|
33
27
|
end
|
|
34
28
|
|
|
@@ -15,7 +15,7 @@ module Watirmark
|
|
|
15
15
|
include FactoryMethodGenerators
|
|
16
16
|
|
|
17
17
|
attr_accessor :defaults, :model_name, :models, :parent, :children, :model_type
|
|
18
|
-
attr_reader :keywords
|
|
18
|
+
attr_reader :keywords, :updates
|
|
19
19
|
|
|
20
20
|
def marshal_dump
|
|
21
21
|
[@keywords, @model_name, @models, @parent, @children, @model_type, self.to_h]
|
|
@@ -33,6 +33,7 @@ module Watirmark
|
|
|
33
33
|
@search = self.class.search || Proc.new{nil}
|
|
34
34
|
@keywords = self.class.keys.dup || []
|
|
35
35
|
@children = self.class.children.dup.map(&:new)
|
|
36
|
+
@updates = []
|
|
36
37
|
set_model_name
|
|
37
38
|
set_default_values
|
|
38
39
|
create_model_getters_and_setters
|
|
@@ -106,11 +107,18 @@ module Watirmark
|
|
|
106
107
|
# Update the model using the provided hash
|
|
107
108
|
def update hash
|
|
108
109
|
remove_empty_entries hash
|
|
109
|
-
hash.each_pair
|
|
110
|
+
hash.each_pair do |key, value|
|
|
111
|
+
@updates << key
|
|
112
|
+
send "#{key}=", value
|
|
113
|
+
end
|
|
110
114
|
self
|
|
111
115
|
end
|
|
112
116
|
alias :has :update
|
|
113
117
|
|
|
118
|
+
def clear_updates
|
|
119
|
+
@updates = []
|
|
120
|
+
end
|
|
121
|
+
|
|
114
122
|
|
|
115
123
|
# Update the model using the provided hash but only if exists (TODO: may not be needed any more)
|
|
116
124
|
def update_existing_members hash
|
data/lib/watirmark/session.rb
CHANGED
|
@@ -94,6 +94,19 @@ module Watirmark
|
|
|
94
94
|
profile['security.warn_viewing_mixed.show_once'] = false
|
|
95
95
|
profile['security.mixed_content.block_active_content'] = false
|
|
96
96
|
end
|
|
97
|
+
if config.firebug
|
|
98
|
+
unless RbConfig::CONFIG['host_os'].match('linux')
|
|
99
|
+
warn "Firebug with Firefox only supported on Linux"
|
|
100
|
+
return
|
|
101
|
+
end
|
|
102
|
+
path = (File.expand_path "../../../bin/firefox_extensions/firebug", __FILE__)
|
|
103
|
+
file = 'addon-1843-latest.xpi'
|
|
104
|
+
Dir.chdir(path) do
|
|
105
|
+
File.delete(file) if File.exists?(file)
|
|
106
|
+
`wget https://addons.mozilla.org/firefox/downloads/latest/1843/addon-1843-latest.xpi`
|
|
107
|
+
end
|
|
108
|
+
profile.add_extension("#{path}/#{file}")
|
|
109
|
+
end
|
|
97
110
|
profile["focusmanager.testmode"] = true
|
|
98
111
|
profile
|
|
99
112
|
end
|
data/lib/watirmark/version.rb
CHANGED
|
@@ -151,4 +151,60 @@ describe Watirmark::Actions do
|
|
|
151
151
|
it 'should not throw an exception if populate_data is overridden' do
|
|
152
152
|
lambda { ControllerActionsTest::ActionCreateControllerWithOverride.new.create }.should_not raise_error
|
|
153
153
|
end
|
|
154
|
+
|
|
155
|
+
describe 'Controllers will only populate newly updated values in the model' do
|
|
156
|
+
|
|
157
|
+
before(:all) do
|
|
158
|
+
class TestEditView < Page
|
|
159
|
+
keyword(:edit_test) {}
|
|
160
|
+
keyword(:edit_test_two) {}
|
|
161
|
+
def create(model); end
|
|
162
|
+
def edit(model); end
|
|
163
|
+
end
|
|
164
|
+
class TestEditController < Watirmark::WebPage::Controller
|
|
165
|
+
@view = TestEditView
|
|
166
|
+
def populate_edit_test; end
|
|
167
|
+
def populate_edit_test_two; end
|
|
168
|
+
end
|
|
169
|
+
class TestEditModel < Watirmark::Model::Factory
|
|
170
|
+
keywords :edit_test
|
|
171
|
+
defaults do
|
|
172
|
+
edit_test { true }
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
specify 'populate_data populates keywords that have not been populated before' do
|
|
178
|
+
model = TestEditModel.new
|
|
179
|
+
c = TestEditController.new(model)
|
|
180
|
+
model.update(edit_test: true)
|
|
181
|
+
c.expects(:populate_edit_test).once
|
|
182
|
+
c.run :edit
|
|
183
|
+
c.run :edit
|
|
184
|
+
c.run :edit
|
|
185
|
+
model.update(edit_test_two: true)
|
|
186
|
+
c.expects(:populate_edit_test_two).once
|
|
187
|
+
c.run :edit
|
|
188
|
+
c.run :edit
|
|
189
|
+
c.run :edit
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
specify 'create should populate every time regardless of model updates' do
|
|
193
|
+
model = TestEditModel.new
|
|
194
|
+
c = TestEditController.new(model)
|
|
195
|
+
c.expects(:populate_edit_test).twice
|
|
196
|
+
c.run :create
|
|
197
|
+
c.run :create
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
specify 'create should populate every time even when the model is updated' do
|
|
201
|
+
model = TestEditModel.new
|
|
202
|
+
c = TestEditController.new(model)
|
|
203
|
+
c.expects(:populate_edit_test).twice
|
|
204
|
+
c.run :create
|
|
205
|
+
model.update(edit_test_two: true)
|
|
206
|
+
c.expects(:populate_edit_test_two).once
|
|
207
|
+
c.run :create
|
|
208
|
+
end
|
|
209
|
+
end
|
|
154
210
|
end
|
data/spec/model_factory_spec.rb
CHANGED
|
@@ -99,6 +99,20 @@ describe "#update" do
|
|
|
99
99
|
lambda{keys.update(' '.to_sym=>'') }.should_not raise_error
|
|
100
100
|
end
|
|
101
101
|
|
|
102
|
+
specify "model #updates hash is updated when any keywords in the model is updated" do
|
|
103
|
+
keys = FactoryTest::UpdateModel.new
|
|
104
|
+
keys.update(:username=>'username', :foo=>'foo')
|
|
105
|
+
expect(keys.updates).to include(:username)
|
|
106
|
+
expect(keys.updates).to include(:foo)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
specify "model #updates hash is cleared when #clear_updates is called" do
|
|
110
|
+
keys = FactoryTest::UpdateModel.new
|
|
111
|
+
keys.update(:username=>'username', :foo=>'foo')
|
|
112
|
+
keys.clear_updates
|
|
113
|
+
expect(keys.updates).to be_empty
|
|
114
|
+
end
|
|
115
|
+
|
|
102
116
|
end
|
|
103
117
|
|
|
104
118
|
describe "defaults" do
|
|
@@ -489,7 +503,7 @@ end
|
|
|
489
503
|
describe "keywords" do
|
|
490
504
|
before :all do
|
|
491
505
|
module FactoryTest
|
|
492
|
-
class
|
|
506
|
+
class ElementTest
|
|
493
507
|
attr_accessor :value
|
|
494
508
|
|
|
495
509
|
def initialize(x)
|
|
@@ -498,9 +512,9 @@ describe "keywords" do
|
|
|
498
512
|
end
|
|
499
513
|
|
|
500
514
|
class SomeView < Page
|
|
501
|
-
keyword(:first_name) {
|
|
502
|
-
keyword(:middle_name) {
|
|
503
|
-
keyword(:last_name) {
|
|
515
|
+
keyword(:first_name) { ElementTest.new :a }
|
|
516
|
+
keyword(:middle_name) { ElementTest.new :b }
|
|
517
|
+
keyword(:last_name) { ElementTest.new :c }
|
|
504
518
|
end
|
|
505
519
|
|
|
506
520
|
class SomeModel < Watirmark::Model::Factory
|
metadata
CHANGED
|
@@ -1,125 +1,125 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: watirmark
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.29.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hugh McGowan
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: watir-webdriver
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ~>
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0.8'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ~>
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0.8'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: american_date
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - ~>
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: 1.1.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - ~>
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: 1.1.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: logger
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - ~>
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: 1.2.8
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - ~>
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: 1.2.8
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: uuid
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - ~>
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: 2.3.7
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - ~>
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: 2.3.7
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: nokogiri
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- -
|
|
73
|
+
- - ~>
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: 1.6.0
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- -
|
|
80
|
+
- - ~>
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: 1.6.0
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: thor
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
|
-
- -
|
|
87
|
+
- - ~>
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
89
|
version: 0.19.1
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
|
-
- -
|
|
94
|
+
- - ~>
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: 0.19.1
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: activesupport
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
|
-
- -
|
|
101
|
+
- - ~>
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
103
|
version: '4.0'
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
|
-
- -
|
|
108
|
+
- - ~>
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
110
|
version: '4.0'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: headless
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
|
-
- -
|
|
115
|
+
- - '>='
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
117
|
version: '0'
|
|
118
118
|
type: :runtime
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
|
-
- -
|
|
122
|
+
- - '>='
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
124
|
version: '0'
|
|
125
125
|
description: Watirmark is an MVC test framework for watir-webdriver
|
|
@@ -129,6 +129,7 @@ executables:
|
|
|
129
129
|
extensions: []
|
|
130
130
|
extra_rdoc_files: []
|
|
131
131
|
files:
|
|
132
|
+
- bin/firefox_extensions/firebug/README.md
|
|
132
133
|
- bin/watirmark
|
|
133
134
|
- generators/new_project/generator.rb
|
|
134
135
|
- generators/new_project/templates/config.yml.erb
|
|
@@ -218,32 +219,32 @@ require_paths:
|
|
|
218
219
|
- lib
|
|
219
220
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
220
221
|
requirements:
|
|
221
|
-
- -
|
|
222
|
+
- - '>='
|
|
222
223
|
- !ruby/object:Gem::Version
|
|
223
224
|
version: '0'
|
|
224
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
226
|
requirements:
|
|
226
|
-
- -
|
|
227
|
+
- - '>='
|
|
227
228
|
- !ruby/object:Gem::Version
|
|
228
229
|
version: '0'
|
|
229
230
|
requirements: []
|
|
230
231
|
rubyforge_project:
|
|
231
|
-
rubygems_version: 2.4.
|
|
232
|
+
rubygems_version: 2.4.8
|
|
232
233
|
signing_key:
|
|
233
234
|
specification_version: 4
|
|
234
|
-
summary: watirmark 5.
|
|
235
|
+
summary: watirmark 5.29.0
|
|
235
236
|
test_files:
|
|
237
|
+
- spec/model_traits_spec.rb
|
|
236
238
|
- spec/session_spec.rb
|
|
237
|
-
- spec/
|
|
239
|
+
- spec/controller_spec.rb
|
|
238
240
|
- spec/controllers_and_models_spec.rb
|
|
239
|
-
- spec/process_page_spec.rb
|
|
240
|
-
- spec/page_spec.rb
|
|
241
|
-
- spec/config_spec.rb
|
|
242
241
|
- spec/model_factory_spec.rb
|
|
242
|
+
- spec/helper_methods_spec.rb
|
|
243
243
|
- spec/controller_actions_spec.rb
|
|
244
|
-
- spec/model_traits_spec.rb
|
|
245
244
|
- spec/watir_webdriver_spec.rb
|
|
246
245
|
- spec/spec_helper.rb
|
|
247
|
-
- spec/
|
|
246
|
+
- spec/page_spec.rb
|
|
247
|
+
- spec/process_page_spec.rb
|
|
248
248
|
- spec/assertions_spec.rb
|
|
249
|
+
- spec/config_spec.rb
|
|
249
250
|
has_rdoc:
|