percy-appium-app 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,8 @@
2
2
 
3
3
  # lib/ignore_region.rb
4
4
  require_relative 'region'
5
-
6
- class IgnoreRegion < Region
7
- # Inherits everything from Region; no additional code needed unless you want to extend or modify the behavior
5
+ module Percy
6
+ class IgnoreRegion < Percy::Region
7
+ # Inherits everything from Percy::Region; no additional code needed unless you want to extend or modify the behavior
8
+ end
8
9
  end
@@ -10,50 +10,52 @@ IGNORE_ELEMENT_ALT_KEY = 'ignoreRegionAppiumElements'
10
10
  CONSIDER_ELEMENT_KEY = 'consider_region_appium_elements'
11
11
  CONSIDER_ELEMENT_ALT_KEY = 'considerRegionAppiumElements'
12
12
 
13
- class PercyOnAutomate
14
- def initialize(driver)
15
- unless driver.is_a?(Appium::Core::Base::Driver)
16
- raise DriverNotSupported, 'The provided driver instance is not supported.'
13
+ module Percy
14
+ class PercyOnAutomate
15
+ def initialize(driver)
16
+ unless driver.is_a?(Appium::Core::Base::Driver)
17
+ raise DriverNotSupported, 'The provided driver instance is not supported.'
18
+ end
19
+
20
+ @driver = driver
21
+ @percy_options = Percy::PercyOptions.new(@driver.capabilities)
17
22
  end
18
23
 
19
- @driver = driver
20
- @percy_options = PercyOptions.new(@driver.capabilities)
21
- end
22
-
23
- def screenshot(name, **options)
24
- return nil unless @percy_options.enabled
25
- raise TypeError, 'Argument name should be a string' unless name.is_a?(String)
26
- raise KeyError, 'Please pass the last parameter as "options" key' unless options.key?(:options)
27
-
28
- metadata = DriverMetadata.new(@driver)
29
- options = options[:options] || {}
30
-
31
- begin
32
- options[IGNORE_ELEMENT_KEY] = options.delete(IGNORE_ELEMENT_ALT_KEY) if options.key?(IGNORE_ELEMENT_ALT_KEY)
33
- options[CONSIDER_ELEMENT_KEY] = options.delete(CONSIDER_ELEMENT_ALT_KEY) if options.key?(CONSIDER_ELEMENT_ALT_KEY)
34
-
35
- ignore_region_elements = options.fetch(IGNORE_ELEMENT_KEY, []).map(&:id)
36
- consider_region_elements = options.fetch(CONSIDER_ELEMENT_KEY, []).map(&:id)
37
- options.delete(IGNORE_ELEMENT_KEY)
38
- options.delete(CONSIDER_ELEMENT_KEY)
39
-
40
- additional_options = {
41
- 'ignore_region_elements' => ignore_region_elements,
42
- 'consider_region_elements' => consider_region_elements
43
- }
44
-
45
- CLIWrapper.new.post_poa_screenshots(
46
- name,
47
- metadata.session_id,
48
- metadata.command_executor_url,
49
- metadata.capabilities,
50
- metadata.session_capabilities,
51
- options.merge(additional_options)
52
- )
53
- rescue StandardError => e
54
- log("Could not take Screenshot '#{name}'")
55
- log(e.message, on_debug: true)
24
+ def screenshot(name, **options)
25
+ return nil unless @percy_options.enabled
26
+ raise TypeError, 'Argument name should be a string' unless name.is_a?(String)
27
+ raise KeyError, 'Please pass the last parameter as "options" key' unless options.key?(:options)
28
+
29
+ metadata = Percy::DriverMetadata.new(@driver)
30
+ options = options[:options] || {}
31
+
32
+ begin
33
+ options[IGNORE_ELEMENT_KEY] = options.delete(IGNORE_ELEMENT_ALT_KEY) if options.key?(IGNORE_ELEMENT_ALT_KEY)
34
+ options[CONSIDER_ELEMENT_KEY] = options.delete(CONSIDER_ELEMENT_ALT_KEY) if options.key?(CONSIDER_ELEMENT_ALT_KEY)
35
+
36
+ ignore_region_elements = options.fetch(IGNORE_ELEMENT_KEY, []).map(&:id)
37
+ consider_region_elements = options.fetch(CONSIDER_ELEMENT_KEY, []).map(&:id)
38
+ options.delete(IGNORE_ELEMENT_KEY)
39
+ options.delete(CONSIDER_ELEMENT_KEY)
40
+
41
+ additional_options = {
42
+ 'ignore_region_elements' => ignore_region_elements,
43
+ 'consider_region_elements' => consider_region_elements
44
+ }
45
+
46
+ Percy::CLIWrapper.new.post_poa_screenshots(
47
+ name,
48
+ metadata.session_id,
49
+ metadata.command_executor_url,
50
+ metadata.capabilities,
51
+ metadata.session_capabilities,
52
+ options.merge(additional_options)
53
+ )
54
+ rescue StandardError => e
55
+ log("Could not take Screenshot '#{name}'")
56
+ log(e.message, on_debug: true)
57
+ end
58
+ nil
56
59
  end
