capybara-puppeteer-driver 0.1.1 → 0.1.2
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c963d7aef431f126d37c528a69f7778c4f0bdf94e8ee4e221c37925a5eb1406
|
4
|
+
data.tar.gz: 248c36c1347e9449ef667f1b04380f9b6ecad3a2dbeb712b88eebda917ecbfb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc64fe2cc0bc49b3cf5440983a1041a9a324e8aa047f7566fca1159280ccea3b9e0c0e44fb6d4c17e467d7e5aa1e37c793c81916074c3dbbc03fdd7e7743b78f
|
7
|
+
data.tar.gz: 135be36c6b2b66b9bbc4b2c74ec05b4435082837345b06d4031982fc0057ab594023b967dd9da064da0e48e9b2876376cf5f2009134d878e8cf6f790d66627d6
|
data/.github/workflows/rspec.yml
CHANGED
@@ -6,13 +6,12 @@ jobs:
|
|
6
6
|
check:
|
7
7
|
name: RSpec
|
8
8
|
runs-on: ubuntu-latest
|
9
|
-
container: circleci/ruby:2.7.3-buster-node-browsers
|
10
9
|
steps:
|
11
|
-
# @see https://docs.github.com/actions/reference/virtual-environments-for-github-hosted-runners#docker-container-filesystem
|
12
|
-
- name: Setup file system permissions
|
13
|
-
run: sudo chmod -R 777 $GITHUB_WORKSPACE /github /__w/_temp
|
14
10
|
- uses: actions/checkout@v2
|
15
|
-
-
|
16
|
-
|
17
|
-
|
11
|
+
- uses: ruby/setup-ruby@v1
|
12
|
+
with:
|
13
|
+
ruby-version: 3.0.2
|
14
|
+
bundler-cache: true
|
15
|
+
- uses: browser-actions/setup-chrome@latest
|
16
|
+
- run: CHROME_EXECUTABLE_PATH=$(which chrome) bundle exec rspec --format documentation
|
18
17
|
timeout-minutes: 45
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.require_paths = ['lib']
|
25
25
|
|
26
26
|
spec.add_dependency 'capybara'
|
27
|
-
spec.add_dependency 'puppeteer-ruby', '>= 0.
|
27
|
+
spec.add_dependency 'puppeteer-ruby', '>= 0.36.0'
|
28
28
|
spec.add_development_dependency 'bundler', '~> 2.2.3'
|
29
29
|
spec.add_development_dependency 'launchy', '>= 2.0.4'
|
30
30
|
spec.add_development_dependency 'pry-byebug'
|
@@ -138,6 +138,17 @@ module Capybara
|
|
138
138
|
end
|
139
139
|
::Puppeteer::ElementHandle.prepend(ElementHandlePatch)
|
140
140
|
|
141
|
+
module MousePatch
|
142
|
+
def capybara_async_wait_for_drag_intercepted(&block)
|
143
|
+
Concurrent::Promises.resolvable_future.tap do |f|
|
144
|
+
@client.once('Input.dragIntercepted') do |event|
|
145
|
+
f.fulfill(event['data'])
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
::Puppeteer::Mouse.prepend(MousePatch)
|
151
|
+
|
141
152
|
# ref:
|
142
153
|
# selenium: https://github.com/teamcapybara/capybara/blob/master/lib/capybara/selenium/node.rb
|
143
154
|
# apparition: https://github.com/twalpole/apparition/blob/master/lib/capybara/apparition/node.rb
|
@@ -758,29 +769,33 @@ module Capybara
|
|
758
769
|
@source.scroll_into_view_if_needed
|
759
770
|
|
760
771
|
# down
|
761
|
-
position_from =
|
762
|
-
@page.mouse.
|
772
|
+
position_from = @source.clickable_point
|
773
|
+
drag_intercepted_promise = @page.mouse.capybara_async_wait_for_drag_intercepted
|
774
|
+
@page.mouse.move(position_from.x, position_from.y)
|
763
775
|
@page.mouse.down
|
764
776
|
|
765
777
|
@target.scroll_into_view_if_needed
|
766
778
|
|
767
779
|
# move and up
|
768
780
|
sleep_delay
|
769
|
-
position_to =
|
781
|
+
position_to = @target.clickable_point
|
770
782
|
with_key_pressing(drop_modifiers) do
|
771
|
-
@page.mouse.move(
|
772
|
-
|
783
|
+
@page.mouse.move(position_to.x, position_to.y, steps: 6)
|
784
|
+
if drag_intercepted_promise.fulfilled?
|
785
|
+
# dispatch HTML5 drag events
|
786
|
+
data = drag_intercepted_promise.value!
|
787
|
+
@page.mouse.drag_enter(position_to, data)
|
788
|
+
@page.mouse.drag_over(position_to, data)
|
789
|
+
sleep_delay
|
790
|
+
@page.mouse.drop(position_to, data)
|
791
|
+
else
|
792
|
+
sleep_delay
|
793
|
+
end
|
773
794
|
@page.mouse.up
|
774
795
|
end
|
775
796
|
sleep_delay
|
776
797
|
end
|
777
798
|
|
778
|
-
# @param element [Puppeteer::ElementHandle]
|
779
|
-
private def center_of(element)
|
780
|
-
box = element.bounding_box
|
781
|
-
[box.x + box.width / 2, box.y + box.height / 2]
|
782
|
-
end
|
783
|
-
|
784
799
|
private def with_key_pressing(keys, &block)
|
785
800
|
keys.each { |key| @page.keyboard.down(key) }
|
786
801
|
block.call
|
@@ -801,6 +816,16 @@ module Capybara
|
|
801
816
|
|
802
817
|
sleep @options[:delay]
|
803
818
|
end
|
819
|
+
|
820
|
+
private def inject_drag_drop_event_with(drag_intercepted_promise, position_to)
|
821
|
+
unless drag_intercepted_promise.fulfilled?
|
822
|
+
return
|
823
|
+
end
|
824
|
+
|
825
|
+
data = drag_intercepted_promise.value!
|
826
|
+
@page.mouse.drag_enter(position_to, data)
|
827
|
+
@page.mouse.drag_over(position_to, data)
|
828
|
+
end
|
804
829
|
end
|
805
830
|
|
806
831
|
def drop(*args)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara-puppeteer-driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YusukeIwaki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.36.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.36.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|