web4cucumber 0.0.6 → 0.0.7
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/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:
|