57
- nil
58
60
  end
59
61
  end
@@ -1,37 +1,39 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class PercyOptions
4
- IGNORE_ERRORS = 'ignoreErrors'
5
- ENABLED = 'enabled'
6
- PERCY_OPTIONS = ['percy:options', 'percyOptions'].freeze
3
+ module Percy
4
+ class PercyOptions
5
+ IGNORE_ERRORS = 'ignoreErrors'
6
+ ENABLED = 'enabled'
7
+ PERCY_OPTIONS = ['percy:options', 'percyOptions'].freeze
7
8
 
8
- def initialize(capabilities)
9
- @capabilities = capabilities
10
- @capabilities = @capabilities.as_json unless @capabilities.is_a?(Hash)
11
- @percy_options = _parse_percy_options || {}
12
- end
9
+ def initialize(capabilities)
10
+ @capabilities = capabilities
11
+ @capabilities = @capabilities.as_json unless @capabilities.is_a?(Hash)
12
+ @percy_options = _parse_percy_options || {}
13
+ end
13
14
 
14
- def _parse_percy_options
15
- options = PERCY_OPTIONS.map { |key| @capabilities.fetch(key, nil) }
16
- options = if options.any? { |element| !element.nil? }
17
- options[0] || options[1]
18
- else
19
- {}
20
- end
15
+ def _parse_percy_options
16
+ options = PERCY_OPTIONS.map { |key| @capabilities.fetch(key, nil) }
17
+ options = if options.any? { |element| !element.nil? }
18
+ options[0] || options[1]
19
+ else
20
+ {}
21
+ end
21
22
 
22
- if options
23
- options[IGNORE_ERRORS] = @capabilities.fetch("percy.#{IGNORE_ERRORS}", true) unless options.key?(IGNORE_ERRORS)
24
- options[ENABLED] = @capabilities.fetch("percy.#{ENABLED}", true) unless options.key?(ENABLED)
25
- end
23
+ if options
24
+ options[IGNORE_ERRORS] = @capabilities.fetch("percy.#{IGNORE_ERRORS}", true) unless options.key?(IGNORE_ERRORS)
25
+ options[ENABLED] = @capabilities.fetch("percy.#{ENABLED}", true) unless options.key?(ENABLED)
26
+ end
26
27
 
27
- options
28
- end
28
+ options
29
+ end
29
30
 
30
- def ignore_errors
31
- @percy_options.fetch(IGNORE_ERRORS, true)
32
- end
31
+ def ignore_errors
32
+ @percy_options.fetch(IGNORE_ERRORS, true)
33
+ end
33
34
 
34
- def enabled
35
- @percy_options.fetch(ENABLED, true)
35
+ def enabled
36
+ @percy_options.fetch(ENABLED, true)
37
+ end
36
38
  end
37
- end
39
+ end
data/percy/lib/region.rb CHANGED
@@ -1,22 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # lib/region.rb
4
- class Region
5
- attr_accessor :top, :bottom, :left, :right
4
+ module Percy
5
+ class Region
6
+ attr_accessor :top, :bottom, :left, :right
6
7
 
7
- def initialize(top, bottom, left, right)
8
- raise ArgumentError, 'Only Positive integer is allowed!' if [top, bottom, left, right].any?(&:negative?)
9
- raise ArgumentError, 'Invalid ignore region parameters!' if top >= bottom || left >= right
8
+ def initialize(top, bottom, left, right)
9
+ raise ArgumentError, 'Only Positive integer is allowed!' if [top, bottom, left, right].any?(&:negative?)
10
+ raise ArgumentError, 'Invalid ignore region parameters!' if top >= bottom || left >= right
10
11
 
