bugsnag-maze-runner 8.7.1 → 8.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc04491f5a2ab05764c7622bb6d863770d693401a4fa3886ebd6b61e9de8abf5
4
- data.tar.gz: d312dd4d44a914d5318c70064ab7c3418d89ac825ad23e946e242009446df9d8
3
+ metadata.gz: 03c53d6f8594ce559c2f2fb6296617d9b9f18227220b3a1148f297de154b8d60
4
+ data.tar.gz: 3ce0a4585f6caac3ed1291f8a9ca8921926dbe551dd298ea6d8c8299136a67c5
5
5
  SHA512:
6
- metadata.gz: 5fb2614e973afa9c02d39cf5bb7d61bec9230872a46c0daea9817a36974c2dee5daeeaef0bcc26ba7c679f976e7ea1ee008188d5c35e3b6a9b2dbd00b2c6bd05
7
- data.tar.gz: ba90b23423c04f27c6d4def29a85a73fe07ae106f8dbbb8a32aa0d76c6d3c16b0428878913f4cf3010694ce91c72ce409da195b2db10a4561a8194eb9303b629
6
+ metadata.gz: cf7ef0e05814ee96ddcc363de952c0f56cce6c98721ef3bf79ad7ade296d7390d5dc513efb1ac83645aba734a957c685fea9290d4980cf0de5986544340d34ae
7
+ data.tar.gz: 7a967300d0dfcba750dfbce12c31a70e3793d98c822d35de70ec9838658e8436bad3962668bd70a50ff087236c74b174332b899406e906f42cbdf2475b643aea
@@ -21,6 +21,7 @@ module Maze
21
21
  'pipeline': ENV['BUILDKITE_PIPELINE_NAME'],
22
22
  'repo': ENV['BUILDKITE_REPO'],
23
23
  'build url': ENV['BUILDKITE_BUILD_URL'],
24
+ 'job url': ENV['BUILDKITE_BUILD_URL'] + "#" + ENV['BUILDKITE_JOB_ID'],
24
25
  'branch': ENV['BUILDKITE_BRANCH'],
25
26
  'builder': ENV['BUILDKITE_BUILD_CREATOR'],
26
27
  'message': ENV['BUILDKITE_MESSAGE'],
@@ -30,10 +30,11 @@ module Maze
30
30
 
31
31
  def device_capabilities
32
32
  config = Maze.config
