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 +4 -4
- data/.rubocop.yml +6 -0
- data/Gemfile +1 -1
- data/README.md +1 -1
- data/Rakefile +3 -1
- data/lib/sparkling_watir/element.rb +17 -1
- data/lib/sparkling_watir/gestures.rb +70 -7
- data/lib/sparkling_watir/logger.rb +44 -0
- data/lib/sparkling_watir/screenshot.rb +50 -0
- data/lib/sparkling_watir/wait/timer.rb +6 -3
- data/lib/sparkling_watir/wait.rb +19 -18
- data/lib/sparkling_watir.rb +14 -3
- data/sparkling_watir.gemspec +7 -5
- metadata +40 -16
- data/.idea/.gitignore +0 -8
- data/.idea/misc.xml +0 -4
- data/.idea/modules.xml +0 -8
- data/.idea/sparkling_watir.iml +0 -48
- data/.idea/vcs.xml +0 -6
- data/Gemfile.lock +0 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a87414a7834c36844d2e47020d15d809b925d344bf8d9f4fd9874c108834320
|
4
|
+
data.tar.gz: 6ca3f1ae39508f054faafb8f4ea9a91763e55e428fa59c2d77c4540df456000c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9355fff2a6b746a97e4504c8a69a155bed70acb73c27a0cf4a05a293aae62113bb0f0d22ddafa5fac8dedf85107ed48a90db83849261922753b98a8fdf45f7d2
|
7
|
+
data.tar.gz: 3ded479d13da1803805a6662fbc20f5a392a4bc2396d7ccaa68ef99c033d0bbf97a1e8559e40e3601b188ddffe2ed237c916efec26bbb51d6431e99a2fa35044
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
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
|
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
|
-
|
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:
|
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
|
-
|
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.
|
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
|
49
|
-
end
|
50
|
-
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/sparkling_watir/wait.rb
CHANGED
@@ -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
|
-
|
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
|
83
|
-
end
|
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 =
|
133
|
-
|
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
|
-
|
149
|
-
|
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
|
data/lib/sparkling_watir.rb
CHANGED
@@ -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
|
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]
|
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
|
-
|
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
|
data/sparkling_watir.gemspec
CHANGED
@@ -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.
|
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
|
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.
|
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', '~>
|
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', '~>
|
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.
|
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:
|
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.
|
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.
|
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: '
|
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: '
|
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:
|
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:
|
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
|
98
|
-
|
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
data/.idea/misc.xml
DELETED
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>
|
data/.idea/sparkling_watir.iml
DELETED
@@ -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
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
|