11
- @top = top
12
- @bottom = bottom
13
- @left = left
14
- @right = right
15
- end
12
+ @top = top
13
+ @bottom = bottom
14
+ @left = left
15
+ @right = right
16
+ end
16
17
 
17
- def valid?(screen_height, screen_width)
18
- return false if @top >= screen_height || @bottom > screen_height || @left >= screen_width || @right > screen_width
18
+ def valid?(screen_height, screen_width)
19
+ return false if @top >= screen_height || @bottom > screen_height || @left >= screen_width || @right > screen_width
19
20
 
20
- true
21
+ true
22
+ end
21
23
  end
22
24
  end
data/percy/lib/tile.rb CHANGED
@@ -1,28 +1,30 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Tile
4
- attr_reader :filepath, :status_bar_height, :nav_bar_height, :header_height, :footer_height, :fullscreen, :sha
3
+ module Percy
4
+ class Tile
5
+ attr_reader :filepath, :status_bar_height, :nav_bar_height, :header_height, :footer_height, :fullscreen, :sha
5
6
 
6
- def initialize(status_bar_height, nav_bar_height, header_height, footer_height, filepath: nil, sha: nil,
7
- fullscreen: false)
8
- @filepath = filepath
9
- @status_bar_height = status_bar_height
10
- @nav_bar_height = nav_bar_height
11
- @header_height = header_height
12
- @footer_height = footer_height
13
- @fullscreen = fullscreen
14
- @sha = sha
15
- end
7
+ def initialize(status_bar_height, nav_bar_height, header_height, footer_height, filepath: nil, sha: nil,
8
+ fullscreen: false)
9
+ @filepath = filepath
10
+ @status_bar_height = status_bar_height
11
+ @nav_bar_height = nav_bar_height
12
+ @header_height = header_height
13
+ @footer_height = footer_height
14
+ @fullscreen = fullscreen
15
+ @sha = sha
16
+ end
16
17
 
17
- def to_h
18
- {
19
- 'filepath' => @filepath,
20
- 'status_bar_height' => @status_bar_height,
21
- 'nav_bar_height' => @nav_bar_height,
22
- 'header_height' => @header_height,
23
- 'footer_height' => @footer_height,
24
- 'fullscreen' => @fullscreen,
25
- 'sha' => @sha
26
- }
18
+ def to_h
19
+ {
20
+ 'filepath' => @filepath,
21
+ 'status_bar_height' => @status_bar_height,
22
+ 'nav_bar_height' => @nav_bar_height,
23
+ 'header_height' => @header_height,
24
+ 'footer_height' => @footer_height,
25
+ 'fullscreen' => @fullscreen,
26
+ 'sha' => @sha
27
+ }
28
+ end
27
29
  end
28
30
  end
@@ -4,76 +4,78 @@ require 'json'
4
4
  require_relative 'metadata'
5
5
  require_relative '../lib/cache'
6
6
 
7
- class AndroidMetadata < Metadata
8
- def initialize(driver)
9
- super(driver)
10
- @_bars = nil
11
- @_viewport_rect = capabilities.to_json['viewportRect']
12
- end
7
+ module Percy
8
+ class AndroidMetadata < Percy::Metadata
9
+ def initialize(driver)
10
+ super(driver)
11
+ @_bars = nil
12
+ @_viewport_rect = capabilities.to_json['viewportRect']
13
+ end
13
14
 
14
- def device_screen_size
15
- caps = capabilities
16
- caps = caps.as_json unless caps.is_a?(Hash)
17
- width, height = caps['deviceScreenSize'].split('x')
18
- { 'width' => width.to_i, 'height' => height.to_i }
19
- end
15
+ def device_screen_size
16
+ caps = capabilities
17
+ caps = caps.as_json unless caps.is_a?(Hash)
18
+ width, height = caps['deviceScreenSize'].split('x')
19
+ { 'width' => width.to_i, 'height' => height.to_i }
20
+ end
20
21
 
