watchdoge 0.1.24 → 0.1.28

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a16fc3b9ab93bf0330328330314535ad9a74bc18caec50daf8327872564d4db
4
- data.tar.gz: 28fa4084a510d0413af4d1d579e3ece2bcc480c7ca68c783a380587ac1d3f991
3
+ metadata.gz: 7ae7ad3051ac5d1eb15cb6008096e707772f61b9ad52ccf34340b7df8d2ff425
4
+ data.tar.gz: 68600410dde3c1f93372a35a6e9ddb1d7f77ef2335c91ebac512f2c2e6c9ad7d
5
5
  SHA512:
6
- metadata.gz: '0999541a4012b25df6c64531f510279cf9509ccfccbdb98457b146a05eb51f3d4f1bacc96f96bcf659563010d558b64285229a9740fa100bc3763cf7bfaf1df6'
7
- data.tar.gz: 1a7dc9b351fac103e1ee413bad479b3a805738f27818bdb505b4779063c74be55db38aff88fdb3d8325904fc0ee3d8265054ba8108dee3d5dc814cbdf36b25aa
6
+ metadata.gz: 326f1e9de08b859327fabb5b18b77a54d96c5313fe02d5306459c1803cde84e414564a30f126748c1eb889c5107c8f542ed3ea27ae55be66c25b1f737011003e
7
+ data.tar.gz: 10eb20ed919a1c6aec404951f3c4ad815d93a43f1aecdd81423d852e33c4cd137d9d53500fa01c01ade62eb3660e37540d045ae971605deff49da4aebf87f44d
@@ -33,9 +33,10 @@ module WatchDoge
33
33
  attr_accessor :web_drivers_dir
34
34
 
35
35
  attr_accessor :engine
36
- attr_accessor :browser
37
36
  attr_accessor :cookie_pool
38
- attr_accessor :http_timeout
37
+
38
+ attr_reader :default_worker_options
39
+ attr_accessor :worker_options
39
40
 
40
41
  attr_accessor :notifications
41
42
 
@@ -65,15 +66,27 @@ module WatchDoge
65
66
  # framwork that Worker used, default to selenium
66
67
  @engine = Watir::Browser
67
68
 
68
- # default browser used by engine
69
- @browser = :firefox
69
+ # options for worker
70
+ @default_worker_options = {
71
+ # default window-size of worker
72
+ width: 1280,
73
+ height: 768,
74
+
75
+ # using Firfox as default browser
76
+ browser: :firefox,
77
+
78
+ # default to headless
79
+ headless: true,
80
+
81
+ # connection timeout threshold(seconds)
82
+ timeout: 120
83
+ }
84
+
85
+ @worker_options = {}
70
86
 
71
87
  # where all cookie saved (as yaml)
72
88
  @cookie_pool = @base_dir + '/.doge_cookie'
73
89
 
74
- # connection timeout threshold(seconds)
75
- @http_timeout = 120
76
-
77
90
  # map of notification sources
78
91
  # key: must be stringify of its class name
79
92
  # value: hash struct, will passed to constructor while push message
@@ -6,7 +6,7 @@ require 'uri'
6
6
 
7
7
  module WatchDoge
8
8
  module Notification
9
- class Mattermost
9
+ class Mattermost < WatchDoge::Notification::Base
10
10
  def initialize args
11
11
  super
12
12
 
@@ -1,6 +1,6 @@
1
1
  module WatchDoge
2
2
  module Notification
3
- class SlackWebhook
3
+ class SlackWebhook < WatchDoge::Notification::Base
4
4
  def initialize opt
5
5
  super
6
6
 
@@ -6,17 +6,15 @@ module WatchDoge
6
6
  namespace :watchdoge do
7
7
  desc "generating reference images"
8
8
  task :capture => :environment do
9
+ WatchDoge.initialize!
9
10
  WatchDoge::Regression::Manager.run_all_scenarios :capture
10
11
  end
11
12
  desc "scrap screenshots and compare with reference images"
12
13
  task :test => :environment do
14
+ WatchDoge.initialize!
13
15
  WatchDoge::Regression::Manager.run_all_scenarios :test
14
16
  end
15
17
  end
16
18
  end
17
-
18
- initializer "watchdoge.initialize" do |app|
19
- WatchDoge.initialize!
20
- end
21
19
  end
22
20
  end
@@ -13,7 +13,14 @@ module WatchDoge
13
13
  def use browser
