sparkling_watir 0.0.2 → 0.0.3

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: bb2b6d1396c00f3a2e8456284f6b65dff1280bd79dd20d1e8f3188eb1006248f
4
- data.tar.gz: 823a50280dec7f29ba2b2b9c4d0009f5568f206cff41ec2b723af53016c0b071
3
+ metadata.gz: cb95d81bc23cf2938bd4b20fa4cb06e18b7b104f4a2db9477f0e5d4b822577d0
4
+ data.tar.gz: dd4d2c67b98376c94707109e38d26e938f4af779e5f92e1752b77cc7d97e78c7
5
5
  SHA512:
6
- metadata.gz: 3d3298d8f14bf3c2b4928937be8199cd47852b37e30a3f44f6735dd7cf16c6504bc218a3ec4f1e1547333d3a4ab086226940317ab3ed45bf78d45e7360e6cf5e
7
- data.tar.gz: f6a4244e7bda0712f10879d3c39f70f75f5232974ab5bedbe1df0a2abaed6e9f14149167f8839ddc4b93185f4fd694c526fa44ebfd31866fc7f9c7edf23362b5
6
+ metadata.gz: 3b7d5973211467df06ede87056ad6269359c7e0fbc420831ef956a27eb28050e0dd208ad4b35b628e38a127c24840f35a359a0fb74c2c83a22e5a684847094d9
7
+ data.tar.gz: 8aed1b54a5c1b2815abe4e77af649aff96efdadd217bee16869f68f9b4e4c63821759dbb1bacf550307ded1d52debd3fa34e46105c6ec4d0283a9dd800cca269
data/.rubocop.yml CHANGED
@@ -0,0 +1,6 @@
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-performance
4
+
5
+ Metrics/BlockLength:
6
+ Max: 150
data/Gemfile CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
- gemspec
5
+ gemspec
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Watir for testing your Mobile Devices. Powered by Appium.
4
4
  This project is a revamp of [Tap watir](https://github.com/watir/tap_watir).
5
5
 
6
- All the inspiration from this project is taking from Tap Watir, so all the credit goes
6
+ All the inspiration from this project is taken from Tap Watir, so all the credit goes
7
7
  to the original creators and contributors
8
8
 
9
9
  If you don't know the watir project here is the [link to the project](http://watir.com/)
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  desc 'Changes the default platform'
@@ -5,4 +7,4 @@ task :platform, [:platform] do |_t, args|
5
7
  config = YAML.load_file('./spec/config/caps.yml')
6
8
  config['default_platform'] = args.platform
7
9
  File.open('./spec/config/caps.yml', 'w') { |file| YAML.dump(config, file) }
8
- end
10
+ end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative 'gestures'
3
4
  require_relative 'wait'
4
5
 
@@ -25,6 +26,7 @@ module SparklingWatir
25
26
  rescue Watir::Exception::UnknownObjectException
26
27
  false
27
28
  end
29
+
28
30
  alias exist? exists?
29
31
 
30
32
  def present?
@@ -33,6 +35,7 @@ module SparklingWatir
33
35
  rescue Watir::Exception::UnknownObjectException
34
36
  false
35
37
  end
38
+
36
39
  alias visible? present?
37
40
 
38
41
  def enabled?
@@ -43,11 +46,14 @@ module SparklingWatir
43
46
  end
44
47
 
45
48
  def coordinates
49
+ assert_exists
46
50
  @element.location
47
51
  end
52
+
48
53
  alias location coordinates
49
54
 
50
55
  def size
56
+ assert_exists
51
57
  @element.size
52
58
  end
53
59
 
@@ -55,6 +61,13 @@ module SparklingWatir
55
61
  { x: coordinates.x + size.width, y: coordinates.y + size.height }
56
62
  end
57
63
 
64
+ def center
65
+ {
66
+ x: coordinates[:x] + size.width / 2,
67
+ y: coordinates[:y] + size.height / 2
68
+ }
69
+ end
70
+
58
71
  private
59
72
 
60
73
  def locate
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'appium_lib_core/common/touch_action/touch_actions'
2
4
  require 'selenium/webdriver/common/interactions/interactions'
3
5
 
4
6
  module SparklingWatir
7
+ # This module handles all the possible gestures
5
8
  module Gestures
6
-
7
9
  VIEWPORT = ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT
8
10
 
9
11
  def action(kind, name)
@@ -14,9 +16,10 @@ module SparklingWatir
14
16
  @driver.perform_actions actions
15
17
  end
16
18
 
17
- def tap
19
+ def tap(timeout = nil)
20
+ wait_until(timeout: timeout, &:present?)
18
21
  tap = action(:touch, 'tap')
19
- tap.create_pointer_move(duration: 0.1, x: bounds[:x], y: bounds[:y] - 1, origin: VIEWPORT)
22
+ tap.create_pointer_move(duration: 0.1, x: center[:x], y: center[:y], origin: VIEWPORT)
20
23
  tap.create_pointer_down(:left)
21
24
  tap.create_pointer_up(:left)
22
25
  perform tap
@@ -25,15 +28,45 @@ module SparklingWatir
25
28
  alias press tap
26
29
 
27
30
  def double_tap
31
+ wait_until(&:present?)
28
32
  double_tap = action(:touch, 'double_tap')
29
- double_tap.create_pointer_move(duration: 0.1, x: bounds[:x], y: bounds[:y] - 1, origin: VIEWPORT)
33
+ tap.create_pointer_move(duration: 0.1, x: center[:x], y: center[:y], origin: VIEWPORT)
30
34
  double_tap.create_pointer_down(:left)
31
35
  double_tap.create_pointer_up(:left)
32
- double_tap.create_pause(0.5)
33
36
  double_tap.create_pointer_down(:left)
34
37
  double_tap.create_pointer_up(:left)
35
38
 
36
39
  perform double_tap
37
40
  end
41
+
42
+ def swipe(opts = {})
43
+ wait_until(&:present?)
44
+ start_coordinates = self.center
45
+ end_coordinates = select_direction(opts[:to].wait_until(&:exists?).center[:x], opts[:to].wait_until(&:exists?).center[:y], opts[:direction])
46
+ duration = opts[:duration] || 1
47
+ execute_swipe(duration, start_coordinates, end_coordinates)
48
+ end
49
+
50
+ private
51
+
52
+ def execute_swipe(duration, start_coordinates, end_coordinates)
53
+ finger = action(:touch, 'swipe')
54
+ finger.create_pointer_move(duration: duration, x: start_coordinates[:x], y: start_coordinates[:y],
55
+ origin: VIEWPORT)
56
+ finger.create_pointer_down(:left)
57
+ finger.create_pointer_move(duration: duration, x: end_coordinates[:x], y: end_coordinates[:y],
58
+ origin: VIEWPORT)
59
+ finger.create_pointer_up(:left)
60
+ perform finger
61
+ end
62
+
63
+ def select_direction(x, y, direction)
64
+ case direction
65
+ when :down then { x: x, y: - y } # For swipe down, increase y-coordinate
66
+ when :up then { x: x, y: y * 20 } # For swipe up, decrease y-coordinate
67
+ when :left, :right then { x: x, y: y }
68
+ else raise "You selected an invalid direction. The valid directions are: :down, :up, :left, :right"
69
+ end
70
+ end
38
71
  end
39
72
  end
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SparklingWatir
2
4
  module Wait
5
+ # This class provides the time use on waits
3
6
  class Timer
4
7
  def initialize(timeout: nil)
5
8
  @end_time = timeout ? current_time + timeout : nil
@@ -45,6 +48,6 @@ module SparklingWatir
45
48
  ::Time.now.to_f
46
49
  end
47
50
  end
48
- end # Timer
49
- end # Wait
50
- end # SparklingWatir
51
+ end
52
+ end
53
+ end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'wait/timer'
2
4
 
3
5
  module SparklingWatir
6
+ # This module is in charge of handling all the waits
4
7
  module Wait
5
8
  class TimeoutError < StandardError; end
6
9
 
@@ -38,7 +41,7 @@ module SparklingWatir
38
41
  result = yield(object)
39
42
  return result if result
40
43
  end
41
- raise TimeoutError, message_for(timeout, object, message)
44
+ raise TimeoutError, message_for(timeout, object, message)
42
45
  end
43
46
 
44
47
  #
@@ -79,9 +82,10 @@ module SparklingWatir
79
82
  end
80
83
  end
81
84
  end
82
- end # self
83
- end # Wait
85
+ end
86
+ end
84
87
 
88
+ # THis module provides wait utility methods
85
89
  module Waitable
86
90
  #
87
91
  # Waits until the condition is true.
@@ -129,21 +133,18 @@ module SparklingWatir
129
133
  proc do
130
134
  opt.keys.all? do |key|
131
135
  expected = opt[key]
132
- actual = if is_a?(Element) && !respond_to?(key)
133
- attribute_value(key)
134
- else
135
- send(key)
136
- end
137
- case expected
138
- when Regexp
139
- expected =~ actual
140
- when Numeric
141
- expected == actual
142
- else
143
- expected.to_s == actual
144
- end
136
+ actual = is_a?(Element) && !respond_to?(key) ? attribute_value(key) : send(key)
137
+ compare_attributes(actual, expected)
145
138
  end
146
139
  end
147
140
  end
148
- end # Waitable
149
- end # SparklingWatir
141
+
142
+ def compare_attributes(actual, expected)
143
+ case expected
144
+ when Regexp then expected =~ actual
145
+ when Numeric then expected == actual
146
+ else expected.to_s == actual
147
+ end
148
+ end
149
+ end
150
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'appium_lib_core'
2
4
  require 'watir'
3
5
 
@@ -9,12 +11,12 @@ module SparklingWatir
9
11
  attr_accessor :driver
10
12
 
11
13
  def initialize(opts)
12
- url = opts[:caps].delete(:url)
13
- @driver = Appium::Core::Driver.for(opts).start_driver(server_url: url)
14
+ url = opts[:caps]
15
+ @driver = Appium::Core::Driver.for(opts).start_driver(server_url: 'http://localhost:4723/wd/hub')
14
16
  end
15
17
 
16
18
  def quit
17
- @driver.quit
19
+ driver.quit
18
20
  end
19
21
 
20
22
  alias close quit
@@ -5,12 +5,12 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'sparkling_watir'
8
- spec.version = '0.0.2'
8
+ spec.version = '0.0.3'
9
9
  spec.authors = ['Agustin Pequeno']
10
10
  spec.email = ['agustin.pe94@gmail.com']
11
11
 
12
12
  spec.summary = 'A watir adaptation for testing your native mobile apps'
13
- spec.description = 'Sparkling watir takes heavy inspiration from tap watir and tries to provide a mobile adaptation of watir'
13
+ spec.description = 'Sparkling watir takes heavy inspiration from tap watir and is a mobile adaptation of watir'
14
14
  spec.license = 'MIT'
15
15
 
16
16
  # Specify which files should be added to the gem when it is released.
@@ -22,11 +22,13 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ['lib']
23
23
  spec.required_ruby_version = '>= 2.7.0'
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 2.3.17'
25
+ spec.add_development_dependency 'bundler', '~> 2.4.14'
26
26
  spec.add_development_dependency 'rake', '~> 13.0.6'
27
27
  spec.add_development_dependency 'rspec', '~> 3.11.0'
28
- spec.add_development_dependency 'rubocop', '~> 0.50'
28
+ spec.add_development_dependency 'rubocop', '~> 1.27'
29
+ spec.add_development_dependency 'rubocop-performance', '~> 1.15.0'
30
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.9.0'
29
31
 
30
- spec.add_dependency 'appium_lib_core', '~>5.3.0 '
32
+ spec.add_dependency 'appium_lib_core', '~>7.0.0 '
31
33
  spec.add_dependency 'watir', '~> 7.1.0'
32
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparkling_watir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pequeno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-13 00:00:00.000000000 Z
11
+ date: 2023-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.3.17
19
+ version: 2.4.14
20
20
  type: :development
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: 2.3.17
26
+ version: 2.4.14
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,28 +58,56 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.50'
61
+ version: '1.27'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.50'
68
+ version: '1.27'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-performance
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.15.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.15.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 2.9.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 2.9.0
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: appium_lib_core
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: 5.3.0
103
+ version: 7.0.0
76
104
  type: :runtime
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
108
  - - "~>"
81
109
  - !ruby/object:Gem::Version
82
- version: 5.3.0
110
+ version: 7.0.0
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: watir
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -94,8 +122,8 @@ dependencies:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
124
  version: 7.1.0
97
- description: Sparkling watir takes heavy inspiration from tap watir and tries to provide
98
- a mobile adaptation of watir
125
+ description: Sparkling watir takes heavy inspiration from tap watir and is a mobile
126
+ adaptation of watir
99
127
  email:
100
128
  - agustin.pe94@gmail.com
101
129
  executables: []
@@ -103,14 +131,8 @@ extensions: []
103
131
  extra_rdoc_files: []
104
132
  files:
105
133
  - ".gitignore"
106
- - ".idea/.gitignore"
107
- - ".idea/misc.xml"
108
- - ".idea/modules.xml"
109
- - ".idea/sparkling_watir.iml"
110
- - ".idea/vcs.xml"
111
134
  - ".rubocop.yml"
112
135
  - Gemfile
113
- - Gemfile.lock
114
136
  - README.md
115
137
  - Rakefile
116
138
  - lib/sparkling_watir.rb
data/.idea/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- # Default ignored files
2
- /shelf/
3
- /workspace.xml
4
- # Editor-based HTTP Client requests
5
- /httpRequests/
6
- # Datasource local storage ignored files
7
- /dataSources/
8
- /dataSources.local.xml
data/.idea/misc.xml DELETED
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-3.1.0" project-jdk-type="RUBY_SDK" />
4
- </project>
data/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/sparkling_watir.iml" filepath="$PROJECT_DIR$/.idea/sparkling_watir.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,48 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="RUBY_MODULE" version="4">
3
- <component name="ModuleRunConfigurationManager">
4
- <shared />
5
- </component>
6
- <component name="NewModuleRootManager">
7
- <content url="file://$MODULE_DIR$">
8
- <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
9
- <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
- <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
- </content>
12
- <orderEntry type="inheritedJdk" />
13
- <orderEntry type="sourceFolder" forTests="false" />
14
- <orderEntry type="library" scope="PROVIDED" name="appium_lib_core (v5.3.0, RVM: ruby-3.1.0) [gem]" level="application" />
15
- <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-3.1.0) [gem]" level="application" />
16
- <orderEntry type="library" scope="PROVIDED" name="bundler (v2.3.17, RVM: ruby-3.1.0) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="childprocess (v4.1.0, RVM: ruby-3.1.0) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-3.1.0) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="eventmachine (v1.2.7, RVM: ruby-3.1.0) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="faye-websocket (v0.11.1, RVM: ruby-3.1.0) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="parallel (v1.22.1, RVM: ruby-3.1.0) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="parser (v3.1.2.1, RVM: ruby-3.1.0) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, RVM: ruby-3.1.0) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-3.1.0) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.5.0, RVM: ruby-3.1.0) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-3.1.0) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, RVM: ruby-3.1.0) [gem]" level="application" />
28
- <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, RVM: ruby-3.1.0) [gem]" level="application" />
29
- <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.0, RVM: ruby-3.1.0) [gem]" level="application" />
30
- <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.1, RVM: ruby-3.1.0) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.0, RVM: ruby-3.1.0) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v0.93.1, RVM: ruby-3.1.0) [gem]" level="application" />
33
- <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.21.0, RVM: ruby-3.1.0) [gem]" level="application" />
34
- <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, RVM: ruby-3.1.0) [gem]" level="application" />
35
- <orderEntry type="library" scope="PROVIDED" name="rubyzip (v2.3.2, RVM: ruby-3.1.0) [gem]" level="application" />
36
- <orderEntry type="library" scope="PROVIDED" name="selenium-webdriver (v4.4.0, RVM: ruby-3.1.0) [gem]" level="application" />
37
- <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v1.8.0, RVM: ruby-3.1.0) [gem]" level="application" />
38
- <orderEntry type="library" scope="PROVIDED" name="watir (v7.1.0, RVM: ruby-3.1.0) [gem]" level="application" />
39
- <orderEntry type="library" scope="PROVIDED" name="websocket (v1.2.9, RVM: ruby-3.1.0) [gem]" level="application" />
40
- <orderEntry type="library" scope="PROVIDED" name="websocket-driver (v0.7.5, RVM: ruby-3.1.0) [gem]" level="application" />
41
- <orderEntry type="library" scope="PROVIDED" name="websocket-extensions (v0.1.5, RVM: ruby-3.1.0) [gem]" level="application" />
42
- </component>
43
- <component name="RakeTasksCache">
44
- <option name="myRootTask">
45
- <RakeTaskImpl id="rake" />
46
- </option>
47
- </component>
48
- </module>
data/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
- </component>
6
- </project>
data/Gemfile.lock DELETED
@@ -1,79 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- sparkling_watir (0.0.2)
5
- appium_lib_core (~> 5.3.0)
6
- watir (~> 7.1.0)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- appium_lib_core (5.3.0)
12
- faye-websocket (~> 0.11.0)
13
- selenium-webdriver (~> 4.2, < 4.5)
14
- ast (2.4.2)
15
- childprocess (4.1.0)
16
- diff-lcs (1.5.0)
17
- eventmachine (1.2.7)
18
- faye-websocket (0.11.1)
19
- eventmachine (>= 0.12.0)
20
- websocket-driver (>= 0.5.1)
21
- parallel (1.22.1)
22
- parser (3.1.2.1)
23
- ast (~> 2.4.1)
24
- rainbow (3.1.1)
25
- rake (13.0.6)
26
- regexp_parser (2.5.0)
27
- rexml (3.2.5)
28
- rspec (3.11.0)
29
- rspec-core (~> 3.11.0)
30
- rspec-expectations (~> 3.11.0)
31
- rspec-mocks (~> 3.11.0)
32
- rspec-core (3.11.0)
33
- rspec-support (~> 3.11.0)
34
- rspec-expectations (3.11.0)
35
- diff-lcs (>= 1.2.0, < 2.0)
36
- rspec-support (~> 3.11.0)
37
- rspec-mocks (3.11.1)
38
- diff-lcs (>= 1.2.0, < 2.0)
39
- rspec-support (~> 3.11.0)
40
- rspec-support (3.11.0)
41
- rubocop (0.93.1)
42
- parallel (~> 1.10)
43
- parser (>= 2.7.1.5)
44
- rainbow (>= 2.2.2, < 4.0)
45
- regexp_parser (>= 1.8)
46
- rexml
47
- rubocop-ast (>= 0.6.0)
48
- ruby-progressbar (~> 1.7)
49
- unicode-display_width (>= 1.4.0, < 2.0)
50
- rubocop-ast (1.21.0)
51
- parser (>= 3.1.1.0)
52
- ruby-progressbar (1.11.0)
53
- rubyzip (2.3.2)
54
- selenium-webdriver (4.4.0)
55
- childprocess (>= 0.5, < 5.0)
56
- rexml (~> 3.2, >= 3.2.5)
57
- rubyzip (>= 1.2.2, < 3.0)
58
- websocket (~> 1.0)
59
- unicode-display_width (1.8.0)
60
- watir (7.1.0)
61
- regexp_parser (>= 1.2, < 3)
62
- selenium-webdriver (~> 4.0)
63
- websocket (1.2.9)
64
- websocket-driver (0.7.5)
65
- websocket-extensions (>= 0.1.0)
66
- websocket-extensions (0.1.5)
67
-
68
- PLATFORMS
69
- arm64-darwin-21
70
-
71
- DEPENDENCIES
72
- bundler (~> 2.3.17)
73
- rake (~> 13.0.6)
74
- rspec (~> 3.11.0)
75
- rubocop (~> 0.50)
76
- sparkling_watir!
77
-
78
- BUNDLED WITH
79
- 2.3.17