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
         
     |