Usando page objects com Appium

Topic created · 4 Posts · 145 Visualizações
  • Oi pessoal,

    Faz alguns meses que eu estou automatizando um app iOS somente com Appium, RSpec e Ruby, porém agora a empresa está lançando também um app Android, então eu gostaria de reusar o mesmo código para testar este app Android (Óbviamente, os locators são diferentes), mas analisando projetos no Github eu estou tendo algumas dúvidas.

    • Todos os projetos que eu estou vendo (usando Cucumber ou não) tem uma estrutura separada para testar iOS e Android, por exemplo:

    MyApp
    -Android
    ---- pages
    ---- spec
    ---- data
    -iOS
    ---- pages
    ---- spec
    ---- data

    A ideia não seria apenas diferenciar os locators e usar a mesma pasta pages e data?
    Alguém tem algum projeto nessa estrutura para que eu possa analisar?

  • Rafa, boa noite!

    Trabalho com testes usando appium para ios e android. No nosso caso, utilizamos uma framework chamada sunomono que é free e foi desenvolvida por uma empresa chamada Concrete. Essa framework possibilita que escrevamos um único cenário (feature) que é utilizado tanto no ios quanto no Android. Acho que compensa você dar uma pesquisada e entender como essa frame funciona. Ela é muito simples e deixa o projeto organizado.

  • @Jeferson Obrigado pela resposta. Fui olhar o projeto mas a documentação está fora do ar, então meio impossível. Outro ponto é que eu não queria usar cucumber, não temos essa necessidade na empresa, então apens RSpec e Appium já nos atende muito bem, mas tá complicado encontrar algo que me ajude.

  • Olá, usando o Appium você pode utilizar uma estrutura única de page objects e testes para Android e iOS, a nível de teste, o que importa é a interfase do usuário e não a tecnologia utilizada para criação do app.

    Para resolver a questão do locators do iOS <> Android, utilize o Page Factory. Com essa “extensão” do Page Object, você utiliza um mesmo apelido para identificar diferentes elementos.

    Exemplo:

    @AndroidFindBy(id="nome") @iOSFindBy(xpath="/*teste_name") public MobileElement labelUsuario;
    

    O que vai ser diferente é o setup da aplicação.