Fazer capturas de tela em testes de instrumentação

O Firebase Test Lab inclui uma biblioteca que pode ser usada para fazer capturas de tela ao executar testes de instrumentação, como testes desenvolvidos usando o framework de teste Espresso. Para adicionar esse recurso ao teste, faça o download da biblioteca cloudtestingscreenshotter_lib.aar.

O recurso de capturas de tela já está integrado ao APK de teste app-debug-test-unaligned.apk para o app de amostra do NotePad. Além disso, as capturas de tela também são geradas durante a execução do teste Robo. As instruções a seguir mostram como adicionar a biblioteca de capturas de tela ao seu app e como chamá-la no seu teste.

Após o teste ser executado, você pode rever as capturas no Android Studio ou no Console do Firebase.

Adicionar uma biblioteca de captura de tela ao seu projeto

  1. No Android Studio, abra a visualização Project e clique com o botão direito do mouse no nome do projeto. Em seguida, clique em New > Directory.

  2. Na caixa de diálogo New Directory, digite aars. Isso cria um diretório aars na raiz do seu projeto de teste (como um diretório de mesmo nível para a pasta app).

  3. Copie cloudtestingscreenshotter_lib.aar e cole-o na pasta aars.

  4. No arquivo build.gradle no nível raiz (para envolvidos no projeto) do app, adicione uma referência à pasta aars em cada bloco repositories:

    repositories {
        jcenter()
        flatDir {
            dirs '../aars'
        }
    }
    ...
  5. No diretório de nível superior do módulo (para o app de exemplo NotePad, este é o diretório app), abra o arquivo build.gradle e adicione uma dependência a cloudtestingscreenshotter_lib.aar para o bloco dependencies de nível superior:

    dependencies {
        // Cloud testing
        androidTestCompile (name:'cloudtestingscreenshotter_lib', ext:'aar')
        // Other dependencies go here
        }
    
  6. No arquivo AndroidManifest.xml, especifique as permissões do sistema para seu app adicionando as seguintes linhas na tag <manifest>. Se você estiver testando no Android 10 (API de nível 29) ou posterior, omita a permissão WRITE_EXTERNAL_STORAGE. Seu app não exige essa permissão para ler e gravar capturas de tela no dispositivo.

    <manifest ... >
       <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. -->
       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
       <uses-permission android:name="android.permission.INTERNET"/>
       ...
    </manifest>
    

Realizar uma captura de tela do seu teste

Quando quiser realizar uma captura de tela no seu teste, chame o método ScreenShotter.takeScreenshot da biblioteca cloudtestingscreenshotter_lib, em que o primeiro argumento é um rótulo que você usa para identificar a captura de tela (main_screen_2 é usado no exemplo abaixo):

Java

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */);

Kotlin+KTX

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */)

Ver capturas de tela

Depois que o teste for concluído, será possível comparar as capturas de tela coletadas. Para isso, selecione um elemento na árvore de resultados do teste e clique na opção Ver capturas de tela Ver capturas de tela.

Tela de comparação de capturas de tela

É possível selecionar e comparar capturas de tela de diferentes configurações, conforme mostrado abaixo:

Tarefa Ação
Alternar entre execuções de teste. Use o menu suspenso no canto superior esquerdo.

menu de caso de teste
Alternar entre capturas de tela em uma execução de teste. Use as setas no canto superior direito.

alternador de capturas de tela
Adicionar painéis extras de comparação de capturas de tela ao modo de exibição atual. Clique em Comparar.

Comparar
Escolher uma dimensão de teste diferente (tipo de dispositivo, orientação, local etc.). Selecione um novo membro de dimensão na lista, na parte inferior da captura de tela.

A seguir

Faça o download do app de amostra do NotePad.