sparkling_watir 0.0.1 → 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: 8be8569b5d465e5b41cb77eebbab26537fdb755db47a0e486245e236535123fb
4
- data.tar.gz: 2b5d78461d1c67bb27a01137f6cb549cac39265c675e88e6690fc66e56cfd390
3
+ metadata.gz: cb95d81bc23cf2938bd4b20fa4cb06e18b7b104f4a2db9477f0e5d4b822577d0
4
+ data.tar.gz: dd4d2c67b98376c94707109e38d26e938f4af779e5f92e1752b77cc7d97e78c7
5
5
  SHA512:
6
- metadata.gz: d9c368c193abb1b26507a8598ce60afb25a7de718e9325c0e5cb2254169ce7a5cf9cc5582fa2b9a67236cc29da60a1bc516bdf4a89a267c0b37318a99288a0f3
7
- data.tar.gz: c2e9f30535754c03a862274c6360d8b76a13b5a139b3d32baf5eb65663615796d871d8d859b3b7c305e713002d2b31f0e390b458e28f7db668612a18fe6ffbe7
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
@@ -1,11 +1,15 @@
1
1
  # SparklingWatir
2
2
 
3
3
  Watir for testing your Mobile Devices. Powered by Appium.
4
- This project is a revamp of Tap watir https://github.com/watir/tap_watir.
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
+ If you don't know the watir project here is the [link to the project](http://watir.com/)
10
+
11
+ This project is still in an alpha stage and under active development.
12
+
9
13
  ## Installation
10
14
 
11
15
  Add this line to your application's Gemfile:
@@ -22,6 +26,16 @@ Or install it yourself as:
22
26
 
23
27
  $ gem install sparkling_watir
24
28
 
29
+ If you want to run the tests on iOS just create a simulator that is an iPhone 8 with os 15.5 or you can change
30
+ the capabilities in spec/config/caps and you can download the testing app [here](https://github.com/cloudgrey-io/the-app/releases/tag/v1.10.0)
31
+
32
+ All the credit for the testing app goes to Jonathan Lipps.
33
+
34
+ If you want to switch between android and iOS capabilties just run:
35
+
36
+ $ rake platform[android] or rake platform[ios]
37
+
38
+
25
39
  ## License
26
40
 
27
41
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ desc 'Changes the default platform'
6
+ task :platform, [:platform] do |_t, args|
7
+ config = YAML.load_file('./spec/config/caps.yml')
8
+ config['default_platform'] = args.platform
9
+ File.open('./spec/config/caps.yml', 'w') { |file| YAML.dump(config, file) }
10
+ end
@@ -1,11 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module SparklingWatir
3
+ require_relative 'gestures'
4
+ require_relative 'wait'
4
5
 
6
+ module SparklingWatir
5
7
  #
6
8
  # This is a element in the native app context
7
9
  #
8
10
  class Element
11
+ include Gestures
12
+ include Waitable
13
+
9
14
  def initialize(driver, selector)
10
15
  @driver = driver
11
16
  @selector = selector
@@ -21,6 +26,7 @@ module SparklingWatir
21
26
  rescue Watir::Exception::UnknownObjectException
22
27
  false
23
28
  end
29
+
24
30
  alias exist? exists?
25
31
 
26
32
  def present?
@@ -29,6 +35,7 @@ module SparklingWatir
29
35
  rescue Watir::Exception::UnknownObjectException
30
36
  false
31
37
  end
38
+
32
39
  alias visible? present?
33
40
 
34
41
  def enabled?
@@ -39,16 +46,26 @@ module SparklingWatir
39
46
  end
40
47
 
41
48
  def coordinates
49
+ assert_exists
42
50
  @element.location
43
51
  end
52
+
44
53
  alias location coordinates
45
54
 
46
55
  def size
56
+ assert_exists
47
57
  @element.size
48
58
  end
49
59
 
50
60
  def bounds
51
- {x: coordinates.x + size.width, y: coordinates.y + size.height}
61
+ { x: coordinates.x + size.width, y: coordinates.y + size.height }
62
+ end
63
+
64
+ def center
65
+ {
66
+ x: coordinates[:x] + size.width / 2,
67
+ y: coordinates[:y] + size.height / 2
68
+ }
52
69
  end
53
70
 
54
71
  private
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'appium_lib_core/common/touch_action/touch_actions'
4
+ require 'selenium/webdriver/common/interactions/interactions'
5
+
6
+ module SparklingWatir
7
+ # This module handles all the possible gestures
8
+ module Gestures
9
+ VIEWPORT = ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT
10
+
11
+ def action(kind, name)
12
+ @driver.action.add_pointer_input(kind, name)
13
+ end
14
+
15
+ def perform(*actions)
16
+ @driver.perform_actions actions
17
+ end
18
+
19
+ def tap(timeout = nil)
20
+ wait_until(timeout: timeout, &:present?)
21
+ tap = action(:touch, 'tap')
22
+ tap.create_pointer_move(duration: 0.1, x: center[:x], y: center[:y], origin: VIEWPORT)
23
+ tap.create_pointer_down(:left)
24
+ tap.create_pointer_up(:left)
25
+ perform tap
26
+ end
27
+
28
+ alias press tap
29
+
30
+ def double_tap
31
+ wait_until(&:present?)
32
+ double_tap = action(:touch, 'double_tap')
33
+ tap.create_pointer_move(duration: 0.1, x: center[:x], y: center[:y], origin: VIEWPORT)
34
+ double_tap.create_pointer_down(:left)
35
+ double_tap.create_pointer_up(:left)
36
+ double_tap.create_pointer_down(:left)
37
+ double_tap.create_pointer_up(:left)
38
+
39
+ perform double_tap
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
71
+ end
72
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SparklingWatir
4
+ module Wait
5
+ # This class provides the time use on waits
6
+ class Timer
7
+ def initialize(timeout: nil)
8
+ @end_time = timeout ? current_time + timeout : nil
9
+ @remaining_time = @end_time - current_time if @end_time
10
+ end
11
+
12
+ #
13
+ # Executes given block until it returns true or exceeds timeout.
14
+ # @param [Integer] timeout
15
+ # @yield block
16
+ # @api private
17
+ #
18
+
19
+ def wait(timeout, &block)
20
+ end_time = @end_time || current_time + timeout
21
+ loop do
22
+ yield(block)
23
+ @remaining_time = end_time - current_time
24
+ break if @remaining_time.negative?
25
+ end
26
+ end
27
+
28
+ def remaining_time
29
+ @end_time - current_time
30
+ end
31
+
32
+ def reset!
33
+ @end_time = nil
34
+ end
35
+
36
+ def locked?
37
+ !@end_time.nil?
38
+ end
39
+
40
+ private
41
+
42
+ if defined?(Process::CLOCK_MONOTONIC)
43
+ def current_time
44
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
45
+ end
46
+ else
47
+ def current_time
48
+ ::Time.now.to_f
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,150 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'wait/timer'
4
+
5
+ module SparklingWatir
6
+ # This module is in charge of handling all the waits
7
+ module Wait
8
+ class TimeoutError < StandardError; end
9
+
10
+ INTERVAL = 0.1
11
+
12
+ class << self
13
+ #
14
+ # @!attribute timer
15
+ # Access TapWatir timer implementation in use.
16
+ # @see Timer
17
+ # @return [#wait]
18
+ #
19
+
20
+ attr_writer :timer
21
+
22
+ def timer
23
+ @timer ||= Timer.new
24
+ end
25
+
26
+ #
27
+ # Waits until the block evaluates to true or times out.
28
+ #
29
+ # @example
30
+ # TODO: Add examples
31
+ #
32
+ # @param [Integer] timeout How long to wait in seconds
33
+ # @param [String] message Message to raise if timeout is exceeded
34
+ # @param [Object, NilClass] object Object to evaluate block against
35
+ # @raise [TimeoutError] if timeout is exceeded
36
+ #
37
+
38
+ def until(timeout: nil, message: nil, interval: nil, object: nil)
39
+ timeout ||= Watir.default_timeout
40
+ run_with_timer(timeout, interval) do
41
+ result = yield(object)
42
+ return result if result
43
+ end
44
+ raise TimeoutError, message_for(timeout, object, message)
45
+ end
46
+
47
+ #
48
+ # Wait while the block evaluates to true or times out.
49
+ #
50
+ # @example
51
+ # TODO: Add examples
52
+ #
53
+ # @param [Integer] timeout How long to wait in seconds
54
+ # @param [String] message Message to raise if timeout is exceeded
55
+ # @param [Object, NilClass] object Object to evaluate block against
56
+ # @raise [TimeoutError] if timeout is exceeded
57
+ #
58
+
59
+ def while(timeout: nil, message: nil, interval: nil, object: nil)
60
+ timeout ||= Watir.default_timeout
61
+ run_with_timer(timeout, interval) { return unless yield(object) }
62
+ raise TimeoutError, message_for(timeout, object, message)
63
+ end
64
+
65
+ private
66
+
67
+ def message_for(timeout, object, message)
68
+ message = message.call(object) if message.is_a?(Proc)
69
+ err = "timed out after #{timeout} seconds"
70
+ err << ", #{message}" if message
71
+
72
+ err
73
+ end
74
+
75
+ def run_with_timer(timeout, interval)
76
+ if timeout.zero?
77
+ yield
78
+ else
79
+ timer.wait(timeout) do
80
+ yield
81
+ sleep interval || INTERVAL
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ # THis module provides wait utility methods
89
+ module Waitable
90
+ #
91
+ # Waits until the condition is true.
92
+ #
93
+ # @example
94
+ # TODO: Add examples
95
+ #
96
+
97
+ def wait_until(timeout: nil, message: nil, interval: nil, **opt, &blk)
98
+ message ||= proc { |obj| "waiting for true condition on #{obj.inspect}" }
99
+
100
+ # TODO: Consider throwing argument error for mixing block & options
101
+ proc = create_proc(opt, &blk)
102
+
103
+ Wait.until(timeout: timeout, message: message, interval: interval, object: self, &proc)
104
+
105
+ self
106
+ end
107
+
108
+ #
109
+ # @example
110
+ # Add examples
111
+ #
112
+ def wait_while(timeout: nil, message: nil, interval: nil, **opt, &blk)
113
+ message ||= proc { |obj| "waiting for false condition on #{obj.inspect}" }
114
+
115
+ # TODO: Add examples
116
+ proc = create_proc(opt, &blk)
117
+
118
+ Wait.while(timeout: timeout, message: message, interval: interval, object: self, &proc)
119
+
120
+ self
121
+ end
122
+
123
+ private
124
+
125
+ def create_proc(opt)
126
+ proc do
127
+ reset! if opt.delete(:element_reset) && is_a?(Element)
128
+ (opt.empty? || match_attributes(opt).call) && (!block_given? || yield(self))
129
+ end
130
+ end
131
+
132
+ def match_attributes(opt)
133
+ proc do
134
+ opt.keys.all? do |key|
135
+ expected = opt[key]
136
+ actual = is_a?(Element) && !respond_to?(key) ? attribute_value(key) : send(key)
137
+ compare_attributes(actual, expected)
138
+ end
139
+ end
140
+ end
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,37 +1,40 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'appium_lib_core'
2
4
  require 'watir'
3
5
 
4
6
  module SparklingWatir
5
- #
6
- # For driving a native application or a native app context
7
- #
8
- class App
9
- attr_accessor :driver
10
-
11
- def initialize(opts)
12
- url = opts[:caps].delete(:url)
13
- @driver = Appium::Core::Driver.for(opts).start_driver(server_url: url)
14
- end
7
+ #
8
+ # For driving a native application or a native app context
9
+ #
10
+ class App
11
+ attr_accessor :driver
15
12
 
16
- def quit
17
- @driver.quit
18
- end
19
- alias close quit
13
+ def initialize(opts)
14
+ url = opts[:caps]
15
+ @driver = Appium::Core::Driver.for(opts).start_driver(server_url: 'http://localhost:4723/wd/hub')
16
+ end
20
17
 
21
- def element(selector)
22
- Element.new(driver, selector)
23
- end
18
+ def quit
19
+ driver.quit
20
+ end
24
21
 
25
- def method_missing(method_name, *arguments, &block)
26
- if driver.respond_to? method_name
27
- driver.send method_name, *arguments, &block
28
- else
29
- super
30
- end
31
- end
22
+ alias close quit
23
+
24
+ def element(selector)
25
+ Element.new(driver, selector)
26
+ end
32
27
 
33
- def respond_to_missing?(method_name, include_private = false)
34
- driver.respond_to?(method_name) || super
28
+ def method_missing(method_name, *arguments, &block)
29
+ if driver.respond_to? method_name
30
+ driver.send method_name, *arguments, &block
31
+ else
32
+ super
35
33
  end
36
34
  end
35
+
36
+ def respond_to_missing?(method_name, include_private = false)
37
+ driver.respond_to?(method_name) || super
38
+ end
39
+ end
37
40
  end
@@ -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.1'
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.1
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-11 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,18 +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
140
+ - lib/sparkling_watir/gestures.rb
141
+ - lib/sparkling_watir/wait.rb
142
+ - lib/sparkling_watir/wait/timer.rb
118
143
  - sparkling_watir.gemspec
119
144
  homepage:
120
145
  licenses:
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,25 +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="bundler (v2.3.17, RVM: ruby-3.1.0) [gem]" level="application" />
15
- <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-3.1.0) [gem]" level="application" />
16
- <orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, RVM: ruby-3.1.0) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v0.93.1, RVM: ruby-3.1.0) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="watir (v7.1.0, RVM: ruby-3.1.0) [gem]" level="application" />
19
- </component>
20
- <component name="RakeTasksCache">
21
- <option name="myRootTask">
22
- <RakeTaskImpl id="rake" />
23
- </option>
24
- </component>
25
- </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.1)
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