bugsnag-maze-runner 9.26.0 → 9.27.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.
- checksums.yaml +4 -4
- data/bin/maze-runner +1 -0
- data/lib/features/steps/app_automator_steps.rb +10 -2
- data/lib/maze/api/appium/device_manager.rb +17 -0
- data/lib/maze/api/appium/ui_manager.rb +69 -0
- data/lib/maze.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9562b6754ae5e11ad6b47b979c6d36dac48df518a839b686db74342e6e8eea19
|
4
|
+
data.tar.gz: 94a85fd0ca95e2b66d9a6140ced8705adfb43c560ea7ad4a7d4d0d6bd42e460c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b68a919b41128a620c466953bd5a15cf9f17ee5f7e25c25e0e97e268b18ef84a282ba2efd7c44bf4dea82532c27c65d72e49ad99616aafd2f0d61c2a8e23c39
|
7
|
+
data.tar.gz: cfa2a623bcb0b80a622e6c0e8a6ce5b62910e59e6ac0ca6c5b46fbaa5c4f18b576260afadf82ea7fd9b373955f54ed5a1a1558bbf1e3f167a006d11cfe334179
|
data/bin/maze-runner
CHANGED
@@ -15,6 +15,7 @@ require_relative '../lib/maze/api/appium/manager'
|
|
15
15
|
require_relative '../lib/maze/api/appium/app_manager'
|
16
16
|
require_relative '../lib/maze/api/appium/device_manager'
|
17
17
|
require_relative '../lib/maze/api/appium/file_manager'
|
18
|
+
require_relative '../lib/maze/api/appium/ui_manager'
|
18
19
|
require_relative '../lib/maze/api/cucumber/scenario'
|
19
20
|
require_relative '../lib/maze/api/exit_code'
|
20
21
|
require_relative '../lib/maze/bugsnag_config'
|
@@ -5,7 +5,7 @@
|
|
5
5
|
#
|
6
6
|
# @step_input element_id [String] The locator id
|
7
7
|
Given('the element {string} is present') do |element_id|
|
8
|
-
present = Maze.
|
8
|
+
present = Maze::Api::Appium::UiManager.new.wait_for_element(element_id)
|
9
9
|
raise Maze::Error::AppiumElementNotFoundError.new("The element #{element_id} could not be found", element_id) unless present
|
10
10
|
end
|
11
11
|
|
@@ -24,7 +24,15 @@ end
|
|
24
24
|
#
|
25
25
|
# @step_input element_id [String] The locator id
|
26
26
|
When('I click the element {string}') do |element_id|
|
27
|
-
Maze.
|
27
|
+
Maze::Api::Appium::UiManager.new.click_element(element_id)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Clicks a given element if present
|
31
|
+
# Requires a running Appium driver
|
32
|
+
#
|
33
|
+
# @step_input element_id [String] The locator id
|
34
|
+
When('I click the element {string} if present') do |element_id|
|
35
|
+
Maze::Api::Appium::UiManager.new.click_element_if_present(element_id)
|
28
36
|
end
|
29
37
|
|
30
38
|
# Sends the app to the background indefinitely
|
@@ -40,6 +40,23 @@ module Maze
|
|
40
40
|
raise e
|
41
41
|
end
|
42
42
|
|
43
|
+
# Gets logs from the device.
|
44
|
+
# @param log_type [String] The type pf log to get as recognised by Appium, such as 'syslog'
|
45
|
+
#
|
46
|
+
# @returns [Array, nil] Array of Selenium::WebDriver::LogEntry, or nil if the driver has failed
|
47
|
+
def get_log(log_type)
|
48
|
+
if failed_driver?
|
49
|
+
$logger.error 'Cannot get logs - Appium driver failed.'
|
50
|
+
return nil
|
51
|
+
end
|
52
|
+
|
53
|
+
@driver.get_log(log_type)
|
54
|
+
rescue Selenium::WebDriver::Error::ServerError => e
|
55
|
+
# Assume the remote appium session has stopped, so crash out of the session
|
56
|
+
fail_driver(e.message)
|
57
|
+
raise e
|
58
|
+
end
|
59
|
+
|
43
60
|
# Sets the rotation of the device.
|
44
61
|
# @param orientation [Symbol] The orientation to set the device to, :portrait or :landscape
|
45
62
|
# @returns [Boolean] Success status
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require_relative '../../helper'
|
2
|
+
require_relative './manager'
|
3
|
+
|
4
|
+
module Maze
|
5
|
+
module Api
|
6
|
+
module Appium
|
7
|
+
# Provides operations for working with the app.
|
8
|
+
class UiManager < Maze::Api::Appium::Manager
|
9
|
+
|
10
|
+
# Checks for an element, waiting until it is present or the method times out
|
11
|
+
#
|
12
|
+
# @param element_id [String] the element to search for
|
13
|
+
# @param timeout [Integer] the maximum time to wait for an element to be present in seconds
|
14
|
+
# @param retry_if_stale [Boolean] enables the method to retry acquiring the element if a StaleObjectException occurs
|
15
|
+
#
|
16
|
+
# @returns [Boolean] Whether the operation was successfully performed
|
17
|
+
def wait_for_element(element_id, timeout = 15, retry_if_stale = true)
|
18
|
+
if failed_driver?
|
19
|
+
$logger.error 'Cannot wait for element - Appium driver failed.'
|
20
|
+
return false
|
21
|
+
end
|
22
|
+
|
23
|
+
@driver.wait_for_element(element_id, timeout, retry_if_stale)
|
24
|
+
rescue Selenium::WebDriver::Error::ServerError => e
|
25
|
+
# Assume the remote appium session has stopped, so crash out of the session
|
26
|
+
fail_driver(e.message)
|
27
|
+
raise e
|
28
|
+
end
|
29
|
+
|
30
|
+
# Clicks a given element.
|
31
|
+
#
|
32
|
+
# @param element_id [String] the element to click
|
33
|
+
#
|
34
|
+
# @returns [Boolean] Whether the operation was successfully performed
|
35
|
+
def click_element(element_id)
|
36
|
+
if failed_driver?
|
37
|
+
$logger.error 'Cannot click element - Appium driver failed.'
|
38
|
+
return false
|
39
|
+
end
|
40
|
+
|
41
|
+
@driver.click_element(element_id)
|
42
|
+
true
|
43
|
+
rescue Selenium::WebDriver::Error::ServerError => e
|
44
|
+
# Assume the remote appium session has stopped, so crash out of the session
|
45
|
+
fail_driver(e.message)
|
46
|
+
raise e
|
47
|
+
end
|
48
|
+
|
49
|
+
# Clicks a given element if present.
|
50
|
+
#
|
51
|
+
# @param element_id [String] the element to click
|
52
|
+
#
|
53
|
+
# @returns [Boolean] Whether the element was clicked
|
54
|
+
def click_element_if_present(element_id)
|
55
|
+
if failed_driver?
|
56
|
+
$logger.error 'Cannot click element - Appium driver failed.'
|
57
|
+
return false
|
58
|
+
end
|
59
|
+
|
60
|
+
@driver.click_element_if_present(element_id)
|
61
|
+
rescue Selenium::WebDriver::Error::ServerError => e
|
62
|
+
# Assume the remote appium session has stopped, so crash out of the session
|
63
|
+
fail_driver(e.message)
|
64
|
+
raise e
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/maze.rb
CHANGED
@@ -8,7 +8,7 @@ require_relative 'maze/timers'
|
|
8
8
|
# providing an alternative to the proliferation of global variables or singletons.
|
9
9
|
module Maze
|
10
10
|
|
11
|
-
VERSION = '9.
|
11
|
+
VERSION = '9.27.0'
|
12
12
|
|
13
13
|
class << self
|
14
14
|
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: 9.
|
4
|
+
version: 9.27.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: 2025-03-
|
11
|
+
date: 2025-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -444,6 +444,7 @@ files:
|
|
444
444
|
- lib/maze/api/appium/device_manager.rb
|
445
445
|
- lib/maze/api/appium/file_manager.rb
|
446
446
|
- lib/maze/api/appium/manager.rb
|
447
|
+
- lib/maze/api/appium/ui_manager.rb
|
447
448
|
- lib/maze/api/cucumber/scenario.rb
|
448
449
|
- lib/maze/api/exit_code.rb
|
449
450
|
- lib/maze/appium_server.rb
|