Integrando os testes Appium com o Device Farm - AWS Device Farm

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Integrando os testes Appium com o Device Farm

Use as instruções a seguir para integrar os testes do Appium ao AWS Device Farm. Para obter mais informações sobre o uso dos testes Appium no Device Farm, consulte. Testes de appium e AWS Device Farm

Configurar o pacote de testes do Appium

Use as instruções a seguir para configurar o pacote de testes.

Java (JUnit)
  1. Modifique pom.xml para definir o empacotamento em um JAR arquivo:

    <groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
  2. Modifique pom.xml maven-jar-plugin para usar para criar seus testes em um JAR arquivo.

    O plug-in a seguir cria seu código-fonte de teste (qualquer coisa no src/test diretório) em um JAR arquivo:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
  3. Modifique pom.xml para usar maven-dependency-plugin para criar dependências como JAR arquivos.

    O plug-in a seguir copia suas dependências no diretório dependency-jars:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
  4. Salve a seguinte XML montagem emsrc/main/assembly/zip.xml.

    A seguir XML está uma definição de assembly que, quando configurada, instrui o Maven a criar um arquivo.zip que contém tudo na raiz do seu diretório de saída de compilação e do diretório: dependency-jars

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
  5. Modifique pom.xml para usar maven-assembly-plugin a fim de empacotar testes e todas as dependências em um único arquivo .zip.

    O plug-in a seguir usa a montagem anterior para criar um arquivo .zip denominado zip-with-dependencies no diretório de saída da compilação toda vez que o comando mvn package for executado:

    <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
nota

Se receber uma mensagem de erro informando que a versão 1.3 não oferece suporte a anotações, adicione o seguinte ao pom.xml:

<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
Java (TestNG)
  1. Modifique pom.xml para definir o empacotamento em um JAR arquivo:

    <groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
  2. Modifique pom.xml maven-jar-plugin para usar para criar seus testes em um JAR arquivo.

    O plug-in a seguir cria seu código-fonte de teste (qualquer coisa no src/test diretório) em um JAR arquivo:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
  3. Modifique pom.xml para usar maven-dependency-plugin para criar dependências como JAR arquivos.

    O plug-in a seguir copia suas dependências no diretório dependency-jars:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
  4. Salve a seguinte XML montagem emsrc/main/assembly/zip.xml.

    A seguir XML está uma definição de assembly que, quando configurada, instrui o Maven a criar um arquivo.zip que contém tudo na raiz do seu diretório de saída de compilação e do diretório: dependency-jars

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
  5. Modifique pom.xml para usar maven-assembly-plugin a fim de empacotar testes e todas as dependências em um único arquivo .zip.

    O plug-in a seguir usa a montagem anterior para criar um arquivo .zip denominado zip-with-dependencies no diretório de saída da compilação toda vez que o comando mvn package for executado:

    <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
nota

Se receber uma mensagem de erro informando que a versão 1.3 não oferece suporte a anotações, adicione o seguinte ao pom.xml:

<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
Node.JS

Para empacotar seus testes do Appium Node.js e carregá-los no Device Farm, você deve instalar o seguinte em seu computador local:

  • Gerenciador de versão do Node (nvm)

    Use essa ferramenta ao desenvolver e empacotar seus testes para que dependências desnecessárias não sejam incluídas no pacote de testes.

  • Node.js

  • npm-bundle (instalado globalmente)

  1. Verifique se o nvm está presente

    command -v nvm

    Você verá nvm como resultado.

    Para obter mais informações, consulte nvm on. GitHub

  2. Execute este comando para instalar o Node.js:

    nvm install node

    É possível especificar uma determinada versão do Node.js:

    nvm install 11.4.0
  3. Verifique se a versão correta do Node está em uso:

    node -v
  4. Instale npm-bundle globalmente:

    npm install -g npm-bundle
