percy-appium-app 0.0.1 → 0.0.2.pre.beta.0

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,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
@@ -7,102 +7,104 @@ require_relative '../common/common'
7
7
  DEVICE_INFO_FILE_PATH = File.join(File.dirname(__FILE__), '..', 'configs', 'devices.json')
8
8
  DEVICE_INFO = JSON.parse(File.read(DEVICE_INFO_FILE_PATH))
9
9
 
10
- class Metadata
11
- attr_reader :driver, :device_info
12
- attr_accessor :device_name, :os_version, :device_info
13
-
14
- def initialize(driver)
15
- @driver = driver
16
- @device_name = nil
17
- @os_version = nil
18
- @device_info = {}
19
- end
20
-
21
- def capabilities
22
- caps = driver.capabilities
23
- caps = caps.as_json unless caps.is_a?(Hash)
24
- caps
25
- end
10
+ module Percy
11
+ class Metadata
12
+ attr_reader :driver, :device_info
13
+ attr_accessor :device_name, :os_version, :device_info
14
+
15
+ def initialize(driver)
16
+ @driver = driver
17
+ @device_name = nil
18
+ @os_version = nil
19
+ @device_info = {}
20
+ end
26
21
 
27
- def session_id
28
- driver.session_id
29
- end
22
+ def capabilities
23
+ caps = driver.capabilities
24
+ caps = caps.as_json unless caps.is_a?(Hash)
25
+ caps
26
+ end
30
27
 
31
- def os_name
32
- capabilities['platformName']
33
- end
28
+ def session_id
29
+ driver.session_id
30
+ end
34
31
 
35
- def os_version
36
- caps = capabilities
37
- caps = caps.as_json unless caps.is_a?(Hash)
32
+ def os_name
33
+ capabilities['platformName']
34
+ end
38
35
 
39
- os_version = caps['os_version'] || caps['platformVersion'] || ''
40
- os_version = @os_version || os_version
41
- begin
42
- os_version.to_f.to_i.to_s
43
- rescue StandardError
44
- ''
36
+ def os_version
37
+ caps = capabilities
38
+ caps = caps.as_json unless caps.is_a?(Hash)
39
+
40
+ os_version = caps['os_version'] || caps['platformVersion'] || ''
41
+ os_version = @os_version || os_version
42
+ begin
43
+ os_version.to_f.to_i.to_s
44
+ rescue StandardError
45
+ ''
46
+ end
45
47
  end
46
- end
47
48
 
48
- def remote_url
49
- driver.instance_variable_get(:@bridge).instance_variable_get(:@http).instance_variable_get(:@server_url).to_s
50
- end
49
+ def remote_url
50
+ driver.instance_variable_get(:@bridge).instance_variable_get(:@http).instance_variable_get(:@server_url).to_s
51
+ end
51
52
 
52
- def get_orientation(**kwargs)
53
- orientation = kwargs[:orientation] || capabilities['orientation'] || 'PORTRAIT'
54
- orientation = orientation.downcase
55
- orientation = orientation == 'auto' ? _orientation : orientation
56
- orientation.upcase
57
- end
53
+ def get_orientation(**kwargs)
54
+ orientation = kwargs[:orientation] || capabilities['orientation'] || 'PORTRAIT'
55
+ orientation = orientation.downcase
56
+ orientation = orientation == 'auto' ? _orientation : orientation
57
+ orientation.upcase
58
+ end
58
59
 
59
- def _orientation
60
- driver.orientation.downcase
61
- end
60
+ def _orientation
61
+ driver.orientation.downcase
62
+ end
62
63
 
63
- def device_screen_size
64
- raise NotImplementedError
65
- end
64
+ def device_screen_size
65
+ raise NotImplementedError
66
+ end
66
67
 
67
- def _device_name
68
- raise NotImplementedError
69
- end
68
+ def _device_name
69
+ raise NotImplementedError
70
+ end
70
71
 
71
- def status_bar
72
- raise NotImplementedError
73
- end
72
+ def status_bar
73
+ raise NotImplementedError
74
+ end
74
75
 
75
- def status_bar_height
76
- status_bar['height']
77
- end
76
+ def status_bar_height
77
+ status_bar['height']
78
+ end
78
79
 
