sparkling_watir 0.0.2 → 0.0.4

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: 7a87414a7834c36844d2e47020d15d809b925d344bf8d9f4fd9874c108834320
4
+ data.tar.gz: 6ca3f1ae39508f054faafb8f4ea9a91763e55e428fa59c2d77c4540df456000c
5
5
  SHA512:
6
- metadata.gz: 3d3298d8f14bf3c2b4928937be8199cd47852b37e30a3f44f6735dd7cf16c6504bc218a3ec4f1e1547333d3a4ab086226940317ab3ed45bf78d45e7360e6cf5e
7
- data.tar.gz: f6a4244e7bda0712f10879d3c39f70f75f5232974ab5bedbe1df0a2abaed6e9f14149167f8839ddc4b93185f4fd694c526fa44ebfd31866fc7f9c7edf23362b5
6
+ metadata.gz: 9355fff2a6b746a97e4504c8a69a155bed70acb73c27a0cf4a05a293aae62113bb0f0d22ddafa5fac8dedf85107ed48a90db83849261922753b98a8fdf45f7d2
7
+ data.tar.gz: 3ded479d13da1803805a6662fbc20f5a392a4bc2396d7ccaa68ef99c033d0bbf97a1e8559e40e3601b188ddffe2ed237c916efec26bbb51d6431e99a2fa35044
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
 
@@ -7,7 +8,6 @@ module SparklingWatir
7
8
  # This is a element in the native app context
8
9
  #
9
10
  class Element
10
- include Gestures
11
11
  include Waitable
12
12
 
13
13
  def initialize(driver, selector)
@@ -25,6 +25,7 @@ module SparklingWatir
25
25
  rescue Watir::Exception::UnknownObjectException
26
26
  false
27
27
  end
28
+
28
29
  alias exist? exists?
29
30
 
30
31
  def present?
@@ -33,6 +34,7 @@ module SparklingWatir
33
34
  rescue Watir::Exception::UnknownObjectException
34
35
  false
35
36
  end
37
+
36
38
  alias visible? present?
37
39
 
38
40
  def enabled?
@@ -43,11 +45,14 @@ module SparklingWatir
43
45
  end
44
46
 
45
47
  def coordinates
48
+ assert_exists
46
49
  @element.location
47
50
  end
51
+
48
52
  alias location coordinates
49
53
 
50
54
  def size
55
+ assert_exists
51
56
  @element.size
52
57
  end
53
58
 
@@ -55,6 +60,17 @@ module SparklingWatir
55
60
  { x: coordinates.x + size.width, y: coordinates.y + size.height }
56
61
  end
57
62
 
63
+ def center
64
+ {
65
+ x: coordinates[:x] + size.width / 2,
66
+ y: coordinates[:y] + size.height / 2
67
+ }
68
+ end
69
+
70
+ def attribute(attribute_name)
71
+ wd.attribute(attribute_name)
72
+ end
73
+
58
74
  private
59
75
 
60
76
  def locate
@@ -1,9 +1,10 @@
1
- require 'appium_lib_core/common/touch_action/touch_actions'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'selenium/webdriver/common/interactions/interactions'
3
4
 
4
5
  module SparklingWatir
6
+ # This module handles all the possible gestures
5
7
  module Gestures
6
-
7
8
  VIEWPORT = ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT
8
9
 
9
10
  def action(kind, name)
@@ -14,26 +15,88 @@ module SparklingWatir
14
15
  @driver.perform_actions actions
15
16
  end
16
17
 
17
- def tap
18
+ def tap(opts = {})
19
+ coordinates = { x: opts[:x] || opts[:on].center[:x], y: opts[:y] || opts[:on].center[:y] }
18
20
  tap = action(:touch, 'tap')
19
- tap.create_pointer_move(duration: 0.1, x: bounds[:x], y: bounds[:y] - 1, origin: VIEWPORT)
21
+ tap.create_pointer_move(duration: 0.1, x: coordinates[:x], y: coordinates[:y], origin: VIEWPORT)
20
22
  tap.create_pointer_down(:left)
23
+ tap.create_pause(opts[:duration] || 0)
21
24
  tap.create_pointer_up(:left)
22
25
  perform tap
23
26
  end
24
27
 
25
28
  alias press tap
26
29
 
27
- def double_tap
30
+ def double_tap(opts = {})
28
31
  double_tap = action(:touch, 'double_tap')
29
- double_tap.create_pointer_move(duration: 0.1, x: bounds[:x], y: bounds[:y] - 1, origin: VIEWPORT)
32
+ coordinates = { x: opts[:x] || opts[:on].center[:x], y: opts[:y] || opts[:on].center[:y] }
33
+ double_tap.create_pointer_move(duration: 0, x: coordinates[:x], y: coordinates[:y], origin: VIEWPORT)
30
34
  double_tap.create_pointer_down(:left)
35
+ double_tap.create_pause(0.1)
31
36
  double_tap.create_pointer_up(:left)
32
- double_tap.create_pause(0.5)
37
+ double_tap.create_pause(0.1)
33
38
  double_tap.create_pointer_down(:left)
39
+ double_tap.create_pause(0.1)
34
40
  double_tap.create_pointer_up(:left)
35
41
 
36
42
  perform double_tap
37
43
  end
44
+
45
+ def long_press(opts = {})
46
+ tap(duration: opts[:duration] || 0.5, on: opts[:on])
47
+ end
48
+
49
+ def swipe(opts = {})
50
+ coordinates = select_direction(opts[:to], opts[:direction])
51
+ execute_swipe(coordinates)
52
+ end
53
+
54
+ private
55
+
56
+ def execute_swipe(coordinates)
57
+ finger = action(:touch, 'swipe')
58
+ finger.create_pointer_move(duration: 0, x: coordinates[:start_coordinates][:x],
59
+ y: coordinates[:start_coordinates][:y],
60
+ origin: VIEWPORT)
61
+ finger.create_pointer_down(:left)
62
+ finger.create_pause(0.6)
63
+ finger.create_pointer_move(duration: 0.6, x: coordinates[:end_coordinates][:x],
64
+ y: coordinates[:end_coordinates][:y],
65
+ origin: VIEWPORT)
66
+ finger.create_pointer_up(:left)
67
+ finger.create_pointer_down(:left)
68
+
69
+ perform finger
70
+ end
71
+
72
+ def select_direction(element, direction)
73
+ case direction
74
+ when :down
75
+ start_x = element.center[:x]
76
+ start_y = @driver.window_size.height * 0.8
77
+ end_x = element.center[:x]
78
+ end_y = element.center[:y]
79
+ when :up
80
+ start_x = @driver.window_size.width / 2
81
+ start_y = @driver.window_size.height * 0.2
82
+ end_x = element.center[:x]
83
+ end_y = element.center[:y] / 0.5
84
+ when :left
85
+ start_x = @driver.window_size.width
86
+ start_y = element.center[:y]
87
+ end_x = element.center[:x]
88
+ end_y = element.center[:y]
89
+ when :right
90
+ start_x = @driver.window_size.width
91
+ start_y = element.center[:y]
92
+ end_x = element.center[:x]
93
+ end_y = element.center[:y]
94
+ else raise "You selected an invalid direction. The valid directions are: :down, :up, :left, :right"
95
+ end
96
+ {
97
+ start_coordinates: { x: start_x, y: start_y },
98
+ end_coordinates: { x: end_x, y: end_y }
99
+ }
100
+ end
38
101
  end
39
102
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'forwardable'
16
+ require 'logger'
17
+
18
+ module SparklingWatir
19
+ module Logger
20
+ #
21
+ # @example Use logger manually
22
+ # SparklingWatir::Logger.debug('This is info message')
23
+ # SparklingWatir::Logger.warn('This is warning message')
24
+ #
25
+ class << self
26
+ extend Forwardable
27
+ def_delegators :logger, :fatal, :error, :warn, :info, :debug, :level, :level=, :formatter, :formatter=
28
+
29
+ attr_writer :logger
30
+
31
+ private
32
+
33
+ def logger
34
+ @logger ||= begin
35
+ logger = ::Logger.new($stdout)
36
+ logger.progname = 'sparkling_watir'
37
+ logger.level = ::Logger::WARN
38
+ logger.formatter = proc { |_severity, _datetime, _progname, msg| "#{msg}\n" }
39
+ logger
40
+ end
41
+ end
42
+ end # class << self
43
+ end # module Logger
44
+ end # module SparklingWatir
@@ -0,0 +1,50 @@
1
+ module SparklingWatir
2
+ class Screenshot
3
+ attr_reader :driver
4
+
5
+ def initialize(driver)
6
+ @driver = driver
7
+ end
8
+
9
+ #
10
+ # Saves screenshot to given path.
11
+ #
12
+ # @example
13
+ # driver.screenshot.save "screenshot.png"
14
+ #
15
+ # @param [String] path
16
+ #
17
+
18
+ def save(path)
19
+ driver.save_screenshot(path)
20
+ end
21
+
22
+ #
23
+ # Represents screenshot as PNG image string.
24
+ #
25
+ # @example
26
+ # driver.screenshot.png
27
+ # #=> '\x95\xC7\x8C@1\xC07\x1C(Edb\x15\xB2\vL'
28
+ #
29
+ # @return [String]
30
+ #
31
+
32
+ def png
33
+ driver.screenshot_as(:png)
34
+ end
35
+
36
+ #
37
+ # Represents screenshot as Base64 encoded string.
38
+ #
39
+ # @example
40
+ # driver.screenshot.base64
41
+ # #=> '7HWJ43tZDscPleeUuPW6HhN3x+z7vU/lufmH0qNTtTum94IBWMT46evImci1vnFGT'
42
+ #
43
+ # @return [String]
44
+ #
45
+
46
+ def base64
47
+ driver.screenshot_as(:base64)
48
+ end
49
+ end # Screenshot
50
+ end # SparklingWatir
@@ -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,20 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'appium_lib_core'
2
4
  require 'watir'
5
+ require_relative './sparkling_watir/gestures'
6
+ require_relative './sparkling_watir/logger'
7
+ require_relative './sparkling_watir/screenshot'
3
8
 
4
9
  module SparklingWatir
5
10
  #
6
- # For driving a native application or a native app context
11
+ # For driving a native application
7
12
  #
8
13
  class App
9
14
  attr_accessor :driver
10
15
 
16
+ include Gestures
17
+
11
18
  def initialize(opts)
12
- url = opts[:caps].delete(:url)
19
+ url = opts[:caps]['url']
13
20
  @driver = Appium::Core::Driver.for(opts).start_driver(server_url: url)
14
21
  end
15
22
 
16
23
  def quit
17
- @driver.quit
24
+ driver.quit
18
25
  end
19
26
 
20
27
  alias close quit
@@ -23,6 +30,10 @@ module SparklingWatir
23
30
  Element.new(driver, selector)
24
31
  end
25
32
 
33
+ def screenshot
34
+ Screenshot.new self
35
+ end
36
+
26
37
  def method_missing(method_name, *arguments, &block)
27
38
  if driver.respond_to? method_name
28
39
  driver.send method_name, *arguments, &block
@@ -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.4'
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.4
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-15 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,19 +131,15 @@ 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
117
139
  - lib/sparkling_watir/element.rb
118
140
  - lib/sparkling_watir/gestures.rb
141
+ - lib/sparkling_watir/logger.rb
142
+ - lib/sparkling_watir/screenshot.rb
119
143
  - lib/sparkling_watir/wait.rb
120
144
  - lib/sparkling_watir/wait/timer.rb
121
145
  - sparkling_watir.gemspec
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