14
14
  puts "[use] browser #{browser}"
15
15
  @worker.close
16
- @worker = WatchDoge::Worker.new @scenario_name, browser: browser
16
+
17
+ worker_options =
18
+ WatchDoge.configuration.default_worker_options.merge WatchDoge.configuration.worker_options
19
+
20
+ worker_options = worker_options.dup
21
+ worker_options[:browser] = browser
22
+
23
+ @worker = WatchDoge::Worker.new @scenario_name, worker_options
17
24
  end
18
25
 
19
26
  def sign_in_as resoruce
@@ -42,20 +49,20 @@ module WatchDoge
42
49
  @setup_proc.call if @setup_proc
43
50
 
44
51
  args = {
45
- before: nil
52
+ wait: nil
46
53
  }.merge(kwargs)
47
54
 
48
- args[:before].call if args[:before]
49
-
50
55
  @worker.goto path
51
56
 
52
- if kwargs[:wait]
57
+ if args[:wait]
53
58
  @view_port.merge!({
54
- wait: kwargs[:wait]
59
+ wait: args[:wait]
55
60
  })
56
61
  end
57
62
 
58
63
  @worker.resize_by_viewport(@view_port) do
64
+ yield(@worker) if block_given?
65
+
59
66
  case @regression_flag
60
67
  when :capture
61
68
  puts " -> make reference images on worker #{@worker}"
@@ -23,17 +23,17 @@ module WatchDoge
23
23
  WatchDoge.hooks.before_regression.each { |t| instance_exec &t }
24
24
 
25
25
  Dir["#{WatchDoge::Regression::Utils.scenarios_dir}/*"].each do |scenario_path|
26
- WatchDoge.hooks.before_scenario.each { |t| instance_exec &t }
27
-
28
26
  mgr = self.new scenario_path, regression_flag: regression_flag
29
27
 
28
+ WatchDoge.hooks.before_scenario.each { |t| mgr.instance_exec &t }
29
+
30
30
  if WatchDoge.hooks.around_scenario
31
31
  WatchDoge.hooks.around_scenario.call(Proc.new { mgr.eval_scenario })
32
32
  else
33
33
  mgr.eval_scenario
34
34
  end
35
35
 
36
- WatchDoge.hooks.after_scenario.each { |t| instance_exec &t }
36
+ WatchDoge.hooks.after_scenario.each { |t| mgr.instance_exec &t }
37
37
  end
38
38
 
39
39
  WatchDoge.hooks.after_regression.each { |t| instance_exec &t }
@@ -49,14 +49,17 @@ module WatchDoge
49
49
  @setup_proc = nil
50
50
  @teardown_proc = nil
51
51
 
52
- @worker = WatchDoge::Worker.new @scenario_name
52
+ worker_options =
53
+ WatchDoge.configuration.default_worker_options.merge WatchDoge.configuration.worker_options
54
+
55
+ @worker = WatchDoge::Worker.new @scenario_name, worker_options.dup
53
56
 
54
57
  @view_port = {}
55
58
  end
56
59
 
57
60
  def eval_scenario
58
61
  puts "scenario: #{@scenario_name} begin"
59
- eval File.read(@scenario_path)
62
+ instance_eval File.read(@scenario_path), @scenario_path
60
63
  @worker.close
61
64
  puts "scenario: #{@scenario_name} end\n"
62
65
  puts ""
@@ -1,4 +1,4 @@
1
1
  # Version of WatchDoge
2
2
  module WatchDoge
3
- VERSION = '0.1.22'
3
+ VERSION = '0.1.27'
4
4
  end
@@ -20,27 +20,24 @@ module WatchDoge
20
20
  # 2. height: browser's height, default to 768
21
21
  # 3. http_client: instance of Selenium::WebDriver::Remote::Http
22
22
  # 4. all acceptable arguments of Watir::Browser class
23
- def initialize uid, options={}
23
+ def initialize uid, options
24
24
  @http = Selenium::WebDriver::Remote::Http::Default.new
25
- @browser = WatchDoge.configuration.browser
26
25
 
27
26
  # HTTP timeout default to 120 sec
28
- @http.read_timeout = options.delete(:timeout) || WatchDoge.configuration.http_timeout
27
+ @http.read_timeout = options.delete(:timeout)
29
28
 
30
- @uid = uid
29
+ @browser = options[:browser]
31
30
 
