kameleon 0.2.0 → 0.2.1
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/README.md +4 -2
- data/lib/kameleon.rb +2 -0
- data/lib/kameleon/dsl.rb +3 -3
- data/lib/kameleon/dsl/act/form.rb +14 -7
- data/lib/kameleon/dsl/verify/presence.rb +22 -7
- data/lib/kameleon/ext/rspec/dsl.rb +1 -1
- data/lib/kameleon/utils/debug_console.rb +2 -2
- metadata +51 -19
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
[](http://travis-ci.org/cs3b/kameleon)
|
4
4
|
|
5
|
+
[](http://coderwall.com/cs3b)
|
6
|
+
|
5
7
|
Kameleon is a high abstraction dsl for better writing acceptance and integrationtests using Capybara.
|
6
8
|
And "better" means: more easily to mimic how user interact with browser.
|
7
9
|
|
@@ -20,7 +22,7 @@ Optionally is nice to use:
|
|
20
22
|
Gemfile
|
21
23
|
|
22
24
|
``` ruby
|
23
|
-
gem 'kameleon', '>= 0.2.0
|
25
|
+
gem 'kameleon', '>= 0.2.0'
|
24
26
|
```
|
25
27
|
|
26
28
|
Before you start using Kameleon ensure that capybara is properly loaded (in your test helper file)
|
@@ -244,4 +246,4 @@ Kameleon::Session.defined_areas.merge!({ :menu => [:xpath, "//nav/ul"],
|
|
244
246
|
## Credits
|
245
247
|
* [Michał Czyż](http://selleo.com/people/michal-czyz)
|
246
248
|
* [Radosław Jędryszczak](http://selleo.com/people/radoslaw-jedryszczak)
|
247
|
-
* [Szymon Kieloch](http://selleo.com/people)
|
249
|
+
* [Szymon Kieloch](http://selleo.com/people/szymon-kieloch)
|
data/lib/kameleon.rb
CHANGED
data/lib/kameleon/dsl.rb
CHANGED
@@ -98,13 +98,13 @@ module Kameleon
|
|
98
98
|
class ScopeProxy < Struct.new(:world, :scope)
|
99
99
|
|
100
100
|
Kameleon::DSL.instance_methods.each do |method|
|
101
|
-
define_method method do
|
101
|
+
define_method method do |*args|
|
102
102
|
world.within(scope) do
|
103
|
-
world.send(method, args)
|
103
|
+
world.send(method, *args)
|
104
104
|
end
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
108
|
end
|
109
109
|
end
|
110
|
-
end
|
110
|
+
end
|
@@ -23,9 +23,11 @@ module Kameleon
|
|
23
23
|
case identifier
|
24
24
|
when Array
|
25
25
|
identifier.each { |identifier| prepare_actions(value => identifier) }
|
26
|
+
when Symbol
|
27
|
+
prepare_actions(value => identifier.to_s)
|
26
28
|
else
|
27
29
|
case value
|
28
|
-
when Fixnum, String
|
30
|
+
when Fixnum, Float, String
|
29
31
|
actions << Action.new(:fill_in, identifier, :with => value)
|
30
32
|
when :check, :choose, :uncheck
|
31
33
|
actions << Action.new(value, identifier)
|
@@ -53,12 +55,17 @@ module Kameleon
|
|
53
55
|
|
54
56
|
def parse_params(params)
|
55
57
|
params.each_pair do |option, id|
|
56
|
-
|
57
|
-
|
58
|
-
parse_params(
|
59
|
-
|
60
|
-
|
61
|
-
|
58
|
+
case id
|
59
|
+
when Symbol
|
60
|
+
parse_params(option => id.to_s)
|
61
|
+
when String
|
62
|
+
if option.kind_of?(Array)
|
63
|
+
option.each do |o|
|
64
|
+
parse_params(o => id)
|
65
|
+
end
|
66
|
+
else
|
67
|
+
actions << Action.new(action, option.to_s, :from => id)
|
68
|
+
end
|
62
69
|
end
|
63
70
|
end
|
64
71
|
end
|
@@ -20,7 +20,8 @@ module Kameleon
|
|
20
20
|
|
21
21
|
def prepare_conditions(param)
|
22
22
|
case param
|
23
|
-
when String
|
23
|
+
when String, Fixnum
|
24
|
+
param = param.to_s
|
24
25
|
conditions << Condition.new(:have_content, param)
|
25
26
|
when Symbol
|
26
27
|
prepare_conditions(:element => param)
|
@@ -52,13 +53,13 @@ module Kameleon
|
|
52
53
|
when :element
|
53
54
|
conditions.concat Element.new(values).conditions
|
54
55
|
else
|
55
|
-
raise "
|
56
|
+
raise Kameleon::NotImplementedException, "Not implemented #{param}"
|
56
57
|
end
|
57
58
|
end
|
58
59
|
when Array
|
59
|
-
|
60
|
+
param.each { |parameter| prepare_conditions(parameter) }
|
60
61
|
else
|
61
|
-
raise "
|
62
|
+
raise Kameleon::NotImplementedException, "Not implemented #{param}"
|
62
63
|
end
|
63
64
|
end
|
64
65
|
end
|
@@ -205,7 +206,7 @@ module Kameleon
|
|
205
206
|
def condition
|
206
207
|
Condition.new(nil, params, prepare_xpath) do |elements, xpath_query|
|
207
208
|
texts = page.all(:xpath, xpath_query).map(&:text)
|
208
|
-
texts.should == elements
|
209
|
+
texts.uniq.should == elements.uniq
|
209
210
|
end
|
210
211
|
end
|
211
212
|
|
@@ -227,6 +228,8 @@ module Kameleon
|
|
227
228
|
|
228
229
|
def parse_params(params)
|
229
230
|
case params
|
231
|
+
when Symbol
|
232
|
+
parse_params(params.to_s)
|
230
233
|
when String
|
231
234
|
conditions << Condition.new(:have_field, params, :with => value)
|
232
235
|
when Array
|
@@ -250,6 +253,8 @@ module Kameleon
|
|
250
253
|
|
251
254
|
def parse_params(params)
|
252
255
|
case params
|
256
|
+
when Symbol
|
257
|
+
parse_params(params.to_s)
|
253
258
|
when String
|
254
259
|
conditions << condition(params)
|
255
260
|
when Array
|
@@ -323,8 +328,18 @@ module Kameleon
|
|
323
328
|
selected_value.each do |value|
|
324
329
|
parse_params(value => identifier)
|
325
330
|
end
|
331
|
+
when Symbol
|
332
|
+
parse_params(selected_value => identifier.to_s)
|
326
333
|
when String
|
327
|
-
|
334
|
+
value = case selected_value
|
335
|
+
when Symbol, Fixnum
|
336
|
+
selected_value.to_s
|
337
|
+
when String, Array
|
338
|
+
selected_value
|
339
|
+
else
|
340
|
+
raise "not supported"
|
341
|
+
end
|
342
|
+
conditions << Condition.new(matcher_method, identifier, :selected => value)
|
328
343
|
else
|
329
344
|
raise "not supported"
|
330
345
|
end
|
@@ -355,4 +370,4 @@ module Kameleon
|
|
355
370
|
end
|
356
371
|
|
357
372
|
#! see :button, :buttons -> have_button(selector)
|
358
|
-
#! see field that is :disabled, :readonly
|
373
|
+
#! see field that is :disabled, :readonly
|
@@ -9,7 +9,7 @@ RSpec.configure do |config|
|
|
9
9
|
def config.escaped_path(*parts)
|
10
10
|
Regexp.compile(parts.join('[\\\/]'))
|
11
11
|
end
|
12
|
-
escaped_group_file_path = config.escaped_path(%w[spec (requests|integration)])
|
12
|
+
escaped_group_file_path = config.escaped_path(%w[spec .*(requests|integration|acceptance)])
|
13
13
|
|
14
14
|
config.include Capybara::DSL, :type => :request, :example_group => {:file_path => escaped_group_file_path}
|
15
15
|
config.include Kameleon::DSL, :type => :request, :example_group => {:file_path => escaped_group_file_path}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#! TODO
|
2
2
|
# gemfile
|
3
|
-
# gem '
|
3
|
+
# gem 'pry'
|
4
4
|
# gem 'database-cleaner'
|
5
5
|
|
6
6
|
# spec_helper.rb
|
@@ -24,7 +24,7 @@ RSpec.configure do |config|
|
|
24
24
|
config.after(:each) do
|
25
25
|
if exception = example.instance_variable_get(:@exception)
|
26
26
|
save_and_open_page unless Capybara.current_driver == :selenium
|
27
|
-
|
27
|
+
binding.pry
|
28
28
|
end
|
29
29
|
DatabaseCleaner.clean
|
30
30
|
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kameleon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
-
|
9
|
-
-
|
8
|
+
- Michal Czyz [cs3b]
|
9
|
+
- Radoslaw Jedryszczak [socjopata]
|
10
10
|
- Szymon Kieloch [Skieloch]
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-
|
14
|
+
date: 2012-11-12 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|
@@ -61,6 +61,22 @@ dependencies:
|
|
61
61
|
- - ! '>='
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: pry
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
type: :runtime
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
64
80
|
- !ruby/object:Gem::Dependency
|
65
81
|
name: rspec
|
66
82
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,6 +173,22 @@ dependencies:
|
|
157
173
|
- - ! '>='
|
158
174
|
- !ruby/object:Gem::Version
|
159
175
|
version: '0'
|
176
|
+
- !ruby/object:Gem::Dependency
|
177
|
+
name: pry
|
178
|
+
requirement: !ruby/object:Gem::Requirement
|
179
|
+
none: false
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
type: :development
|
185
|
+
prerelease: false
|
186
|
+
version_requirements: !ruby/object:Gem::Requirement
|
187
|
+
none: false
|
188
|
+
requirements:
|
189
|
+
- - ! '>='
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
160
192
|
description: high abstraction dsl for end user perspective tests, kameleon - it's
|
161
193
|
a polish word for chameleon
|
162
194
|
email: michalczyz@gmail.com
|
@@ -164,28 +196,28 @@ executables: []
|
|
164
196
|
extensions: []
|
165
197
|
extra_rdoc_files: []
|
166
198
|
files:
|
167
|
-
- lib/kameleon.rb
|
168
|
-
- lib/kameleon/utils/debug_console.rb
|
169
|
-
- lib/kameleon/utils/configuration.rb
|
170
|
-
- lib/kameleon/session.rb
|
171
|
-
- lib/kameleon/dsl.rb
|
172
|
-
- lib/kameleon/dsl/verify/presence.rb
|
173
|
-
- lib/kameleon/dsl/verify/absence.rb
|
174
|
-
- lib/kameleon/dsl/utils/debug.rb
|
175
199
|
- lib/kameleon/dsl/act/form.rb
|
176
200
|
- lib/kameleon/dsl/act/mouse.rb
|
177
201
|
- lib/kameleon/dsl/context/scope.rb
|
178
|
-
- lib/kameleon/
|
202
|
+
- lib/kameleon/dsl/utils/debug.rb
|
203
|
+
- lib/kameleon/dsl/verify/absence.rb
|
204
|
+
- lib/kameleon/dsl/verify/presence.rb
|
205
|
+
- lib/kameleon/dsl.rb
|
206
|
+
- lib/kameleon/ext/active_record/shared_single_connection.rb
|
179
207
|
- lib/kameleon/ext/capybara/server.rb
|
180
|
-
- lib/kameleon/ext/
|
181
|
-
- lib/kameleon/ext/
|
182
|
-
- lib/kameleon/ext/rspec/garbage_collector.rb
|
208
|
+
- lib/kameleon/ext/capybara/session_pool.rb
|
209
|
+
- lib/kameleon/ext/rspec/all.rb
|
183
210
|
- lib/kameleon/ext/rspec/dsl.rb
|
211
|
+
- lib/kameleon/ext/rspec/garbage_collector.rb
|
212
|
+
- lib/kameleon/ext/rspec/headless.rb
|
184
213
|
- lib/kameleon/ext/rspec/pool.rb
|
185
214
|
- lib/kameleon/ext/rspec/transactional_examples.rb
|
186
|
-
- lib/kameleon/ext/
|
187
|
-
- lib/kameleon/ext/
|
188
|
-
- lib/kameleon/
|
215
|
+
- lib/kameleon/ext/ruby/deferred_garbage_collector.rb
|
216
|
+
- lib/kameleon/ext/session/devise.rb
|
217
|
+
- lib/kameleon/session.rb
|
218
|
+
- lib/kameleon/utils/configuration.rb
|
219
|
+
- lib/kameleon/utils/debug_console.rb
|
220
|
+
- lib/kameleon.rb
|
189
221
|
- LICENCE
|
190
222
|
- README.md
|
191
223
|
homepage: https://github.com/cs3b/kameleon
|