sparkling_watir 0.0.2 → 0.0.3

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: 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