79
- def navigation_bar
80
- raise NotImplementedError
81
- end
80
+ def navigation_bar
81
+ raise NotImplementedError
82
+ end
82
83
 
83
- def navigation_bar_height
84
- navigation_bar['height']
85
- end
84
+ def navigation_bar_height
85
+ navigation_bar['height']
86
+ end
86
87
 
87
- def viewport
88
- raise NotImplementedError
89
- end
88
+ def viewport
89
+ raise NotImplementedError
90
+ end
90
91
 
91
- def execute_script(command)
92
- driver.execute_script(command)
93
- end
92
+ def execute_script(command)
93
+ driver.execute_script(command)
94
+ end
94
95
 
95
- def value_from_devices_info(key, device_name, os_version = nil)
96
- device_info = get_device_info(device_name)
97
- device_info = device_info[os_version] || {} if os_version
98
- device_info[key].to_i || 0
99
- end
96
+ def value_from_devices_info(key, device_name, os_version = nil)
97
+ device_info = get_device_info(device_name)
98
+ device_info = device_info[os_version] || {} if os_version
99
+ device_info[key].to_i || 0
100
+ end
100
101
 
101
- def get_device_info(device_name)
102
- return @device_info unless @device_info.empty?
102
+ def get_device_info(device_name)
103
+ return @device_info unless @device_info.empty?
103
104
 
104
- @device_info = DEVICE_INFO[device_name.downcase] || {}
105
- log("#{device_name.downcase} does not exist in config.") if @device_info.empty?
106
- @device_info
105
+ @device_info = DEVICE_INFO[device_name.downcase] || {}
106
+ log("#{device_name.downcase} does not exist in config.") if @device_info.empty?
107
+ @device_info
108
+ end
107
109
  end
108
110
  end
@@ -4,18 +4,20 @@ require_relative '../exceptions/exceptions'
4
4
  require_relative 'android_metadata'
5
5
  require_relative 'ios_metadata'
6
6
 
7
- class MetadataResolver
8
- def self.resolve(driver)
9
- capabilities = driver.capabilities
10
- capabilities = capabilities.as_json unless capabilities.is_a?(Hash)
11
- platform_name = capabilities.fetch('platformName', '').downcase
12
- case platform_name
13
- when 'android'
14
- AndroidMetadata.new(driver)
15
- when 'ios'
16
- IOSMetadata.new(driver)
17
- else
18
- raise PlatformNotSupported
7
+ module Percy
8
+ class MetadataResolver
9
+ def self.resolve(driver)
10
+ capabilities = driver.capabilities
11
+ capabilities = capabilities.as_json unless capabilities.is_a?(Hash)
12
+ platform_name = capabilities.fetch('platformName', '').downcase
13
+ case platform_name
14
+ when 'android'
15
+ Percy::AndroidMetadata.new(driver)
16
+ when 'ios'
17
+ Percy::IOSMetadata.new(driver)
18
+ else
19
+ raise PlatformNotSupported
20
+ end
19
21
  end
20
22
  end
21
23
  end
@@ -7,14 +7,14 @@ require_relative 'lib/cli_wrapper'
7
7
  require_relative 'environment'
8
8
 
9
9
  def percy_screenshot(driver, name, **kwargs)
10
- return nil unless CLIWrapper.percy_enabled?
10
+ return nil unless Percy::CLIWrapper.percy_enabled?
11
11
 
12
12
  app_percy = nil
13
- provider_class = Environment.session_type == 'automate' ? PercyOnAutomate : AppPercy
13
+ provider_class = Percy::Environment.session_type == 'automate' ? Percy::PercyOnAutomate : Percy::AppPercy
14
14
  app_percy = provider_class.new(driver)
15
15
  app_percy.screenshot(name, **kwargs)
16
16
  rescue StandardError => e
17
- CLIWrapper.post_failed_event(e.to_s)
17
+ Percy::CLIWrapper.post_failed_event(e.to_s)
18
18
  log("Could not take screenshot \"#{name}\"")
19
19
  raise e if app_percy && !app_percy.percy_options.ignore_errors
20
20