appium_failure_helper 1.2.1 → 1.2.2

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: a9ebc0792a697883dd720d9a4a8da3a84808ad79489ab901c452f619c1ecc3c9
4
- data.tar.gz: 7d626904a8ccd4f968c0d67812020994e69c743f3746250376cca3676bcacd0f
3
+ metadata.gz: 86e61e520b2e2cce56bebabf72db737fc6a03ff65560c19143cc587f5fd2dea0
4
+ data.tar.gz: 2af329dc1706e62a87d1aed5375db6deca8723856dc6256d99175337c30f2b28
5
5
  SHA512:
6
- metadata.gz: 1045d89a7978ce1a4ae4848708d6e8af7aab4387a828c7081f274cd47047278eac7190c5caf06bf07ca5ae8afa8eb54f08245db4eeab48e31c74d0e5b2ad377c
7
- data.tar.gz: 7d4a2403b86cac23963c8c37a76001f97a77610d8cf6fa206e3d00b327cbe2e76b4d54e3ff6471c3db4c15203e92c8614863e0d72fbac66f39530295b118832a
6
+ metadata.gz: b587b083e8f56ed81c8a30ae1e72da76c65fb0780cd0e06665652a17c87883982fa46fa69544aec20acdcdea84cec370b41487ced46587e8b42370dd15b192af
7
+ data.tar.gz: 253066772c16ca173f1bd663a48ba05e3460eb03ff5cfff497fec194dd8ed1f350c179488aa25c6b5c629aacc26e582fc5355ed3a189d15d04f1906d196a9a60
@@ -1,3 +1,4 @@
1
+ # lib/appium_failure_helper/analyzer.rb
1
2
  module AppiumFailureHelper
2
3
  module Analyzer
3
4
  def self.triage_error(exception)
@@ -51,10 +52,12 @@ module AppiumFailureHelper
51
52
  def self.find_de_para_match(failed_info, element_map)
52
53
  failed_value = (failed_info || {})[:selector_value].to_s
53
54
  return nil if failed_value.empty?
55
+
54
56
  logical_name_key = failed_value.gsub(/^#/, '')
55
57
  if element_map.key?(logical_name_key)
56
58
  return { logical_name: logical_name_key, correct_locator: element_map[logical_name_key] }
57
59
  end
60
+
58
61
  cleaned_failed_locator = failed_value.gsub(/[:\-\/@=\[\]'"()]/, ' ').gsub(/\s+/, ' ').downcase.strip
59
62
  element_map.each do |name, locator_info|
60
63
  mapped_locator = (locator_info || {})['valor'].to_s
@@ -74,16 +77,20 @@ module AppiumFailureHelper
74
77
  failed_locator_value = (failed_info || {})[:selector_value]
75
78
  failed_locator_type = (failed_info || {})[:selector_type]
76
79
  return [] unless failed_locator_value && failed_locator_type
80
+
77
81
  normalized_failed_type = failed_locator_type.to_s.downcase.include?('id') ? 'id' : failed_locator_type.to_s
78
82
  cleaned_failed_locator = failed_locator_value.to_s.gsub(/[:\-\/@=\[\]'"()]/, ' ').gsub(/\s+/, ' ').downcase.strip
79
83
  similarities = []
80
- all_page_suggestions.each do |suggestion|
84
+
85
+ (all_page_suggestions || []).each do |suggestion|
81
86
  candidate_locator = (suggestion[:locators] || []).find { |loc| loc[:strategy] == normalized_failed_type }
82
87
  next unless candidate_locator
88
+
83
89
  cleaned_candidate_locator = candidate_locator[:locator].gsub(/[:\-\/@=\[\]'"()]/, ' ').gsub(/\s+/, ' ').downcase.strip
84
90
  distance = DidYouMean::Levenshtein.distance(cleaned_failed_locator, cleaned_candidate_locator)
85
91
  max_len = [cleaned_failed_locator.length, cleaned_candidate_locator.length].max
86
92
  next if max_len.zero?
93
+
87
94
  similarity_score = 1.0 - (distance.to_f / max_len)
88
95
  if similarity_score > 0.85
89
96
  similarities << { name: suggestion[:name], locators: suggestion[:locators], score: similarity_score, attributes: suggestion[:attributes] }
@@ -16,19 +16,19 @@ module AppiumFailureHelper
16
16
  begin
17
17
  unless @driver && @driver.session_id
18
18
  Utils.logger.error("Helper não executado: driver nulo ou sessão encerrada.")
19
+ Utils.logger.error("Exceção original: #{@exception.message}")
19
20
  return
20
21
  end
21
22
 
22
23
  FileUtils.mkdir_p(@output_folder)
23
24
 
24
-
25
25
  triage_result = Analyzer.triage_error(@exception)
26
26
 
27
27
  report_data = {
28
28
  exception: @exception,
29
29
  triage_result: triage_result,
30
30
  timestamp: @timestamp,
31
- platform: @driver.capabilities['platformName'] || @driver.capabilities[:platform_name] || 'unknown',
31
+ platform: @driver.capabilities['platformName'] || @driver.capabilities[:platformName] || 'unknown',
32
32
  screenshot_base64: @driver.screenshot_as(:base64)
33
33
  }
34
34
 
@@ -1,3 +1,3 @@
1
1
  module AppiumFailureHelper
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_failure_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Nascimento
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-10-01 00:00:00.000000000 Z
11
+ date: 2025-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri