watir-dom-wait 0.3.3 → 0.4.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 +5 -5
- data/lib/watir/dom/elements/element.rb +3 -4
- data/lib/watir/dom/extensions/js/waitForDom.js +1 -1
- data/lib/watir-dom-wait.rb +14 -0
- data/spec/spec_helper.rb +5 -1
- data/spec/watir-dom-wait/element_spec.rb +26 -21
- data/watir-dom-wait.gemspec +2 -3
- metadata +8 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0b066817603bde9fef59bcc7274963517dc2291e06fdae4d5543c333a6588e24
|
4
|
+
data.tar.gz: 98adfb587832f044bf09b83d0910699ae15c7601242f5984af0faa3f4191bade
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac4f364fa642af309078537e8ad370733668b03f34dbdb98d996d9e8314c5a58407aa75abce0e5bb24abf4ed90292e8f57f472290af52ca0796cdf865e95a3b2
|
7
|
+
data.tar.gz: 882b8fff9e41ad4bc147a52f589935801f914ab3d02d217df9fb7c5b1cf9235e5efa4c1c56779fd5dd06b01d79f8924db3ff109c7e9474d4a469334697d43e23
|
@@ -19,7 +19,8 @@ module Watir
|
|
19
19
|
def dom_changed?(delay: 1.1)
|
20
20
|
element_call do
|
21
21
|
begin
|
22
|
-
driver.manage.timeouts.script_timeout
|
22
|
+
script_timeout = driver.manage.timeouts.script_timeout
|
23
|
+
driver.manage.timeouts.script_timeout = delay + Watir::DOM::Wait.minimum_script_timeout
|
23
24
|
driver.execute_async_script(DOM_WAIT_JS, wd, delay)
|
24
25
|
rescue Selenium::WebDriver::Error::JavascriptError => error
|
25
26
|
# sometimes we start script execution before new page is loaded and
|
@@ -27,9 +28,7 @@ module Watir
|
|
27
28
|
retry if error.message.include?('document unloaded while waiting for result')
|
28
29
|
raise
|
29
30
|
ensure
|
30
|
-
|
31
|
-
# blocked by https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/6608
|
32
|
-
driver.manage.timeouts.script_timeout = 1
|
31
|
+
driver.manage.timeouts.script_timeout = script_timeout
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
data/lib/watir-dom-wait.rb
CHANGED
@@ -1,2 +1,16 @@
|
|
1
1
|
require 'watir'
|
2
2
|
require 'watir/dom/elements/element'
|
3
|
+
|
4
|
+
module Watir
|
5
|
+
module DOM
|
6
|
+
module Wait
|
7
|
+
class << self
|
8
|
+
attr_writer :minimum_script_timeout
|
9
|
+
|
10
|
+
def minimum_script_timeout
|
11
|
+
@minimum_script_timeout ||= 2
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -4,7 +4,11 @@ RSpec.configure do |spec|
|
|
4
4
|
spec.filter_run_excluding bug: /\d+/
|
5
5
|
|
6
6
|
spec.before(:all) do
|
7
|
-
|
7
|
+
opts = {}
|
8
|
+
if ENV['TRAVIS']
|
9
|
+
Selenium::WebDriver::Chrome.path = "#{File.dirname(__FILE__)}/../bin/google-chrome"
|
10
|
+
opts[:args] = ['no-sandbox']
|
11
|
+
end
|
8
12
|
@browser = Watir::Browser.new(:chrome, opts)
|
9
13
|
@browser.goto "data:text/html,#{File.read('spec/support/html/wait_for_dom.html')}"
|
10
14
|
end
|
@@ -1,31 +1,36 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Watir::Element do
|
4
|
-
describe "#
|
4
|
+
describe "#dom_changed?" do
|
5
5
|
context "when DOM is changed" do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
6
|
+
it "waits using mutation observer" do
|
7
|
+
@browser.button(id: "quick").click
|
8
|
+
expect(@browser.div.wait_until(&:dom_changed?).spans.count).to eq(20)
|
9
|
+
end
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
it "waits using custom interval" do
|
12
|
+
@browser.button(id: "long").click
|
13
|
+
expect(@browser.div.wait_until(&:dom_changed?).spans.count).to eq(5)
|
14
|
+
end
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
it "raises timeout error" do
|
17
|
+
@browser.button(id: "quick").click
|
18
|
+
expect { @browser.div.wait_until(timeout: 1, &:dom_changed?) }.to raise_error(Watir::Wait::TimeoutError)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "resets script_timeout" do
|
22
|
+
@browser.driver.manage.timeouts.script_timeout = 7
|
23
|
+
@browser.button(id: "quick").click
|
24
|
+
@browser.div.wait_until(&:dom_changed?)
|
25
|
+
expect(@browser.driver.manage.timeouts.script_timeout).to eq(7)
|
26
|
+
end
|
21
27
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
28
|
+
context "when run more than one time" do
|
29
|
+
it "waits for DOM consecutively" do
|
30
|
+
3.times do |i|
|
31
|
+
sleep 1
|
32
|
+
@browser.button(id: "quick").click
|
33
|
+
expect(@browser.div.wait_until(&:dom_changed?).spans.count).to eq(20 * (i + 1))
|
29
34
|
end
|
30
35
|
end
|
31
36
|
end
|
data/watir-dom-wait.gemspec
CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = "watir-dom-wait"
|
6
|
-
spec.version = "0.
|
6
|
+
spec.version = "0.4.0"
|
7
7
|
spec.authors = ["Alex Rodionov"]
|
8
8
|
spec.email = %w(p0deje@gmail.com)
|
9
9
|
spec.description = "Watir extension which provides with method to check for DOM changes."
|
@@ -16,9 +16,8 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
|
-
spec.add_dependency "watir", ">=
|
19
|
+
spec.add_dependency "watir", ">= 7.0"
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.3"
|
22
21
|
spec.add_development_dependency "rake"
|
23
22
|
spec.add_development_dependency "rspec"
|
24
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watir-dom-wait
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Rodionov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: watir
|
@@ -16,28 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '7.0'
|
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
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.3'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.3'
|
26
|
+
version: '7.0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,7 +77,7 @@ homepage: https://github.com/p0deje/watir-dom-wait
|
|
91
77
|
licenses:
|
92
78
|
- MIT
|
93
79
|
metadata: {}
|
94
|
-
post_install_message:
|
80
|
+
post_install_message:
|
95
81
|
rdoc_options: []
|
96
82
|
require_paths:
|
97
83
|
- lib
|
@@ -106,9 +92,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
92
|
- !ruby/object:Gem::Version
|
107
93
|
version: '0'
|
108
94
|
requirements: []
|
109
|
-
|
110
|
-
|
111
|
-
signing_key:
|
95
|
+
rubygems_version: 3.3.3
|
96
|
+
signing_key:
|
112
97
|
specification_version: 4
|
113
98
|
summary: Watir extension which provides with method to check for DOM changes.
|
114
99
|
test_files:
|