32
- default_options = {
33
- width: 1280,
34
- height: 768,
35
- headless: true,
31
+ @uid = uid
36
32
 
33
+ options = {
37
34
  # Selenium HTTP configuration
38
35
  http_client: @http
39
- }.merge(options).merge(browser_profile)
36
+ }.merge(options).merge(default_browser_profile)
40
37
 
41
38
  # intall required version driver
42
39
  WatchDoge::WebdriverManager.new @browser
43
- @core = WatchDoge.configuration.engine.new @browser, default_options
40
+ @core = WatchDoge.configuration.engine.new @browser, options
44
41
 
45
42
  # for generate uri hash
46
43
  @landed_page = nil
@@ -52,8 +49,8 @@ module WatchDoge
52
49
  @cookie_loaded = false
53
50
 
54
51
  # width/height
55
- @width = default_options[:width]
56
- @height = default_options[:height]
52
+ @width = options[:width]
53
+ @height = options[:height]
57
54
  @core.window.resize_to @width, @height
58
55
  end
59
56
 
@@ -105,7 +102,7 @@ module WatchDoge
105
102
 
106
103
  private
107
104
 
108
- def browser_profile
105
+ def default_browser_profile
109
106
  case @browser
110
107
  when :chrome
111
108
  prefs = {}
data/watchdoge.gemspec CHANGED
@@ -1,9 +1,9 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'watchdoge'
3
- s.version = '0.1.24'
3
+ s.version = '0.1.28'
4
4
  s.date = '2019-07-22'
5
5
  s.summary = "dogi"
6
- s.description = "WatchDoge is Ruby on Rails friendly frontend regression test tool"
6
+ s.description = "WatchDoge is RubyOnRails-friendly web frontend regression test tool"
7
7
  s.authors = ["Shen Lee"]
8
8
  s.email = 'no-reply@gmail.com'
9
9
  s.files = ["lib/watchdoge.rb"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watchdoge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.24
4
+ version: 0.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shen Lee
@@ -48,63 +48,63 @@ dependencies:
48
48
  name: webdrivers
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">"
52
- - !ruby/object:Gem::Version
53
- version: 4.0.0
54
51
  - - "~>"
55
52
  - !ruby/object:Gem::Version
56
53
  version: '4'
54
+ - - ">"
55
+ - !ruby/object:Gem::Version
56
+ version: 4.0.0
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ">"
62
- - !ruby/object:Gem::Version
63
- version: 4.0.0
64
61
  - - "~>"
65
62
  - !ruby/object:Gem::Version
66
63
  version: '4'
64
+ - - ">"
65
+ - !ruby/object:Gem::Version
66
+ version: 4.0.0
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: watir
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - ">"
72
- - !ruby/object:Gem::Version
73
- version: 6.16.0
74
71
  - - "~>"
75
72
  - !ruby/object:Gem::Version
76
73
  version: '6.16'
74
+ - - ">"
75
+ - !ruby/object:Gem::Version
76
+ version: 6.16.0
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">"
82
- - !ruby/object:Gem::Version
83
- version: 6.16.0
84
81
  - - "~>"
85
82
  - !ruby/object:Gem::Version
86
83
  version: '6.16'
84
+ - - ">"
85
+ - !ruby/object:Gem::Version
86
+ version: 6.16.0
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: multipart-post
89
89
  requirement: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - ">"
92
- - !ruby/object:Gem::Version
93
- version: 2.1.0
94
91
  - - "~>"
95
92
  - !ruby/object:Gem::Version
96
93
  version: '2.1'
94
+ - - ">"
95
+ - !ruby/object:Gem::Version
96
+ version: 2.1.0
97
97
  type: :runtime
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">"
102
- - !ruby/object:Gem::Version
103
- version: 2.1.0
104
101
  - - "~>"
105
102
  - !ruby/object:Gem::Version
106
103
  version: '2.1'
107
- description: WatchDoge is Ruby on Rails friendly frontend regression test tool
104
+ - - ">"
105
+ - !ruby/object:Gem::Version
106
+ version: 2.1.0
107
+ description: WatchDoge is RubyOnRails-friendly web frontend regression test tool
108
108
  email: no-reply@gmail.com
109
109
  executables: []
110
110
  extensions: []
@@ -148,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  - !ruby/object:Gem::Version
149
149
  version: '0'
150
150
  requirements: []
151
- rubygems_version: 3.0.3
151
+ rubygems_version: 3.1.4
152
152
  signing_key:
153
153
  specification_version: 4
154
154
  summary: dogi