cuprite 0.8 → 0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dcb46f5716c12a1a33acb66d1e7827897f1331447806f52379571226ac4dfe9c
4
- data.tar.gz: 8ca919e8ebdfef7a4a16613b0c0620084365d3231dbbe5b7d96bc18bf0f1cf9a
3
+ metadata.gz: 979d242c40547bfd784a54a15fa1ba81afc251a805f71880a234b4fd055f3afb
4
+ data.tar.gz: 433ff62183910210a57f5b1022a7807d3e8dc5ac86dbaf62879660b957a67b94
5
5
  SHA512:
6
- metadata.gz: a3451efdac94c66d55d8afb49ee5497a91c48d7b2b9b0e9728b49f9c44ad4fa7c5d780a81ec7a4650f9a35a2370846b7da5782e9c6867cd0774d3204509e085a
7
- data.tar.gz: 6e33306c0157a88640d5b546faddef248576208eca188fe4898ff898023717a2439a138dbdfe98670b6cae4b03a5b81cce2b5eaa93d73c2f266f6761bd72603d
6
+ metadata.gz: 5495435618d770085085f9b992646e03e1b1271b20cefc8c7e0f1d4313abd398a161f3b85038e0583bd6834d55adc8052393d2e5dc61c1d395edbe5e90fb29f5
7
+ data.tar.gz: 64b6b8a516e44642e6dfeb3981081b5e1d7cd0489c4741358f841013f74f8268b6bdaf63017262ed2f70f6d83a8cc4a3c548bf3da33b86409e64695620a8e108
data/README.md CHANGED
@@ -116,17 +116,26 @@ be automatically cleared at the end of the test.
116
116
  * `page.driver.network_traffic` Inspect network traffic (resources have been
117
117
  loaded) on the current page. This returns an array of request objects.
118
118
 
119
-
120
119
  ```ruby
121
120
  page.driver.network_traffic # => [Request, ...]
122
121
  request = page.driver.network_traffic.first
123
122
  request.response
124
123
  ```
125
124
 
125
+ * `page.driver.wait_for_network_idle` Natively waits for network idle and if
126
+ there are no active connections returns or raises `TimeoutError` error. Accepts
127
+ the same options as Ferrum's [`wait_for_idle`](https://github.com/route/ferrum#wait_for_idleoptions)
128
+
129
+ ```ruby
130
+ page.driver.wait_for_network_idle
131
+ page.driver.refresh
132
+ ```
133
+
126
134
  Please note that network traffic is not cleared when you visit new page. You can
127
135
  manually clear the network traffic by calling `page.driver.clear_network_traffic`
128
136
  or `page.driver.reset`
129
137
 
138
+
130
139
  ### Manipulating cookies ###
131
140
 
132
141
  The following methods are used to inspect and manipulate cookies:
@@ -189,7 +198,7 @@ end
189
198
 
190
199
  ## License ##
191
200
 
192
- Copyright 2018-2019 Machinio
201
+ Copyright 2018-2020 Machinio
193
202
 
194
203
  Permission is hereby granted, free of charge, to any person obtaining
