percy-appium-app 0.0.5 → 0.0.7
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/.github/workflows/test.yml +1 -1
- data/percy/common/common.rb +8 -5
- data/percy/metadata/metadata.rb +4 -1
- data/percy/providers/generic_provider.rb +5 -3
- data/percy/version.rb +1 -1
- data/specs/generic_providers.rb +21 -12
- data/specs/metadata.rb +32 -4
- data/specs/screenshot.rb +4 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8894474b866e7988f60b776f782f3c04887b4aa626cf2a384f2c97d983a534fc
|
4
|
+
data.tar.gz: 461ea9e2bf18840893f9b805ea93e8005874b4c9ddbcdf447d71e691051a015f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c91b292ad5b7a2ba6d04a64294d539caf6da3a9da7809663625a07f441563d242e00a37025ef2a96bdeafe3f604af7b286709676debeb18ca0834f22590e790c
|
7
|
+
data.tar.gz: e670e5434e2d4ace31348e736134f6976d8fa2bc1548febe7b7d70faeab6f057b833fc1809c84cf1c3b7b5a21922f41d75df3134b4fc7d2167a9354775da8d86
|
data/.github/workflows/test.yml
CHANGED
@@ -37,4 +37,4 @@ jobs:
|
|
37
37
|
key: v1/${{ runner.os }}/ruby-${{ matrix.ruby }}/${{ hashFiles('**/Gemfile.lock') }}
|
38
38
|
restore-keys: v1/${{ runner.os }}/ruby-${{ matrix.ruby }}/
|
39
39
|
- run: bundle install
|
40
|
-
- run: for file in specs/*.rb; do ruby $file; done
|
40
|
+
- run: for file in specs/*.rb; do echo $file; bundle exec ruby $file; done
|
data/percy/common/common.rb
CHANGED
@@ -2,14 +2,13 @@
|
|
2
2
|
|
3
3
|
require 'dotenv/load'
|
4
4
|
|
5
|
-
PERCY_LOGLEVEL = ENV['PERCY_LOGLEVEL']
|
6
|
-
PERCY_DEBUG = PERCY_LOGLEVEL == 'debug'
|
7
|
-
LABEL = "[\e[35m#{PERCY_DEBUG ? 'percy:ruby' : 'percy'}\e[39m]"
|
8
5
|
|
9
6
|
def log(message, on_debug: nil)
|
10
|
-
return unless on_debug.nil? || (on_debug.is_a?(TrueClass) &&
|
7
|
+
return unless on_debug.nil? || (on_debug.is_a?(TrueClass) && percy_debug)
|
11
8
|
|
12
|
-
|
9
|
+
label = "[\e[35m#{percy_debug ? 'percy:ruby' : 'percy'}\e[39m]"
|
10
|
+
|
11
|
+
puts "#{label} #{message}"
|
13
12
|
end
|
14
13
|
|
15
14
|
def hashed(object)
|
@@ -17,3 +16,7 @@ def hashed(object)
|
|
17
16
|
|
18
17
|
object
|
19
18
|
end
|
19
|
+
|
20
|
+
def percy_debug
|
21
|
+
ENV['PERCY_LOGLEVEL'] == 'debug'
|
22
|
+
end
|
data/percy/metadata/metadata.rb
CHANGED
@@ -103,7 +103,10 @@ module Percy
|
|
103
103
|
return @device_info unless @device_info.empty?
|
104
104
|
|
105
105
|
@device_info = DEVICE_INFO[device_name.downcase] || {}
|
106
|
-
|
106
|
+
if @device_info.empty?
|
107
|
+
log("#{device_name.downcase} does not exist in config. Making driver call to get the device info.",
|
108
|
+
on_debug: true)
|
109
|
+
end
|
107
110
|
@device_info
|
108
111
|
end
|
109
112
|
end
|
@@ -106,8 +106,8 @@ module Percy
|
|
106
106
|
|
107
107
|
def get_region_object(selector, element)
|
108
108
|
scale_factor = metadata.scale_factor
|
109
|
-
location =
|
110
|
-
size =
|
109
|
+
location = { 'x' => element.location.x, 'y' => element.location.y }
|
110
|
+
size = { 'height' => element.size.height, 'width' => element.size.width }
|
111
111
|
coordinates = {
|
112
112
|
'top' => location['y'] * scale_factor,
|
113
113
|
'bottom' => (location['y'] + size['height']) * scale_factor,
|
@@ -133,7 +133,9 @@ module Percy
|
|
133
133
|
|
134
134
|
def get_regions_by_ids(elements_array, ids)
|
135
135
|
ids.each do |id|
|
136
|
-
|
136
|
+
# Appium::Core::Base::SearchContext::FINDERS[:xpath] returns `accessibility id`
|
137
|
+
# instead of `:accessibility_id`, causes error
|
138
|
+
element = driver.find_element(:accessibility_id, id)
|
137
139
|
selector = "id: #{id}"
|
138
140
|
region = get_region_object(selector, element)
|
139
141
|
elements_array << region
|
data/percy/version.rb
CHANGED
data/specs/generic_providers.rb
CHANGED
@@ -233,8 +233,10 @@ class TestGenericProvider < Minitest::Test
|
|
233
233
|
|
234
234
|
def test_get_region_object
|
235
235
|
mock_element = Minitest::Mock.new
|
236
|
-
|
237
|
-
|
236
|
+
2.times do
|
237
|
+
mock_element.expect(:location, Selenium::WebDriver::Point.new(10, 20))
|
238
|
+
mock_element.expect(:size, Selenium::WebDriver::Dimension.new(100, 200))
|
239
|
+
end
|
238
240
|
|
239
241
|
result = @generic_provider.get_region_object('my-selector', mock_element)
|
240
242
|
expected_result = {
|
@@ -248,8 +250,10 @@ class TestGenericProvider < Minitest::Test
|
|
248
250
|
|
249
251
|
def test_get_regions_by_xpath
|
250
252
|
mock_element = Minitest::Mock.new
|
251
|
-
|
252
|
-
|
253
|
+
2.times do
|
254
|
+
mock_element.expect(:location, Selenium::WebDriver::Point.new(10, 20))
|
255
|
+
mock_element.expect(:size, Selenium::WebDriver::Dimension.new(100, 200))
|
256
|
+
end
|
253
257
|
|
254
258
|
@mock_webdriver.expect(:find_element, mock_element,
|
255
259
|
[Appium::Core::Base::SearchContext::FINDERS[:xpath], '//path/to/element'])
|
@@ -279,11 +283,12 @@ class TestGenericProvider < Minitest::Test
|
|
279
283
|
|
280
284
|
def test_get_regions_by_ids
|
281
285
|
mock_element = Minitest::Mock.new
|
282
|
-
|
283
|
-
|
286
|
+
2.times do
|
287
|
+
mock_element.expect(:location, Selenium::WebDriver::Point.new(10, 20))
|
288
|
+
mock_element.expect(:size, Selenium::WebDriver::Dimension.new(100, 200))
|
289
|
+
end
|
284
290
|
|
285
|
-
@mock_webdriver.expect(:find_element, mock_element,
|
286
|
-
[Appium::Core::Base::SearchContext::FINDERS[:accessibility_id], 'some_id'])
|
291
|
+
@mock_webdriver.expect(:find_element, mock_element, [:accessibility_id, 'some_id'])
|
287
292
|
|
288
293
|
elements_array = []
|
289
294
|
ids = ['some_id']
|
@@ -299,8 +304,10 @@ class TestGenericProvider < Minitest::Test
|
|
299
304
|
|
300
305
|
def test_get_regions_by_ids_with_non_existing_element
|
301
306
|
mock_element = Minitest::Mock.new
|
302
|
-
|
303
|
-
|
307
|
+
2.times do
|
308
|
+
mock_element.expect(:location, Selenium::WebDriver::Point.new(10, 20))
|
309
|
+
mock_element.expect(:size, Selenium::WebDriver::Dimension.new(100, 200))
|
310
|
+
end
|
304
311
|
|
305
312
|
@mock_webdriver.expect(:find_element, [Appium::Core::Base::SearchContext::FINDERS[:accessibility_id], 'id1']) do
|
306
313
|
raise Appium::Core::Error::NoSuchElementError, 'Test error'
|
@@ -315,8 +322,10 @@ class TestGenericProvider < Minitest::Test
|
|
315
322
|
|
316
323
|
def test_get_regions_by_elements
|
317
324
|
mock_element = Minitest::Mock.new
|
318
|
-
|
319
|
-
|
325
|
+
2.times do
|
326
|
+
mock_element.expect(:location, Selenium::WebDriver::Point.new(10, 20))
|
327
|
+
mock_element.expect(:size, Selenium::WebDriver::Dimension.new(100, 200))
|
328
|
+
end
|
320
329
|
mock_element.expect(:attribute, 'textView', ['class'])
|
321
330
|
|
322
331
|
elements_array = []
|
data/specs/metadata.rb
CHANGED
@@ -28,11 +28,39 @@ class TestMetadata < Minitest::Test
|
|
28
28
|
ENV['PERCY_LOGLEVEL'] = 'debug'
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
31
|
+
def test_get_device_info_device_not_present_when_log_level_is_debug
|
32
|
+
# redirecting the standard output temporarily and capture the output in a string.
|
33
|
+
captured_output = StringIO.new
|
34
|
+
$stdout = captured_output
|
35
|
+
ENV['PERCY_LOGLEVEL'] = 'debug'
|
32
36
|
device_name = 'Some Phone 123'
|
33
|
-
|
34
|
-
|
35
|
-
|
37
|
+
@metadata.get_device_info(device_name)
|
38
|
+
# Restore standard output
|
39
|
+
$stdout = STDOUT
|
40
|
+
|
41
|
+
# Get the captured output as a string
|
42
|
+
output = captured_output.string
|
43
|
+
regex_pattern = /#{Regexp.escape(device_name.downcase)} does not exist in config\. Making driver call to get the device info\./
|
44
|
+
|
45
|
+
assert_match(regex_pattern, output)
|
46
|
+
ENV['PERCY_LOGLEVEL'] = nil
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_get_device_info_device_not_present_when_log_level_is_info
|
50
|
+
# redirecting the standard output temporarily and capture the output in a string.
|
51
|
+
captured_output = StringIO.new
|
52
|
+
$stdout = captured_output
|
53
|
+
ENV['PERCY_LOGLEVEL'] = nil
|
54
|
+
device_name = 'Some Phone 123'
|
55
|
+
@metadata.get_device_info(device_name)
|
56
|
+
|
57
|
+
# Restore standard output
|
58
|
+
$stdout = STDOUT
|
59
|
+
|
60
|
+
# Get the captured output as a string
|
61
|
+
output = captured_output.string
|
62
|
+
|
63
|
+
assert_equal(output, '')
|
36
64
|
end
|
37
65
|
|
38
66
|
def test_metadata_get_orientation
|
data/specs/screenshot.rb
CHANGED
@@ -339,8 +339,10 @@ class TestPercyScreenshot < Minitest::Test
|
|
339
339
|
mock_screenshot
|
340
340
|
|
341
341
|
mock_element = Minitest::Mock.new
|
342
|
-
|
343
|
-
|
342
|
+
2.times do
|
343
|
+
mock_element.expect(:location, Selenium::WebDriver::Point.new(10, 20))
|
344
|
+
mock_element.expect(:size, Selenium::WebDriver::Dimension.new(200, 400))
|
345
|
+
end
|
344
346
|
|
345
347
|
xpaths = ['//path/to/element']
|
346
348
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: percy-appium-app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BroswerStack
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appium_lib
|