33
- prefix = BitBarDevices.caps_prefix(config.appium_version)
34
33
  capabilities = {
35
- "#{prefix}noReset" => true,
36
- "#{prefix}newCommandTimeout" => 600,
34
+ 'appium:options' => {
35
+ 'noReset' => true,
36
+ 'newCommandTimeout' => 600
37
+ },
37
38
  'bitbar:options' => {
38
39
  # Some capabilities probably belong in the top level
39
40
  # of the hash, but BitBar picks them up from here.
@@ -41,18 +41,11 @@ module Maze
41
41
  Maze.config.os = platform
42
42
  Maze.config.os_version = platform_version.to_f.floor
43
43
 
44
- prefix = caps_prefix(Maze.config.appium_version)
45
-
46
44
  case platform
47
45
  when 'android'
48
- automation_name = if platform_version.start_with?('5')
49
- 'UiAutomator1'
50
- else
51
- 'UiAutomator2'
52
- end
53
- make_android_hash(device_name, automation_name, prefix)
46
+ make_android_hash(device_name)
54
47
  when 'ios'
55
- make_ios_hash(device_name, prefix)
48
+ make_ios_hash(device_name)
56
49
  else
57
50
  throw "Invalid device platform specified #{platform}"
58
51
  end
@@ -98,34 +91,35 @@ module Maze
98
91
  end
99
92
  end
100
93
 
101
- def make_android_hash(device, automation_name, prefix='appium:')
94
+ def make_android_hash(device)
102
95
  hash = {
103
- 'automationName' => automation_name,
104
96
  'platformName' => 'Android',
105
97
  'deviceName' => 'Android Phone',
98
+ 'appium:options' => {
99
+ 'automationName' => 'UiAutomator2',
100
+ 'autoGrantPermissions' => true,
101
+ 'uiautomator2ServerInstallTimeout' => 60000
102
+ },
106
103
  'bitbar:options' => {
107
- "#{prefix}autoGrantPermissions" => true,
108
104
  'device' => device,
109
105
  }
110
106
  }
111
107
  hash.freeze
112
108
  end
113
109
 
114
- def make_ios_hash(device, prefix='appium:')
110
+ def make_ios_hash(device)
115
111
  {
116
- 'automationName' => 'XCUITest',
117
- 'deviceName' => 'iPhone device',
118
112
  'platformName' => 'iOS',
119
- "#{prefix}shouldTerminateApp" => 'true',
113
+ 'deviceName' => 'iPhone device',
114
+ 'appium:options' => {
115
+ 'automationName' => 'XCUITest',
116
+ 'shouldTerminateApp' => 'true'
117
+ },
120
118
  'bitbar:options' => {
121
119
  'device' => device
122
120
  }
123
121
  }.freeze
124
122
  end
125
-
126
- def caps_prefix(appium_version)
127
- appium_version.nil? || (appium_version.to_i >= 2) ? 'appium:' : ''
128
- end
129
123
  end
130
124
  end
131
125
  end
@@ -79,6 +79,7 @@ module Maze
79
79
  'ANDROID_7' => make_android_hash('Google Pixel', '7.1'),
80
80
 
81
81
  # iOS devices
82
+ 'IOS_17' => make_ios_hash('iPhone 15', '17'),
82
83
  'IOS_16' => make_ios_hash('iPhone 14', '16'),
83
84
  'IOS_15' => make_ios_hash('iPhone 11 Pro', '15'),
84
85
  'IOS_14' => make_ios_hash('iPhone 11', '14'),
@@ -110,6 +111,9 @@ module Maze
110
111
  add_android 'Samsung Galaxy S8', '7.0', hash # ANDROID_7_0_SAMSUNG_GALAXY_S8
111
112
 
112
113
  # Specific iOS devices
114
+ add_ios 'iPhone 15', '17.0', hash # IOS_17_0_IPHONE_15
115
+ add_ios 'iPhone 12 Pro', '17.0', hash # IOS_17_0_IPHONE_12_PRO
116
+
113
117
  add_ios 'iPhone 14 Plus', '16.0', hash # IOS_16_0_IPHONE_14_PLUS
114
118
  add_ios 'iPhone 14 Pro', '16.0', hash # IOS_16_0_IPHONE_14_PRO
115
119
  add_ios 'iPhone 14 Pro Max', '16.0', hash # IOS_16_0_IPHONE_14_PRO_MAX
@@ -1,22 +1,14 @@
1
- chrome_latest:
1
+ chrome:
2
2
  platform: 'Windows'
3
3
  osVersion: '11'
4
4
  browserName: 'chrome'
5
- version: 'latest'
6
5
  resolution: '1920x1080'
7
6
 
8
- chrome_108:
9
- platform: 'Windows'
10
- osVersion: '11'
11
- browserName: 'chrome'
12
- version: '108'
13
- resolution: '1920x1080'
14
-
15
- chrome_107:
7
+ chrome_latest:
16
8
  platform: 'Windows'
17
9
  osVersion: '11'
18
10
  browserName: 'chrome'
19
- version: '107'
11
+ version: 'latest'
20
12
  resolution: '1920x1080'
21
13
 
22
14
  chrome_72:
@@ -33,53 +25,17 @@ chrome_43:
33
25
  version: '43'
34
26
  resolution: '1920x1080'
35
27
 
36
- firefox_latest:
37
- platform: 'Windows'
38
- osVersion: '11'
39
- browserName: 'firefox'
40
- version: 'latest'
41
- resolution: '1920x1080'
42
-
43
- firefox_107:
28
+ firefox:
44
29
  platform: 'Windows'
45
30
  osVersion: '11'
46
31
  browserName: 'firefox'
47
- version: '107'
48
32
  resolution: '1920x1080'
49
33
 
50
- firefox_106:
51
- platform: 'Windows'
52
- osVersion: '11'
53
- browserName: 'firefox'
54
- version: '106'
55
- resolution: '1920x1080'
56
-
57
- firefox_105:
58
- platform: 'Windows'
59
- osVersion: '11'
60
- browserName: 'firefox'
61
- version: '105'
62
- resolution: '1920x1080'
63
-
64
- firefox_104:
65
- platform: 'Windows'
66
- osVersion: '11'
67
- browserName: 'firefox'
68
- version: '104'
69
- resolution: '1920x1080'
70
-
71
- firefox_103:
72
- platform: 'Windows'
73
- osVersion: '11'
74
- browserName: 'firefox'
75
- version: '103'
76
- resolution: '1920x1080'
77
-
78
- firefox_102:
34
+ firefox_latest:
79
35
  platform: 'Windows'
80
36
  osVersion: '11'
81
37
  browserName: 'firefox'
82
- version: '102'
38
+ version: 'latest'
83
39
  resolution: '1920x1080'
84
40
 
85
41
  firefox_78:
@@ -96,6 +52,12 @@ ie_11:
96
52
  version: '11'
97
53
  resolution: '1920x1080'
98
54
 
55
+ edge:
56
+ platform: 'Windows'
57
+ osVersion: '11'
58
+ browserName: 'MicrosoftEdge'
59
+ resolution: '1920x1080'
60
+
99
61
  edge_latest:
100
62
  platform: 'Windows'
101
63
  osVersion: '11'
@@ -8,8 +8,10 @@ module Maze
8
8
  capabilities['bitbar_apiKey'] = config.access_key
9
9
  browsers = YAML.safe_load(File.read("#{__dir__}/bb_browsers.yml"))
10
10
  capabilities.merge! BitBarClientUtils.dashboard_capabilities
11
+ capabilities['version'] = config.browser_version unless config.browser_version.nil?
11
12
  capabilities.merge! browsers[config.browser]
12
13
  capabilities.merge! JSON.parse(config.capabilities_option)
14
+ capabilities['bitbar:options']['testTimeout'] = 900
13
15
  config.capabilities = capabilities
14
16
 
15
17
  if Maze::Client::BitBarClientUtils.use_local_tunnel?
@@ -20,6 +22,8 @@ module Maze
20
22
  end
21
23
 
22
24
  selenium_url = Maze.config.selenium_server_url
25
+
26
+ $logger.trace "Starting Selenium driver with capabilities: #{config.capabilities.to_json}"
23
27
  Maze.driver = Maze::Driver::Browser.new :remote, selenium_url, config.capabilities
24
28
  Maze.driver.start_driver
25
29
  end
@@ -138,6 +138,12 @@ ios_16:
138
138
  osVersion: "16"
139
139
  realMobile: true
140
140
 
141
+ ios_17:
142
+ device: "iPhone 15"
143
+ os: "ios"
144
+ osVersion: "17"
145
+ realMobile: true
146
+
141
147
  android_4:
142
148
  browserName: "Android Browser"
143
149
  device: "Google Nexus 5"
@@ -134,6 +134,9 @@ module Maze
134
134
  # Test browser type
135
135
  attr_accessor :browser
136
136
 
137
+ # Test browser version
138
+ attr_accessor :browser_version
139
+
137
140
  # Appium version to use
138
141
  attr_accessor :appium_version
139
142
 
@@ -4,11 +4,11 @@ module Maze
4
4
  class MacosUtils
5
5
  class << self
6
6
  def capture_screen(scenario)
7
- path = File.join(File.join(Dir.pwd, 'maze_output'), 'failed', Maze::Helper.to_friendly_filename(scenario.name))
8
- FileUtils.makedirs(path)
7
+ path = Maze::MazeOutput.new(scenario).output_folder
8
+ FileUtils.makedirs(path) unless File.exist?(path)
9
9
 
10
- system("/usr/sbin/screencapture #{path}/#{Maze::Helper.to_friendly_filename(scenario.name)}-screenshot.jpg")
10
+ system('/usr/sbin/screencapture', "#{path}/#{Maze::Helper.to_friendly_filename(scenario.name)}-screenshot.jpg")
11
11
  end
12
12
  end
13
13
  end
14
- end
14
+ end
@@ -97,8 +97,6 @@ module Maze
97
97
  end
98
98
  end
99
99
 
100
- private
101
-
102
100
  # Determines the output folder for the scenario
103
101
  def output_folder
104
102
  folder1 = File.join(Dir.pwd, 'maze_output')
@@ -122,6 +122,10 @@ module Maze
122
122
  'Browser to use (an entry in <farm>_browsers.yml)',
123
123
  short: :none,
124
124
  type: :string
125
+ opt Option::BROWSER_VERSION,
126
+ 'Browser version to use (applies to entries in <farm>_browsers.yml that do not include a version)',
127
+ short: :none,
128
+ type: :string
125
129
  opt Option::USERNAME,
126
130
  'Device farm username. Consumes env var from environment based on farm set',
127
131
  short: :none,
@@ -83,6 +83,7 @@ module Maze
83
83
  if device_option.nil? || device_option.empty?
84
84
  # BitBar Web
85
85
  config.browser = options[Maze::Option::BROWSER]
86
+ config.browser_version = options[Maze::Option::BROWSER_VERSION]
86
87
  else
87
88
  # BitBar Devices
88
89
  if device_option.is_a?(Array)
@@ -99,7 +99,11 @@ module Maze
99
99
  elsif browser
100
100
  browsers = YAML.safe_load(File.read("#{__dir__}/../client/selenium/bb_browsers.yml"))
101
101
 
102
- unless browsers.include? browser
102
+ if browsers.include? browser
103
+ if options[Option::BROWSER_VERSION].nil? && !browsers[browser].include?('version')
104
+ errors << "--#{Option::BROWSER_VERSION} must be specified for browser '#{browser}'"
105
+ end
106
+ else
103
107
  browser_list = browsers.keys.join ', '
104
108
  errors << "Browser type '#{browser}' unknown on BitBar. Must be one of: #{browser_list}."
105
109
  end
data/lib/maze/option.rb CHANGED
@@ -24,6 +24,7 @@ module Maze
24
24
  APP_BUNDLE_ID = 'app-bundle-id'
25
25
  APPIUM_VERSION = 'appium-version'
26
26
  BROWSER = 'browser'
27
+ BROWSER_VERSION = 'browser-version'
27
28
  DEVICE = 'device'
28
29
  LIST_DEVICES = 'list-devices'
29
30
  OS = 'os'
data/lib/maze.rb CHANGED
@@ -7,7 +7,7 @@ require_relative 'maze/timers'
7
7
  # Glues the various parts of MazeRunner together that need to be accessed globally,
8
8
  # providing an alternative to the proliferation of global variables or singletons.
9
9
  module Maze
10
- VERSION = '8.7.1'
10
+ VERSION = '8.9.0'
11
11
 
12
12
  class << self
13
13
  attr_accessor :check, :driver, :internal_hooks, :mode, :start_time, :dynamic_retry, :public_address,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bugsnag-maze-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.7.1
4
+ version: 8.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Kirkland
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-27 00:00:00.000000000 Z
11
+ date: 2023-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber