14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/appium_failure_helper/handler.rb', line 14
def call
FileUtils.mkdir_p(@output_folder)
page_source = @driver.page_source
platform = @driver.capabilities['platformName']&.downcase || 'unknown'
failed_info = Analyzer.(@exception)
logical_name_key = failed_info[:selector_value].to_s.gsub(/^#/, '')
element_map_yaml = ElementRepository.load_all_from_yaml
de_para_yaml_result = Analyzer.find_de_para_match(failed_info, element_map_yaml)
de_para_rb_result = ElementRepository.find_in_ruby_file(logical_name_key)
page_analyzer = PageAnalyzer.new(page_source, platform)
all_page_elements = page_analyzer.analyze
similar_elements = Analyzer.find_similar_elements(failed_info, all_page_elements)
report_data = {
failed_element: failed_info,
similar_elements: similar_elements,
de_para_yaml_analysis: de_para_yaml_result, de_para_rb_analysis: de_para_rb_result, all_page_elements: all_page_elements,
screenshot_base64: @driver.screenshot_as(:base64),
platform: platform,
timestamp: @timestamp
}
ReportGenerator.new(@output_folder, page_source, report_data).generate_all
Utils.logger.info("Relatórios gerados com sucesso em: #{@output_folder}")
rescue => e
Utils.logger.error("Erro ao capturar detalhes da falha: #{e.message}\n#{e.backtrace.join("\n")}")
end
|