Python
  1. É altamente recomendável configurar o virtualenv do Python para testes de desenvolvimento e empacotamento, para que dependências desnecessárias não sejam incluídas em seu pacote de aplicativos.

    $ virtualenv workspace $ cd workspace $ source bin/activate
    dica
    • Não crie um virtualenv do Python com a opção --system-site-packages, porque ele herda pacotes do diretório global de pacotes de sites. Isso pode resultar na inclusão de dependências em seu ambiente virtual que não são necessárias aos seus testes.

    • Você também deve verificar se os testes não usam dependências que dependem de bibliotecas nativas, pois essas bibliotecas nativas podem ou não estar presentes na instância em que esses testes são executados.

  2. Instale o py.test em seu ambiente virtual.

    $ pip install pytest
  3. Instale o cliente do Appium Python em seu ambiente virtual.

    $ pip install Appium-Python-Client
  4. A menos que você especifique um caminho diferente no modo personalizado, o Device Farm espera que seus testes sejam armazenados em tests/. É possível usar find para mostrar todos os arquivos dentro de uma pasta:

    $ find tests/

    Confirmar se esses arquivos contêm conjuntos de testes que você deseja executar no Device Farm

    tests/ tests/my-first-tests.py tests/my-second-tests/py
  5. Execute esse comando na pasta workspace de seu ambiente virtual para exibir uma lista de seus testes sem executá-los.

    $ py.test --collect-only tests/

    Confirme se a saída mostra os testes que você deseja executar no Device Farm.

  6. Limpe todos os arquivos em cache dos testes ou da pasta:

    $ find . -name '__pycache__' -type d -exec rm -r {} + $ find . -name '*.pyc' -exec rm -f {} + $ find . -name '*.pyo' -exec rm -f {} + $ find . -name '*~' -exec rm -f {} +
  7. Execute o comando a seguir no espaço de trabalho para gerar o arquivo requirements.txt:

    $ pip freeze > requirements.txt
Ruby

Para empacotar seus testes Ruby do Appium e carregá-los no Device Farm, você deve instalar o seguinte em seu computador local:

  • Gerenciador de versões Ruby () RVM

    Use essa ferramenta de linha de comando ao desenvolver e empacotar seus testes para que dependências desnecessárias não sejam incluídas no pacote de testes.

  • Ruby

  • Bundler (esse gem normalmente é instalado com o Ruby.)

  1. Instale as chaves necessárias e RVM o Ruby. Para obter instruções, consulte Instalação RVM no RVM site.

    Depois que a instalação for concluída, atualize o terminal. Para isso, saia e faça login novamente.

    nota

    RVMé carregado apenas como uma função para o shell bash.

  2. Verifique se o rvm está instalado corretamente

    command -v rvm

    Você verá rvm como resultado.

  3. Se você quiser instalar uma versão específica do Ruby, como 2.5.3, execute o seguinte comando:

    rvm install ruby 2.5.3 --autolibs=0

    Verifique se você está na versão solicitada do Ruby:

    ruby -v
  4. Configure o empacotador para compilar pacotes para as plataformas de teste desejadas:

    bundle config specific_platform true
  5. Atualize seu arquivo .lock para adicionar as plataformas necessárias para executar os testes.

    • Se estiver compilando testes para serem executados em dispositivos Android, execute este comando para configurar o Gemfile para usar as dependências do host de teste do Android:

      bundle lock --add-platform x86_64-linux
    • Se estiver compilando testes para serem executados em dispositivos iOS, execute este comando para configurar o Gemfile para usar as dependências do host de teste do iOS:

      bundle lock --add-platform x86_64-darwin
  6. O gem bundler geralmente é instalado por padrão. Se não estiver, instale-o:

    gem install bundler -v 2.3.26

Criar um arquivo de pacote de teste compactado

Atenção

No Device Farm, a estrutura de pastas dos arquivos em seu pacote de teste compactado é importante, e algumas ferramentas de arquivamento alterarão a estrutura do seu ZIP arquivo implicitamente. Recomendamos que você siga os utilitários da linha de comando especificados abaixo, em vez de usar os utilitários de arquivamento incorporados ao gerenciador de arquivos da área de trabalho local (como o Finder ou o Windows Explorer).

Agora, empacote seus testes para o Device Farm.

Java (JUnit)

Crie e empacote seus testes:

$ mvn clean package -DskipTests=true

O arquivo zip-with-dependencies.zip será criado como resultado. Esse é o seu pacote de testes.

Java (TestNG)

Crie e empacote seus testes:

$ mvn clean package -DskipTests=true

O arquivo zip-with-dependencies.zip será criado como resultado. Esse é o seu pacote de testes.

Node.JS
  1. Confira o projeto.

    Verifique se você está no diretório raiz do seu projeto. Você pode ver package.json no diretório raiz.

  2. Execute este comando para instalar suas dependências locais.

    npm install

    Esse comando também cria uma pasta node_modules dentro do seu diretório atual.

    nota

    Então, você poderá executar seus testes localmente.

  3. Execute este comando para empacotar os arquivos da pasta atual em um arquivo *.tgz. O arquivo recebe um nome por meio da propriedade name no arquivo package.json.

    npm-bundle

    Esse arquivo tarball (.tgz) contém todos os seus códigos e dependências.

  4. Execute este comando para empacotar o tarball (arquivo *.tgz) gerado na etapa anterior em um único arquivo compactado:

    zip -r MyTests.zip *.tgz

    Esse é o arquivo MyTests.zip que você carrega no Device Farm no procedimento a seguir.

