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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abe6839c118433a185e262346bb616d17f0b2b90072eeb5962b25bf25c9a5f22
4
- data.tar.gz: bc1741d029fba29158f2508ce191735c983ee216a2c6aa9beced5c2c7b908062
3
+ metadata.gz: 9562b6754ae5e11ad6b47b979c6d36dac48df518a839b686db74342e6e8eea19
4
+ data.tar.gz: 94a85fd0ca95e2b66d9a6140ced8705adfb43c560ea7ad4a7d4d0d6bd42e460c
5
5
  SHA512:
6
- metadata.gz: 74da6521237c5610846964b81407ab8316d1eebac30a7347cfd598e29508731e3ed0549679c8d08ccde20f2c08ae135c29224009ecfb45f8678237e044b6bd88
7
- data.tar.gz: 3c852d53478a052d0950d9c35174c0ada1d223d2f7208fa98024547d6bc51e6d5bd4596d83afb332b8a85f505067c6e94e6cebfeaed623350a9cd3135a86d99e
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.driver.wait_for_element(element_id)
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.driver.click_element(element_id)
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.26.0'
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.26.0
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-18 00:00:00.000000000 Z
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