cuprite 0.7.1 → 0.8
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/LICENSE +1 -1
- data/lib/capybara/cuprite/browser.rb +48 -3
- data/lib/capybara/cuprite/driver.rb +4 -4
- data/lib/capybara/cuprite/page.rb +30 -4
- data/lib/capybara/cuprite/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcb46f5716c12a1a33acb66d1e7827897f1331447806f52379571226ac4dfe9c
|
4
|
+
data.tar.gz: 8ca919e8ebdfef7a4a16613b0c0620084365d3231dbbe5b7d96bc18bf0f1cf9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3451efdac94c66d55d8afb49ee5497a91c48d7b2b9b0e9728b49f9c44ad4fa7c5d780a81ec7a4650f9a35a2370846b7da5782e9c6867cd0774d3204509e085a
|
7
|
+
data.tar.gz: 6e33306c0157a88640d5b546faddef248576208eca188fe4898ff898023717a2439a138dbdfe98670b6cae4b03a5b81cce2b5eaa93d73c2f266f6761bd72603d
|
data/LICENSE
CHANGED
@@ -6,7 +6,6 @@ module Capybara::Cuprite
|
|
6
6
|
class Browser < Ferrum::Browser
|
7
7
|
extend Forwardable
|
8
8
|
|
9
|
-
delegate %i[find_or_create_page] => :targets
|
10
9
|
delegate %i[send_keys select set hover trigger before_click switch_to_frame
|
11
10
|
find_modal accept_confirm dismiss_confirm accept_prompt
|
12
11
|
dismiss_prompt reset_modals] => :page
|
@@ -19,6 +18,22 @@ module Capybara::Cuprite
|
|
19
18
|
self.url_whitelist = options[:url_whitelist]
|
20
19
|
|
21
20
|
super
|
21
|
+
@page = false
|
22
|
+
end
|
23
|
+
|
24
|
+
def page
|
25
|
+
raise Ferrum::NoSuchPageError if @page.nil?
|
26
|
+
@page ||= default_context.page
|
27
|
+
end
|
28
|
+
|
29
|
+
def reset
|
30
|
+
super
|
31
|
+
@page = default_context.page
|
32
|
+
end
|
33
|
+
|
34
|
+
def quit
|
35
|
+
super
|
36
|
+
@page = false
|
22
37
|
end
|
23
38
|
|
24
39
|
def url_whitelist=(patterns)
|
@@ -53,16 +68,46 @@ module Capybara::Cuprite
|
|
53
68
|
find_all(method, selector, { "objectId" => object_id })
|
54
69
|
end
|
55
70
|
|
71
|
+
def window_handle
|
72
|
+
page.target_id
|
73
|
+
end
|
74
|
+
|
75
|
+
def window_handles
|
76
|
+
targets.keys
|
77
|
+
end
|
78
|
+
|
56
79
|
def within_window(locator = nil, &block)
|
80
|
+
original = window_handle
|
81
|
+
|
57
82
|
if Capybara::VERSION.to_f < 3.0
|
58
83
|
target_id = window_handles.find do |target_id|
|
59
|
-
page =
|
84
|
+
page = targets[target_id].page
|
60
85
|
locator == page.frame_name
|
61
86
|
end
|
62
87
|
locator = target_id if target_id
|
63
88
|
end
|
64
89
|
|
65
|
-
|
90
|
+
if window_handles.include?(locator)
|
91
|
+
switch_to_window(locator)
|
92
|
+
yield
|
93
|
+
else
|
94
|
+
raise Ferrum::NoSuchPageError
|
95
|
+
end
|
96
|
+
ensure
|
97
|
+
switch_to_window(original)
|
98
|
+
end
|
99
|
+
|
100
|
+
def switch_to_window(target_id)
|
101
|
+
target = targets[target_id]
|
102
|
+
raise Ferrum::NoSuchPageError unless target
|
103
|
+
@page = target.page
|
104
|
+
end
|
105
|
+
|
106
|
+
def close_window(target_id)
|
107
|
+
target = targets[target_id]
|
108
|
+
raise Ferrum::NoSuchPageError unless target
|
109
|
+
@page = nil if @page == target.page
|
110
|
+
target.page.close
|
66
111
|
end
|
67
112
|
|
68
113
|
def browser_error
|
@@ -50,7 +50,7 @@ module Capybara::Cuprite
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def frame_url
|
53
|
-
|
53
|
+
evaluate_script("window.location.href")
|
54
54
|
end
|
55
55
|
|
56
56
|
def html
|
@@ -71,7 +71,7 @@ module Capybara::Cuprite
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def frame_title
|
74
|
-
|
74
|
+
evaluate_script("document.title")
|
75
75
|
end
|
76
76
|
|
77
77
|
def find_xpath(selector)
|
@@ -129,7 +129,7 @@ module Capybara::Cuprite
|
|
129
129
|
end
|
130
130
|
|
131
131
|
def open_new_window
|
132
|
-
browser.
|
132
|
+
browser.create_page
|
133
133
|
end
|
134
134
|
|
135
135
|
def switch_to_window(handle)
|
@@ -141,7 +141,7 @@ module Capybara::Cuprite
|
|
141
141
|
end
|
142
142
|
|
143
143
|
def no_such_window_error
|
144
|
-
Ferrum::
|
144
|
+
Ferrum::NoSuchPageError
|
145
145
|
end
|
146
146
|
|
147
147
|
def reset!
|
@@ -1,13 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "forwardable"
|
4
|
+
|
3
5
|
module Capybara::Cuprite
|
4
6
|
module Page
|
5
7
|
MODAL_WAIT = ENV.fetch("CUPRITE_MODAL_WAIT", 0.05).to_f
|
8
|
+
TRIGGER_CLICK_WAIT = ENV.fetch("CUPRITE_TRIGGER_CLICK_WAIT", 0.1).to_f
|
9
|
+
|
10
|
+
extend Forwardable
|
11
|
+
delegate %i[at_css at_xpath css xpath
|
12
|
+
current_url current_title body
|
13
|
+
execution_id evaluate evaluate_on evaluate_async execute] => :active_frame
|
14
|
+
|
6
15
|
|
7
16
|
def initialize(*args)
|
8
|
-
|
17
|
+
@frame_stack = []
|
9
18
|
@accept_modal = []
|
10
19
|
@modal_messages = []
|
20
|
+
super
|
11
21
|
end
|
12
22
|
|
13
23
|
def set(node, value)
|
@@ -21,7 +31,7 @@ module Capybara::Cuprite
|
|
21
31
|
|
22
32
|
def trigger(node, event)
|
23
33
|
options = {}
|
24
|
-
options.merge!(wait:
|
34
|
+
options.merge!(wait: TRIGGER_CLICK_WAIT) if event.to_s == "click" && TRIGGER_CLICK_WAIT > 0
|
25
35
|
evaluate_on(node: node, expression: %(_cuprite.trigger(this, "#{event}")), **options)
|
26
36
|
end
|
27
37
|
|
@@ -59,7 +69,7 @@ module Capybara::Cuprite
|
|
59
69
|
|
60
70
|
def find_modal(options)
|
61
71
|
start = Ferrum.monotonic_time
|
62
|
-
timeout = options.fetch(:wait)
|
72
|
+
timeout = options.fetch(:wait, browser.timeout)
|
63
73
|
expect_text = options[:text]
|
64
74
|
expect_regexp = expect_text.is_a?(Regexp) ? expect_text : Regexp.escape(expect_text.to_s)
|
65
75
|
not_found_msg = "Unable to find modal dialog"
|
@@ -104,6 +114,10 @@ module Capybara::Cuprite
|
|
104
114
|
end
|
105
115
|
end
|
106
116
|
|
117
|
+
def title
|
118
|
+
active_frame.current_title
|
119
|
+
end
|
120
|
+
|
107
121
|
private
|
108
122
|
|
109
123
|
def prepare_page
|
@@ -144,7 +158,11 @@ module Capybara::Cuprite
|
|
144
158
|
options.merge!(promptText: response) if response
|
145
159
|
command("Page.handleJavaScriptDialog", **options)
|
146
160
|
else
|
147
|
-
|
161
|
+
with_text = params["message"] ? "with text `#{params["message"]}` " : ""
|
162
|
+
warn "Modal window #{with_text}has been opened, but you didn't wrap "\
|
163
|
+
"your code into (`accept_prompt` | `dismiss_prompt` | "\
|
164
|
+
"`accept_confirm` | `dismiss_confirm` | `accept_alert`), "\
|
165
|
+
"accepting by default"
|
148
166
|
options = { accept: true }
|
149
167
|
response = params["defaultPrompt"]
|
150
168
|
options.merge!(promptText: response) if response
|
@@ -162,5 +180,13 @@ module Capybara::Cuprite
|
|
162
180
|
raise
|
163
181
|
end
|
164
182
|
end
|
183
|
+
|
184
|
+
def active_frame
|
185
|
+
if @frame_stack.empty?
|
186
|
+
main_frame
|
187
|
+
else
|
188
|
+
@frames[@frame_stack.last]
|
189
|
+
end
|
190
|
+
end
|
165
191
|
end
|
166
192
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuprite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.8'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Vorotilin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -34,16 +34,16 @@ dependencies:
|
|
34
34
|
name: ferrum
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0.
|
39
|
+
version: 0.6.0
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.
|
46
|
+
version: 0.6.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: image_size
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|