appium_failure_helper 1.7.0 → 1.8.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: 98b490f90ffbc00dd772d504e4ffcf1ef2ee25d25004a74458ca9e6ada556b1f
4
- data.tar.gz: 7fe8c205a04b7944977651441408b5f4ae92e37b0c8acbb5d45a8de36315fcf5
3
+ metadata.gz: 84d9c1d86ddb0c8f4295a4b269abf43e164846b91a95e0b1fd1e91a250178b96
4
+ data.tar.gz: a1aaedfc484964de3293178a24fe3fe9f88fcbdf7d50639f2674c99c1a11731b
5
5
  SHA512:
6
- metadata.gz: 7a8d1778dab86262461041523686d000a3df6d30d51f6aa222c50a1b9037c782f5aa5622af57b030127c6d9c9d9b6fd241d21cf25a084da3af6ad4894c1e02bd
7
- data.tar.gz: 1ed02d956de5335cb5f8cdefa065314013c90a96b4afc50f65656dce7569dd54967024c8a78fcf9bf403a5a9fa1a45c8c73c5e83ddcf5cdf63a99b5181b55228
6
+ metadata.gz: 74644f3dcb9591732aec1dc65e0dc7a249067a8146c5c481830d1b595f4d3d35fc29397c884ca5d938f04eb33cff8c8eaf335cf5a580769f848e3d1ed1f17552
7
+ data.tar.gz: b1fc2924f15adb1d645174b7b1bf6b1627b1943434f5a40d5bd3c53535b4ec9cfc6f73240654c06526038d8987ddae8531572294823b43b6a158de804d9363aa
@@ -14,6 +14,7 @@ module AppiumFailureHelper
14
14
  def call
15
15
  begin
16
16
  unless @driver && @driver.session_id
17
+ Utils.logger.error("Helper não executado: driver nulo ou sessão encerrada.")
17
18
  return
18
19
  end
19
20
 
@@ -31,31 +32,40 @@ module AppiumFailureHelper
31
32
 
32
33
  if triage_result == :locator_issue
33
34
  page_source = @driver.page_source
34
- doc = Nokogiri::XML(page_source)
35
+ failed_info = Analyzer.extract_failure_details(@exception)
35
36
 
36
- failed_info = Analyzer.extract_failure_details(@exception) || {}
37
- if failed_info.empty?
37
+ if failed_info.nil? || failed_info.empty?
38
38
  failed_info = SourceCodeAnalyzer.extract_from_exception(@exception) || {}
39
39
  end
40
40
 
41
41
  if failed_info.empty?
42
42
  report_data[:triage_result] = :unidentified_locator_issue
43
43
  else
44
+ doc = Nokogiri::XML(page_source)
44
45
  page_analyzer = PageAnalyzer.new(page_source, platform)
45
46
  all_page_elements = page_analyzer.analyze || []
46
47
 
47
48
  best_candidate_analysis = Analyzer.perform_advanced_analysis(failed_info, all_page_elements, platform)
48
49
 
49
50
  alternative_xpaths = []
51
+ target_node = nil
52
+
50
53
  if best_candidate_analysis
51
- if best_candidate_analysis[:attributes] && (target_path = best_candidate_analysis[:attributes][:path])
52
- target_node = doc.at_xpath(target_path)
53
- if target_node
54
- alternative_xpaths = XPathFactory.generate_for_node(target_node)
55
- end
54
+ if best_candidate_analysis[:attributes] && (path = best_candidate_analysis[:attributes][:path])
55
+ target_node = doc.at_xpath(path)
56
+ end
57
+ else
58
+ failed_attrs = Analyzer.send(:parse_locator, failed_info[:selector_type], failed_info[:selector_value], platform)
59
+
60
+ unless failed_attrs.empty?
61
+ temp_doc = Nokogiri::XML::Document.new
62
+ target_node = Nokogiri::XML::Node.new(failed_attrs['tag'] || 'element', temp_doc)
63
+ failed_attrs.each { |k, v| target_node[k] = v unless k == 'tag' }
56
64
  end
57
65
  end
58
66
 
67
+ alternative_xpaths = XPathFactory.generate_for_node(target_node) if target_node
68
+
59
69
  report_data.merge!({
60
70
  page_source: page_source,
61
71
  failed_element: failed_info,
@@ -68,13 +78,10 @@ module AppiumFailureHelper
68
78
 
69
79
  ReportGenerator.new(@output_folder, report_data).generate_all
70
80
  Utils.logger.info("Relatórios gerados com sucesso em: #{@output_folder}")
81
+
71
82
  rescue => e
72
- puts "--- ERRO FATAL NA GEM ---"
73
- puts "CLASSE: #{e.class}, MENSAGEM: #{e.message}"
74
- puts e.backtrace.join("\n")
75
- puts "-------------------------"
83
+ Utils.logger.error("Erro fatal na GEM de diagnóstico: #{e.message}\n#{e.backtrace.join("\n")}")
76
84
  end
77
- report_data
78
85
  end
79
86
 
80
87
  private
@@ -1,3 +1,3 @@
1
1
  module AppiumFailureHelper
2
- VERSION = "1.7.0"
2
+ VERSION = "1.8.0"
3
3
  end
@@ -48,7 +48,7 @@ module AppiumFailureHelper
48
48
  parent = node.parent
49
49
  return unless parent && parent.name != 'hierarchy'
50
50
 
51
- parent_attrs = parent.attributes.transform_values(&:value) || {}
51
+ parent_attrs = parent.attribute.transform_values(&:value) || {}
52
52
 
53
53
  if (id = parent_attrs['resource-id']) && !id.empty?
54
54
  strategies << { name: "Filho de Pai com ID", strategy: 'xpath', locator: "//*[@resource-id='#{id}']//#{tag}", reliability: :alta }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_failure_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Nascimento