web4cucumber 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/web4cucumber.rb +51 -15
- data/lib/web4cucumber/version.rb +1 -1
- data/pkg/web4cucumber-0.0.1.gem +0 -0
- data/pkg/web4cucumber-0.0.2.gem +0 -0
- data/pkg/web4cucumber-0.0.3.gem +0 -0
- data/pkg/web4cucumber-0.0.4.gem +0 -0
- data/pkg/web4cucumber-0.0.5.gem +0 -0
- data/pkg/web4cucumber-0.0.6.gem +0 -0
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09f2ae8b4f38c4ce225c93a487a25e6c30d2dd6c
|
4
|
+
data.tar.gz: 5099fd51931bc779bd8fac847b47791036b28995
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58b42e5b1452ba7bf297b4f393719529c6231e2da1b3b511c454e8474666ec23e1fb469c763d352ed9bc73f8c7bd86b4333f026a864248c0bdc3c68f3a88515a
|
7
|
+
data.tar.gz: 20f5be395473dc40e1f0b8d26d71772a7fd85a894dea7d58d3695c31fad4bd63bb10118bbfb28c95e6f924ed9c0d2caaed04ae404e2d051e52e7f9fd6196c4d7
|
data/lib/web4cucumber.rb
CHANGED
@@ -118,7 +118,10 @@ class Web4Cucumber
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def run_action(key, options)
|
121
|
-
@result = {:result=>true,
|
121
|
+
@result = {:result=>true,
|
122
|
+
:failed_positive_checkpoints=>[],
|
123
|
+
:failed_negative_checkpoints=>[],
|
124
|
+
:errors => []}
|
122
125
|
@@rules.freeze
|
123
126
|
rules = Marshal.load(Marshal.dump(@@rules))
|
124
127
|
action_rules = rules[key.to_sym]
|
@@ -196,16 +199,17 @@ class Web4Cucumber
|
|
196
199
|
if page_rules.has_key? :expected_fields
|
197
200
|
page_rules[:expected_fields].each_pair { |name, prop|
|
198
201
|
# Beginning of page fields
|
199
|
-
#
|
202
|
+
# You can use anyone of provided options as a part of selector
|
203
|
+
# string. For example
|
200
204
|
# :select_item:
|
201
205
|
# :selector:
|
202
|
-
# :text: 'Some text <
|
203
|
-
#
|
204
|
-
|
205
|
-
if
|
206
|
-
prop[:selector][
|
206
|
+
# :text: 'Some text <passme>'
|
207
|
+
# Do not forget to pass :passme key with value in options hash
|
208
|
+
options.keys.each do |optkey|
|
209
|
+
if prop[:selector].values[0].include? "<#{optkey}>"
|
210
|
+
prop[:selector].values[0].gsub!("<#{optkey}>", options[optkey])
|
207
211
|
end
|
208
|
-
end
|
212
|
+
end
|
209
213
|
possible_elements = {
|
210
214
|
# There could be more than one element with the same
|
211
215
|
# properties and only one would be visible. As an example:
|
@@ -263,7 +267,7 @@ class Web4Cucumber
|
|
263
267
|
end
|
264
268
|
end
|
265
269
|
if not element
|
266
|
-
if not prop[:may_absent]
|
270
|
+
if not prop[:may_absent] and not page_rules.has_key? :may_absent
|
267
271
|
@result[:result] = false
|
268
272
|
@result[:errors] << "Unable to find element #{name.to_s} by the following #{prop[:selector].keys[0].to_s}: #{prop[:selector].values[0]}"
|
269
273
|
end
|
@@ -371,12 +375,22 @@ class Web4Cucumber
|
|
371
375
|
end
|
372
376
|
button.click
|
373
377
|
rescue Exception => e
|
374
|
-
|
375
|
-
|
376
|
-
|
378
|
+
unless page_rules.has_key? :may_absent
|
379
|
+
@result[:result]=false
|
380
|
+
@result[:errors] << e.message
|
381
|
+
screenshot_save
|
382
|
+
end
|
377
383
|
end
|
378
384
|
elsif page_rules[:commit].has_key?(:type) and page_rules[:commit][:type] == 'alert'
|
379
|
-
|
385
|
+
begin
|
386
|
+
@@b.alert.ok
|
387
|
+
rescue Exception => e
|
388
|
+
unless page_rules.has_key? :may_absent
|
389
|
+
@result[:result]=false
|
390
|
+
@result[:errors] << e.message
|
391
|
+
screenshot_save
|
392
|
+
end
|
393
|
+
end
|
380
394
|
else
|
381
395
|
raise "Please provide selector for #{page} page commit"
|
382
396
|
end
|
@@ -418,7 +432,7 @@ class Web4Cucumber
|
|
418
432
|
The initialize method needs to know at least the base_url you want to test against and the :rules_path - path
|
419
433
|
to the folder where you store your yaml files with action descriptions. Other keys are optional"
|
420
434
|
end
|
421
|
-
if options.keys & obligatory_options == obligatory_options
|
435
|
+
if (options.keys & obligatory_options).sort == obligatory_options.sort
|
422
436
|
@@base_url = options[:base_url]
|
423
437
|
@@rules_path = options[:rules_path]
|
424
438
|
@@logger = options[:logger]
|
@@ -453,6 +467,7 @@ class Web4Cucumber
|
|
453
467
|
proxy = ENV["http_proxy"].scan(/[\w\.\d\_\-]+\:\d+/)[0] # to get rid of the heading "http://" that breaks the profile
|
454
468
|
firefox_profile.proxy = chrome_profile.proxy = Selenium::WebDriver::Proxy.new({:http => proxy, :ssl => proxy})
|
455
469
|
firefox_profile['network.proxy.no_proxies_on'] = "localhost, 127.0.0.1"
|
470
|
+
chrome_switches = %w[--proxy-bypass-list=127.0.0.1]
|
456
471
|
ENV['no_proxy'] = '127.0.0.1'
|
457
472
|
end
|
458
473
|
client = Selenium::WebDriver::Remote::Http::Default.new
|
@@ -460,7 +475,7 @@ class Web4Cucumber
|
|
460
475
|
if browser == :firefox
|
461
476
|
@@b = Watir::Browser.new browser, :profile => firefox_profile, :http_client=>client
|
462
477
|
elsif browser == :chrome
|
463
|
-
@@b = Watir::Browser.new browser, desired_capabilities: chrome_profile
|
478
|
+
@@b = Watir::Browser.new browser, desired_capabilities: chrome_profile, switches: chrome_switches
|
464
479
|
else
|
465
480
|
raise "Not implemented yet"
|
466
481
|
end
|
@@ -723,4 +738,25 @@ class Web4Cucumber
|
|
723
738
|
def action_rules(action)
|
724
739
|
return @@rules[action.to_sym]
|
725
740
|
end
|
741
|
+
|
742
|
+
def checkbox_check(element, negate)
|
743
|
+
result = {:result => true,
|
744
|
+
:failed_positive_checkpoints => [],
|
745
|
+
:errors => []
|
746
|
+
}
|
747
|
+
begin
|
748
|
+
if negate
|
749
|
+
@@b.checkbox(element).clear
|
750
|
+
else
|
751
|
+
@@b.checkbox(element).set
|
752
|
+
end
|
753
|
+
rescue => e
|
754
|
+
result[:result] = false
|
755
|
+
result[:failed_positive_checkpoints] << element
|
756
|
+
result[:errors] << e.message
|
757
|
+
end
|
758
|
+
return result
|
759
|
+
end
|
760
|
+
|
726
761
|
end
|
762
|
+
|
data/lib/web4cucumber/version.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web4cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oleg Fayans
|
@@ -102,6 +102,12 @@ files:
|
|
102
102
|
- examples/testproject/lib/web/login.yaml
|
103
103
|
- lib/web4cucumber.rb
|
104
104
|
- lib/web4cucumber/version.rb
|
105
|
+
- pkg/web4cucumber-0.0.1.gem
|
106
|
+
- pkg/web4cucumber-0.0.2.gem
|
107
|
+
- pkg/web4cucumber-0.0.3.gem
|
108
|
+
- pkg/web4cucumber-0.0.4.gem
|
109
|
+
- pkg/web4cucumber-0.0.5.gem
|
110
|
+
- pkg/web4cucumber-0.0.6.gem
|
105
111
|
- web4cucumber.gemspec
|
106
112
|
homepage: https://github.com/ofayans/web4cuke
|
107
113
|
licenses:
|