195
204
  a copy of this software and associated documentation files (the
@@ -2,18 +2,12 @@
2
2
 
3
3
  require "ferrum"
4
4
  require "capybara"
5
-
6
- module Capybara::Cuprite
7
- end
8
-
9
5
  require "capybara/cuprite/driver"
10
6
  require "capybara/cuprite/browser"
11
7
  require "capybara/cuprite/page"
12
8
  require "capybara/cuprite/node"
13
9
  require "capybara/cuprite/errors"
14
10
 
15
- Ferrum::Page.prepend(Capybara::Cuprite::Page)
16
-
17
11
  Capybara.register_driver(:cuprite) do |app|
18
12
  Capybara::Cuprite::Driver.new(app)
19
13
  end
@@ -23,12 +23,12 @@ module Capybara::Cuprite
23
23
 
24
24
  def page
25
25
  raise Ferrum::NoSuchPageError if @page.nil?
26
- @page ||= default_context.page
26
+ @page ||= attach_page
27
27
  end
28
28
 
29
29
  def reset
30
30
  super
31
- @page = default_context.page
31
+ @page = attach_page
32
32
  end
33
33
 
34
34
  def quit
@@ -81,7 +81,7 @@ module Capybara::Cuprite
81
81
 
82
82
  if Capybara::VERSION.to_f < 3.0
83
83
  target_id = window_handles.find do |target_id|
84
- page = targets[target_id].page
84
+ page = attach_page(target_id)
85
85
  locator == page.frame_name
86
86
  end
87
87
  locator = target_id if target_id
@@ -100,13 +100,13 @@ module Capybara::Cuprite
100
100
  def switch_to_window(target_id)
101
101
  target = targets[target_id]
102
102
  raise Ferrum::NoSuchPageError unless target
103
- @page = target.page
103
+ @page = attach_page(target.id)
104
104
  end
105
105
 
106
106
  def close_window(target_id)
107
107
  target = targets[target_id]
108
108
  raise Ferrum::NoSuchPageError unless target
109
- @page = nil if @page == target.page
109
+ @page = nil if @page.target_id == target.id
110
110
  target.page.close
111
111
  end
112
112
 
@@ -200,5 +200,15 @@ module Capybara::Cuprite
200
200
  end
201
201
  end
202
202
  end
203
+
204
+ def attach_page(target_id = nil)
205
+ target = targets[target_id] if target_id
206
+ target ||= default_context.default_target
207
+ return target.page if target.attached?
208
+
209
+ target.maybe_sleep_if_new_window
210
+ target.page = Page.new(target.id, self)
211
+ target.page
212
+ end
203
213
  end
204
214
  end
@@ -26,6 +26,8 @@ module Capybara::Cuprite
26
26
  @screen_size ||= DEFAULT_MAXIMIZE_SCREEN_SIZE
27
27
 
28
28
  @options[:save_path] = Capybara.save_path.to_s if Capybara.save_path
29
+
30
+ ENV["FERRUM_DEBUG"] = "true" if ENV["CUPRITE_DEBUG"]
29
31
  end
30
32
 
31
33
  def needs_server?
@@ -129,7 +131,10 @@ module Capybara::Cuprite
129
131
  end
130
132
 
131
133
  def open_new_window
132
- browser.create_page
134
+ target = browser.default_context.create_target
135
+ target.maybe_sleep_if_new_window
136
+ target.page = Page.new(target.id, browser)
137
+ target.page
133
138
  end
134
139
 
135
140
  def switch_to_window(handle)
@@ -282,6 +287,10 @@ module Capybara::Cuprite
282
287
  browser.cookies.clear
283
288
  end
284
289
 
290
+ def wait_for_network_idle(**options)
291
+ browser.network.wait_for_idle(**options)
292
+ end
293
+
285
294
  def clear_memory_cache
286
295
  browser.network.clear(:cache)
287
296
  end
@@ -128,7 +128,7 @@ class Cuprite {
128
128
  this.trigger(node, "focus");
129
129
  this.setValue(node, "");
130
130
 
131
- if (node.type == "number" || node.type == "date") {
131
+ if (node.type == "number" || node.type == "date" || node.type == "range") {
132
132
  this.setValue(node, value);
133
133
  this.input(node);
134
134
  } else if (node.type == "time") {
@@ -3,15 +3,14 @@
3
3
  require "forwardable"
4
4
 
5
5
  module Capybara::Cuprite
6
- module Page
6
+ class Page < Ferrum::Page
7
7
  MODAL_WAIT = ENV.fetch("CUPRITE_MODAL_WAIT", 0.05).to_f
8
8
  TRIGGER_CLICK_WAIT = ENV.fetch("CUPRITE_TRIGGER_CLICK_WAIT", 0.1).to_f
9
9
 
10
10
  extend Forwardable
11
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
-
12
+ current_url current_title body execution_id
13
+ evaluate evaluate_on evaluate_async execute] => :active_frame
15
14
 
16
15
  def initialize(*args)
17
16
  @frame_stack = []
@@ -114,6 +113,10 @@ module Capybara::Cuprite
114
113
  end
115
114
  end
116
115
 
116
+ def frame_name
117
+ evaluate("window.name")
118
+ end
119
+
117
120
  def title
118
121
  active_frame.current_title
119
122
  end
@@ -129,15 +132,15 @@ module Capybara::Cuprite
129
132
  on(:request) do |request, index, total|
130
133
  if @browser.url_blacklist && !@browser.url_blacklist.empty?
131
134
  if @browser.url_blacklist.any? { |r| request.match?(r) }
132
- request.abort and return
135
+ request.abort and next
133
136
  else
134
- request.continue and return
137
+ request.continue and next
135
138
  end
136
139
  elsif @browser.url_whitelist && !@browser.url_whitelist.empty?
137
140
  if @browser.url_whitelist.any? { |r| request.match?(r) }
138
- request.continue and return
141
+ request.continue and next
139
142
  else
140
- request.abort and return
143
+ request.abort and next
141
144
  end
142
145
  elsif index + 1 < total
143
146
  # There are other callbacks that may handle this request
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Capybara
4
4
  module Cuprite
5
- VERSION = "0.8"
5
+ VERSION = "0.9"
6
6
  end
7
7
  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.8'
4
+ version: '0.9'
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-10-29 00:00:00.000000000 Z
11
+ date: 2020-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.6.0
39
+ version: 0.7.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.6.0
46
+ version: 0.7.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: image_size
49
49
  requirement: !ruby/object:Gem::Requirement