mozilla
Os seus resultados da pesquisa

    Firefox OS mochitests

    Mochitest é um framework de testes automatizados construído no topo das bibliotecas JavaScript MochiKit, que fornece testes funcionais e de API. É apenas um dos frameworks de testes de regressão automatizados usados ​​pela Mozilla. Os testes apresentam os resultados (sucesso ou falha) usando chamadas de funções JavaScript. Esse artigo apresenta as etapas necessárias para executar o Mochitests no Firefox OS, no B2G Desktop, no dispositvo ou no emulador.

    Executando mochitests nas imagens do B2G desktop

    O primeiro caso que vamos cobrir é a execução do B2G no B2G desktop. Você vai precisar instalar o Gaia e gerar um perfil antes de começar.

    Usando mach

    Mach é uma interface em linha de comando que ajuda os desenvolvedores executarem tarefas comuns, vamos observar como usá-la executando o mochitests. Se você tem um B2G Desktop local, compile-o habilitando a configuração ENABLE_MARIONETTE=1 no seu mozconfig, você pode usar mach para executar todos os mochitests. Execute o seguinte comando no diretório raiz (root) da sua árvore do fonte do seu B2G.

    ./mach mochitest-b2g-desktop --profile path/to/non/debug/gaia/profile

    Alternativamente você pode configurar a variável de ambiente $GAIA_PROFILE para evitar ter que informar o diretório todas as vezes que executar o comando.

    Para executar um teste específico:

    export GAIA_PROFILE=path/to/non/debug/gaia/profile
    ./mach mochitest-b2g-desktop test_path

    Para ver as opções do mochitest:

    ./mach help mochitest-b2g-desktop

    Nota: Alguns contribuidores tem trabalhado num projeto chamado b2g-commands, que pretende trazer alguns dos comandos disponíveis no Firefox desktop para a imagem B2G, como diagnósticos mais fáceis e construção do ambiente de inicialização. Mais detalhes no artigo Add more Mach to your B2G.

    Usando o mochitest

    Você pode executar mochitest-plain na imagem do B2G Desktop.

    Pre-requisitos

    • Usar uma imagem com a opção Marionette ativa (compilada com ENABLE_MARIONETTE=1 no mozconfig.)
    • Ter gerado um perfil gaia manualmente (que pode ter sido feito se você compilou o B2G desktop manualmente). Deve ser um perfil non-DEBUG.
    • Não pode utilizar um perfil Gaia que tenha sido feito com um GAIA_DOMAIN personalizado.

    Configuração para mozilla-b2g18 trees

    cd $GECKO_OBJ_DIR
    python $GECKO_SRC_DIR/python/virtualenv/virtualenv.py venv
    source venv/bin/activate
    cd $GECKO_SRC_DIR/testing/marionette/client
    python setup.py develop

    Nota: você pode precisar instalar setuputils.py antes de executar setup.py

    Configuração para trunk trees, incluindo mozilla-central

    cd $GECKO_OBJ_DIR
    source _virtualenv/bin/activate

    Executando os testes

    Você pode executar mochitests usando os seguintes comandos:

    cd $GECKO_OBJ_DIR/_tests/testing/mochitest
    python runtestsb2g.py --desktop --console-level INFO --profile /path/to/gaia/profile --app /path/to/b2g

    O executor do teste vai executar o b2g desktop e executar os testes, todos os mochitests B2G por padrão, o que consome muito tempo. Outras opções comuns são as seguintes:

    • Para executar testes específicos, indique em --test-path.
    • Podem ser adicionados os argumentos --total-chunks e --this-chunks da mesma forma como é feito com o mochitest do desktop.
    • Finalmente, você pode usar python runtestsb2g.py --help para uma lista completa de argumentos.

    Executando mochitest em imagens do emulador

    Você pode executar mochitest-plain em dispositivos B2G. Mas atualmente, funciona melhor quando executado em um emulador.

    Você não pode executar o mochitest em um dispositivo B2G que tenha sido compilado com a opção PRODUCTION=1.  Para executar os mochitests a imagem deve ser a de engenharia. Veja Bug 1037858.

    Usando mach

    Se você possuir uma imagem local de um emulador que foi realizada a partir de um branch do Gecko (não a mozilla-b2g18), a forma mais fácil de executar um mochitest é com o mach.  Para executar todos os testes:

    cd $B2G_DIR
    ./mach mochitest-remote

    Para executar um teste específico:

    ./mach mochitest-remote test_path

    Nota: Esses caminhos são relativos ao diretório fonte do GeckoTest paths are relative to gecko's source directory, por exemplo: content/base/test/test_CrossSiteXHR.html

    Para ver as opções do mochitest:

    ./mach help mochitest-remote

    Usando o mochitest

    Similar ao anterior, você pode executar o mochitest em compilações B2G no dispositivo ou emulador utilizando o executor do mochitest. Os pré-requisitos s˜ to before, you can also run mochitest on device or emulator builds of B2G using the mochitest runner. The prerequisites são um pouco mais complexos.

    Pré-requisitos

    • Você precisa compilar o B2G para o dispositivo que você está testando(veja Compilando e instalando o Boot to Gecko).
    • Você não pode usar a imagem do Gaia que foi compilada com um GAIA_DOMAIN customizado.
    • Você precisa ter uma versão desktop do xpcshell (ele precisa rodar no host), você o terá se tiver uma cópia do Firefox no seu sistema. Alternativamente, você pode baixar uma cópia para o Linux a partir de http://people.mozilla.com/~ahalberstadt/getb2g/xre.zip.
    • Você precisa instalar alguns pacotes Python que são necessários, mesmo em um virtualenv. Leia a seguir para maiores detalhes..

    Configuração para mozilla-b2g18 trees

    cd $GECKO_OBJ_DIR
    python $GECKO_SRC_DIR/python/virtualenv/virtualenv.py venv
    source venv/bin/activate
    cd $GECKO_SRC_DIR/testing/marionette/client
    python setup.py develop

    Nota: antes de executar setup.py você precisa instalar setuputils.py

    Configuração para trunk trees, incluindo mozilla-central

    cd $GECKO_OBJ_DIR
    source _virtualenv/bin/activate

    Executando os testes

    Você pode executar o plano mochitest-plain usando um dos seguintes conjunto de comandos no terminal.

    Para executar testes no dispositivo, o computador e o dispositivo devem estar na mesma rede sem fio, uma vez que o dispositivo requisita arquivos de um servidor HTTP que foi iniciado pelo mochitest no computador. Para iniciar os testes utilize os comandos:

    adb forward tcp:2828 tcp:2828
    cd $GECKO_OBJ_DIR/_tests/testing/mochitest
    python runtestsb2g.py --b2gpath $B2G_HOME --xre-path /path/to/dir/containing/desktop/xpcshell --console-level INFO \
      --httpd-path ./

    Se você estiver usando o emulador:

    cd $GECKO_OBJ_DIR/_tests/testing/mochitest
    python runtestsb2g.py --b2gpath $B2G_HOME --xre-path /path/to/dir/containing/desktop/xpcshell --console-level INFO \
      --httpd-path ./ --emulator arm

    Aviso: Executar mochitestes em um emulador B2G no OS X não é suportado, ao invés disso utilize o Linux.

    Os comandos acima executam todos os mochitests B2G por padrão, o que consome muito tempo. Outras opções comuns são as seguintes:

    • Para executar testes específicos: --test-path.
    • Opcionalmente você pode incluir os argumentos --total-chunks e --this-chunks como feito com mochitests no desktop.
    • Finalmente, você pode executar  python runtestsb2g.py --help para uma lista completa de argumentos possíveis.

    Após ser iniciado o script runtestsb2g.py, o teste vai chamar o emulador para você (se estiver executando os testes no emulador) ou reiniciar o seu dispositivo (se estiver executando os testes no dispositivo) e comecará a executar os testes. Como o emulador é lento, é necessário copiar um perfil de testes para o emulador e reinicar o processo B2G e pode consumir alguns minutos para iniciar os testes. Antes de ser iniciado você verá apenas uma tela preta ou branca. Após alguns minutos você verá o log dos testes no console.

    Quando os testes terminarem, o emulador será encerrado, ou se você estiver usando um dispositivo, o mesmo será reinicializado.

    Note: Existe um bug 780034 que evita o mochitest terminar quando você executa um teste simples, ao contrário do que ocorre no teste completo. Nesse caso, quando você perceber que o teste terminou, você pode pressionar CTRL+C para terminar o executor de testes.

    Executando o mochitest com um emulador baixado da internet

    Se você compilou o B2G para outra configuração (como otoro) e gostaria de executar os testes em um emulador, você pode fazer sem a necessidade de compilar você mesmo um emulador. Apenas baixe a última versão do emulador arm, e utilize as mesmas instruções acima, substituindo o argumento --b2gpath $B2G_HOME para runtestsb2g.py com --b2gpath /path/to/unpacked/emulator.

    Executando o mochitest com um emulador e os testes baixados da internet

    Você também pode executar mochitests em um emuladodr sem compilar ou clonar qualquer coisa. Para fazer isso, você precisa baixar a última versão do emulador arm e descompactá-la e baixar a última versão do arquivo tests.zip (no mesmo lugar de onde baixou o emulador) e descompactá-lo.

    Você também precisará do virtualenv instalado no seu sistema.

    Então você poderá configura seu ambiente e executar os testes:

    virtualenv venv
    source venv/bin/activate
    cd $TESTS_DIR/marionette
    python setup.py develop
    cd $TESTS_DIR/mochitests 
    python runtestsb2g.py --b2gpath /path/to/extracted/emulator --xre-path /path/to/desktop/xpcshell --console-level INFO \
      --httpd-path ./ --emulator arm

    Detalhes técnicos de implementação

    Existem algumas coisas que acontecem quando você executa os mochitests B2G.

    1. O aplicativo Homescreen é substituído por um aplicativo certificado chamado test-container (observe que isso é verificado no Gaia). Em teoria esse aplicativo é feito para ser genério, uma vez que qualquer ferramenta de testes pode usá-lo, porém até agora somente o mochitest o utiliza.
    2. O aplicativo test-container expões um simples <iframe mozbrowser mozapp> no qual os mochitests são carregados (mochitests possuem seus próprios manifest.webapp).
    3. A automação substitui o aplicativo Homescreen pelo aplicativo test-container usando uma preferência.
    4. A automação carrega o aplicativo mochitest no iframe do aplicativo test-container (esse script é executado com privilégios chrome pelo marionette).
    5. A automação carrega poderes especiais no frame filho que está executando o mochitests e configura o gerenciador de mensagens (faz com que o mochitests acesse algumas APIs privilegiadas).
    6. A automação carrega a url do mochitest no iframe do mochitest. Isso inicia os testes.

    Nota: Se você estiver interessado em saber como as coisas funcionam, a resposta rápida é: satisfazer os requisitos de permissão para os testes. Para uma resposta mais detalhada verifique bug 798580 e bug 814140.

     

    Etiquetas do documento e colaboradores

    Contribuíram para esta página: rbrandao
    Última atualização por: rbrandao,
    Esconder painel