Python
Python 2

Gere um arquivamento dos pacotes do Python necessários (chamados de "wheelhouse") usando pip:

$ pip wheel --wheel-dir wheelhouse -r requirements.txt

Empacote os requisitos de pip, wheelhouse e testes em um arquivamento zip para o Device Farm:

$ zip -r test_bundle.zip tests/ wheelhouse/ requirements.txt
Python 3

Empacote os requisitos de pip e testes em um arquivo zip:

$ zip -r test_bundle.zip tests/ requirements.txt
Ruby
  1. Execute este comando para criar um ambiente virtual do Ruby:

    # myGemset is the name of your virtual Ruby environment rvm gemset create myGemset
  2. Execute este comando para usar o ambiente que você acabou de criar:

    rvm gemset use myGemset
  3. Confira o código-fonte.

    Verifique se você está no diretório raiz do seu projeto. Você pode ver Gemfile no diretório raiz.

  4. Execute este comando para instalar suas dependências locais e todos os gems do Gemfile:

    bundle install
    nota

    Então, você poderá executar seus testes localmente. Use este comando para executar um teste localmente:

    bundle exec $test_command
  5. Empacote os gems na pasta vendor/cache.

    # This will copy all the .gem files needed to run your tests into the vendor/cache directory bundle package --all-platforms
  6. Execute o comando a seguir para empacotar seu código-fonte, junto com todas as suas dependências, em um único arquivo compactado:

    zip -r MyTests.zip Gemfile vendor/ $(any other source code directory files)

    Esse é o arquivo MyTests.zip que você carrega no Device Farm no procedimento a seguir.

Fazer upload do pacote de testes no Device Farm

Você pode usar o console do Device Farm para carregar seus testes.

  1. Faça login no console do Device Farm em https://console.aws.amazon.com/devicefarm.

  2. No painel de navegação do Device Farm, escolha Teste para dispositivos móveis e, em seguida, Projetos.

  3. Se você for um novo usuário, escolha Novo projeto, insira um nome para o projeto e escolha Enviar.

    Se você já tiver um projeto, poderá selecioná-lo para carregar seus testes nele.

  4. Abra o projeto e escolha Criar uma nova execução.

  5. Para testes nativos para Android e iOS

    Na página Escolher aplicação, escolha Aplicação móvel e selecione Escolher arquivo para carregar o pacote distribuível da aplicação.

    nota

    O arquivo deve ser um .apk para Android ou um .ipa para iOS. Aplicativos para iOS devem ser criados para dispositivos reais, não para o Simulator.

    Para testes de aplicativos Web para dispositivos móveis

    Na página Escolher aplicação, selecione Aplicação Web.

  6. Dê um nome apropriado ao seu teste. Ele pode conter qualquer combinação de espaços ou pontuação.

  7. Escolha Próximo.

  8. Na página Configurar, na seção Configuração da estrutura de teste, escolha Appium languagee, em seguida, escolha Arquivo.

  9. Procure e escolha o arquivo .zip que contém os testes. O arquivo .zip deve seguir o formato descrito em Configurar o pacote de testes do Appium.

  10. Escolha Executar teste em um ambiente personalizado. Este ambiente de execução permite controle total sobre a configuração de teste, desmontagem e invocação, bem como a escolha de versões específicas de runtimes e do servidor Appium. Você pode configurar seu ambiente personalizado por meio do arquivo de especificação de teste. Para obter mais informações, consulte Como trabalhar com ambientes de teste personalizados no AWS Device Farm.

  11. Escolha Próximo e siga as instruções para selecionar os dispositivos e iniciar a execução. Para obter mais informações, consulte Criando uma execução de teste no Device Farm.

nota

O Device Farm não modifica os testes do Appium.

Fazer capturas de tela de seus testes (opcional)

Você pode fazer capturas de tela como parte dos testes.

O Device Farm define a propriedade DEVICEFARM_SCREENSHOT_PATH para um caminho totalmente qualificado no sistema de arquivos local em que o Device Farm espera que as capturas de tela do Appium sejam salvas. O diretório específico de teste no qual as capturas de tela são armazenadas é definido no runtime. As capturas de tela são inseridas automaticamente nos relatórios do Device Farm. Para visualizar as capturas de tela, no console do Device Farm, selecione a seção Capturas de tela.

Para obter mais informações sobre como fazer capturas de tela nos testes do Appium, consulte Fazer captura de tela na documentação do Appium. API