Appium Failure Helper
Este módulo Ruby foi projetado para ser uma ferramenta de diagnóstico inteligente para falhas em testes de automação mobile com Appium. Ele automatiza a captura de artefatos de depuração e a geração de sugestões de localizadores de elementos, eliminando a necessidade de usar o Appium Inspector.
Funcionalidades Principais
- Análise de Falha Automatizada: Captura o estado da aplicação no momento da falha.
- Captura de Artefatos: Salva um screenshot da tela e o XML completo do
page_source
em uma pasta dedicada por falha. - Geração de Localizadores Inteligente: Percorre a árvore de elementos e gera um relatório YAML com sugestões de XPaths otimizados para cada elemento.
- Lógica de XPath Otimizada: Utiliza as melhores práticas para cada plataforma (Android e iOS), priorizando os localizadores mais estáveis e combinando atributos para alta especificidade.
- Organização de Saída: Cria uma pasta com um carimbo de data/hora para cada falha (
/failure_AAAA_MM_DD_HHMMSS
), mantendo os arquivos organizados. - Contexto de Elementos: O relatório YAML agora inclui o XPath do elemento pai (
parent_locator
), fornecendo contexto crucial para a depuração e construção de Page Objects.
Como Funciona
A lógica do AppiumFailureHelper
é ativada por um evento de falha em seu framework de testes (ex: Cucumber After
hook). O método handler_failure
executa as seguintes etapas:
- Cria um diretório de saída exclusivo.
- Captura o screenshot e o
page_source
do driver. - Determina a plataforma do dispositivo a partir das capacidades do driver.
- Itera sobre cada nó do
page_source
e, para cada um, chama a lógica de geração de XPath e de nome. - A lógica de XPath utiliza um conjunto de estratégias priorizadas para cada plataforma, como combinação de atributos (
@resource-id
e@text
) e o uso destarts-with()
para elementos dinâmicos. - Salva um arquivo
.yaml
estruturado, contendo o nome sugerido, o tipo (xpath
) e o localizador para cada elemento.
Uso
Para usar este helper, integre-o ao seu framework de testes. Um exemplo comum é utilizá-lo em um hook After
do Cucumber, passando o objeto de driver do Appium.
features/support/hooks.rb
require 'appium_failure_helper'
After do |scenario|
if scenario.failed?
AppiumFailureHelper::Capture.handler_failure(appium_driver)
end
end
Observação: O nome da sua variável de driver pode variar. No exemplo, appium_driver
deve ser o objeto de driver do seu teste.
Artefatos Gerados
Após uma falha, os seguintes arquivos serão gerados na pasta screenshots/
:
screenshot_20231027_153045.png
page_source_20231027_153045.xml
element_suggestions_20231027_153045.yaml
O arquivo .yaml
é um recurso valioso para inspecionar os elementos da tela e atualizar seus localizadores de forma eficiente.