21
- def get_system_bars
22
- @_bars = Cache.get_cache(session_id, Cache::SYSTEM_BARS)
23
- if @_viewport_rect
24
- begin
25
- @_bars = {
26
- 'statusBar' => { 'height' => @_viewport_rect['top'] },
27
- 'navigationBar' => {
28
- 'height' => device_screen_size['height'] - @_viewport_rect['height'] - @_viewport_rect['top']
22
+ def get_system_bars
23
+ @_bars = Percy::Cache.get_cache(session_id, Percy::Cache::SYSTEM_BARS)
24
+ if @_viewport_rect
25
+ begin
26
+ @_bars = {
27
+ 'statusBar' => { 'height' => @_viewport_rect['top'] },
28
+ 'navigationBar' => {
29
+ 'height' => device_screen_size['height'] - @_viewport_rect['height'] - @_viewport_rect['top']
30
+ }
29
31
  }
30
- }
31
- rescue StandardError
32
- @_bars = nil
32
+ rescue StandardError
33
+ @_bars = nil
34
+ end
33
35
  end
36
+ if @_bars.nil?
37
+ @_bars = driver.get_system_bars
38
+ Percy::Cache.set_cache(session_id, Percy::Cache::SYSTEM_BARS, @_bars)
39
+ end
40
+ @_bars
34
41
  end
35
- if @_bars.nil?
36
- @_bars = driver.get_system_bars
37
- Cache.set_cache(session_id, Cache::SYSTEM_BARS, @_bars)
38
- end
39
- @_bars
40
- end
41
42
 
42
- def status_bar
43
- status_bar = get_system_bars['statusBar']
44
- if status_bar['height'] == 1
45
- response = value_from_devices_info('status_bar', _device_name.upcase, os_version)
46
- return { 'height' => response }
43
+ def status_bar
44
+ status_bar = get_system_bars['statusBar']
45
+ if status_bar['height'] == 1
46
+ response = value_from_devices_info('status_bar', _device_name.upcase, os_version)
47
+ return { 'height' => response }
48
+ end
49
+ status_bar
47
50
  end
48
- status_bar
49
- end
50
51
 
51
- def navigation_bar
52
- navigation_bar = get_system_bars['navigationBar']
53
- if navigation_bar['height'] == 1
54
- response = { 'height' => value_from_devices_info('nav_bar', _device_name.upcase, os_version) }
55
- return response
52
+ def navigation_bar
53
+ navigation_bar = get_system_bars['navigationBar']
54
+ if navigation_bar['height'] == 1
55
+ response = { 'height' => value_from_devices_info('nav_bar', _device_name.upcase, os_version) }
56
+ return response
57
+ end
58
+ navigation_bar
56
59
  end
57
- navigation_bar
58
- end
59
60
 
60
- def viewport
61
- capabilities.to_json['viewportRect']
62
- end
61
+ def viewport
62
+ capabilities.to_json['viewportRect']
63
+ end
63
64
 
64
- def scale_factor
65
- 1
66
- end
65
+ def scale_factor
66
+ 1
67
+ end
67
68
 
68
- def _device_name
69
- if @device_name.nil?
70
- desired_caps = capabilities.to_json['desired'] || {}
71
- device_name = desired_caps['deviceName']
72
- device = desired_caps['device']
73
- device_name ||= device
74
- device_model = capabilities.to_json['deviceModel']
75
- @device_name = device_name || device_model
69
+ def _device_name
70
+ if @device_name.nil?
71
+ desired_caps = capabilities.to_json['desired'] || {}
72
+ device_name = desired_caps['deviceName']
73
+ device = desired_caps['device']
74
+ device_name ||= device
75
+ device_model = capabilities.to_json['deviceModel']
76
+ @device_name = device_name || device_model
77
+ end
78
+ @device_name
76
79
  end
77
- @device_name
78
80
  end
79
81
  end
@@ -2,39 +2,41 @@
2
2
 
3
3
  require_relative '../lib/cache'
4
4
 
5
- class DriverMetadata
6
- def initialize(driver)
7
- @driver = driver
8
- end
5
+ module Percy
6
+ class DriverMetadata
7
+ def initialize(driver)
8
+ @driver = driver
9
+ end
9
10
 
10
- def session_id
11
- @driver.session_id
12
- end
11
+ def session_id
12
+ @driver.session_id
13
+ end
13
14
 
14
- def command_executor_url
15
- url = Cache.get_cache(session_id, Cache::COMMAND_EXECUTOR_URL)
16
- if url.nil?
17
- url = @driver.instance_variable_get(:@bridge).instance_variable_get(:@http).instance_variable_get(:@server_url).to_s
18
- Cache.set_cache(session_id, Cache::COMMAND_EXECUTOR_URL, url)
15
+ def command_executor_url
16
+ url = Percy::Cache.get_cache(session_id, Percy::Cache::COMMAND_EXECUTOR_URL)
17
+ if url.nil?
18
+ url = @driver.instance_variable_get(:@bridge).instance_variable_get(:@http).instance_variable_get(:@server_url).to_s
19
+ Percy::Cache.set_cache(session_id, Percy::Cache::COMMAND_EXECUTOR_URL, url)
20
+ end
21
+ url
19
22
  end
20
- url
21
- end
22
23
 
23
- def capabilities
24
- caps = Cache.get_cache(session_id, Cache::SESSION_CAPABILITIES)
25
- if caps.nil?
26
- caps = @driver.capabilities.dup # In Ruby, use dup to create a shallow copy of the hash
27
- Cache.set_cache(session_id, Cache::SESSION_CAPABILITIES, caps)
24
+ def capabilities
25
+ caps = Percy::Cache.get_cache(session_id, Percy::Cache::SESSION_CAPABILITIES)
26
+ if caps.nil?
27
+ caps = @driver.capabilities.dup # In Ruby, use dup to create a shallow copy of the hash
28
+ Percy::Cache.set_cache(session_id, Percy::Cache::SESSION_CAPABILITIES, caps)
29
+ end
30
+ caps
28
31
  end
29
- caps
30
- end
31
32
 
32
- def session_capabilities
33
- session_caps = Cache.get_cache(session_id, Cache::SESSION_CAPABILITIES)
34
- if session_caps.nil?
35
- session_caps = @driver.desired_capabilities.dup # Assuming there is a desired_capabilities method
36
- Cache.set_cache(session_id, Cache::SESSION_CAPABILITIES, session_caps)
33
+ def session_capabilities
34
+ session_caps = Percy::Cache.get_cache(session_id, Percy::Cache::SESSION_CAPABILITIES)
35
+ if session_caps.nil?
36
+ session_caps = @driver.desired_capabilities.dup # Assuming there is a desired_capabilities method
37
+ Percy::Cache.set_cache(session_id, Percy::Cache::SESSION_CAPABILITIES, session_caps)
38
+ end
39
+ session_caps
37
40
  end
38
- session_caps
39
41
  end
40
42
  end
@@ -3,81 +3,83 @@
3
3
  require_relative 'metadata'
4
4
  require_relative '../lib/cache'
5
5
 
6
- class IOSMetadata < Metadata
7
- attr_reader :_window_size
6
+ module Percy
7
+ class IOSMetadata < Percy::Metadata
8
+ attr_reader :_window_size
8
9
 
9
- def initialize(driver)
10
- super(driver)
11
- @_viewport = {}
12
- @_window_size = {}
13
- end
10
+ def initialize(driver)
11
+ super(driver)
12
+ @_viewport = {}
13
+ @_window_size = {}
14
+ end
14
15
 
15
- def device_screen_size
16
- vp = viewport
17
- height = vp.fetch('top', 0) + vp.fetch('height', 0)
18
- width = vp.fetch('width', 0)
19
- if height.zero? && width.zero?
20
- scale_factor = value_from_devices_info('scale_factor', device_name)
21
- height = get_window_size['height'] * scale_factor
22
- width = get_window_size['width'] * scale_factor
16
+ def device_screen_size
17
+ vp = viewport
18
+ height = vp.fetch('top', 0) + vp.fetch('height', 0)
19
+ width = vp.fetch('width', 0)
20
+ if height.zero? && width.zero?
21
+ scale_factor = value_from_devices_info('scale_factor', device_name)
22
+ height = get_window_size['height'] * scale_factor
23
+ width = get_window_size['width'] * scale_factor
24
+ end
25
+ { 'width' => width, 'height' => height }
23
26
  end
24
- { 'width' => width, 'height' => height }
25
- end
26
27
 
27
- def status_bar
28
- height = 0
29
- view_port = viewport
30
- if view_port.fetch('top', 0) != 0
31
- height = view_port['top']
32
- else
33
- scale_factor = value_from_devices_info('scale_factor', device_name)
34
- status_bar_height = value_from_devices_info('status_bar', device_name)
35
- height = status_bar_height.to_i * scale_factor.to_i
28
+ def status_bar
29
+ height = 0
30
+ view_port = viewport
31
+ if view_port.fetch('top', 0) != 0
32
+ height = view_port['top']
33
+ else
34
+ scale_factor = value_from_devices_info('scale_factor', device_name)
35
+ status_bar_height = value_from_devices_info('status_bar', device_name)
36
+ height = status_bar_height.to_i * scale_factor.to_i
37
+ end
38
+ { 'height' => height }
36
39
  end
37
- { 'height' => height }
38
- end
39
40
 
40
- def navigation_bar
41
- { 'height' => 0 }
42
- end
41
+ def navigation_bar
42
+ { 'height' => 0 }
43
+ end
43
44
 
44
- def get_window_size
45
- @_window_size = Cache.get_cache(session_id, Cache::WINDOW_SIZE)
46
- unless @_window_size
47
- @_window_size = driver.get_window_size
48
- Cache.set_cache(session_id, Cache::WINDOW_SIZE, @_window_size)
45
+ def get_window_size
46
+ @_window_size = Percy::Cache.get_cache(session_id, Percy::Cache::WINDOW_SIZE)
47
+ unless @_window_size
48
+ @_window_size = driver.get_window_size
49
+ Percy::Cache.set_cache(session_id, Percy::Cache::WINDOW_SIZE, @_window_size)
50
+ end
51
+ @_window_size
49
52
  end
50
- @_window_size
51
- end
52
53
 
53
- def viewport
54
- @_viewport = Cache.get_cache(session_id, Cache::VIEWPORT)
55
- if @_viewport.nil? || (@_viewport.is_a?(Hash) && @_viewport.empty?)
56
- begin
57
- @_viewport = execute_script('mobile: viewportRect')
58
- Cache.set_cache(session_id, Cache::VIEWPORT, @_viewport)
59
- rescue StandardError
60
- log('Could not use viewportRect; using static config', on_debug: true)
61
- # setting `viewport` as empty hash so that it's not nil anymore
62
- Cache.set_cache(session_id, Cache::VIEWPORT, {})
54
+ def viewport
55
+ @_viewport = Percy::Cache.get_cache(session_id, Percy::Cache::VIEWPORT)
56
+ if @_viewport.nil? || (@_viewport.is_a?(Hash) && @_viewport.empty?)
57
+ begin
58
+ @_viewport = execute_script('mobile: viewportRect')
59
+ Percy::Cache.set_cache(session_id, Percy::Cache::VIEWPORT, @_viewport)
60
+ rescue StandardError
61
+ log('Could not use viewportRect; using static config', on_debug: true)
62
+ # setting `viewport` as empty hash so that it's not nil anymore
63
+ Percy::Cache.set_cache(session_id, Percy::Cache::VIEWPORT, {})
64
+ end
63
65
  end
66
+ @_viewport || { 'top' => 0, 'height' => 0, 'width' => 0 }
64
67
  end
65
- @_viewport || { 'top' => 0, 'height' => 0, 'width' => 0 }
66
- end
67
68
 
68
- def device_name
69
- if @device_name.nil?
70
- caps = capabilities
71
- caps = caps.as_json unless caps.is_a?(Hash)
72
- @device_name = caps['deviceName']
69
+ def device_name
70
+ if @device_name.nil?
71
+ caps = capabilities
72
+ caps = caps.as_json unless caps.is_a?(Hash)
73
+ @device_name = caps['deviceName']
74
+ end
75
+ @device_name
73
76
  end
74
- @device_name
75
- end
76
77
 
77
- def scale_factor
78
- scale_factor = value_from_devices_info('scale_factor', device_name)
79
- return viewport['width'] / get_window_size['width'] if scale_factor.zero?
78
+ def scale_factor
79
+ scale_factor = value_from_devices_info('scale_factor', device_name)
80
+ return viewport['width'] / get_window_size['width'] if scale_factor.zero?
80
81
 
81
- scale_factor
82
+ scale_factor
83
+ end
82
84
  end
83
- end
85
+ end