O Chrome for Testing é uma variação do Chrome destinada especificamente a casos de uso de teste e automação de apps da Web. Este documento explica por que a equipe do Chrome achou isso necessário e apresenta exemplos concretos de como o Chrome for Testing pode beneficiar você como desenvolvedor.
Contexto
O teste de navegador é um componente essencial para criar uma experiência da Web de alta qualidade, seja manual ou automática. Ao mesmo tempo, configurar um ambiente de teste de navegador adequado é notoriamente difícil, tanto que é consistentemente relatado como um dos principais problemas dos desenvolvedores da Web.
Atualização automática: ótima para usuários, dolorosa para desenvolvedores
Um dos recursos mais notáveis do Chrome é a capacidade de atualização automática. Os usuários ficam felizes em saber que estão executando uma versão atualizada e segura do navegador, incluindo recursos modernos da plataforma Web, recursos do navegador e correções de bugs.
No entanto, como um desenvolvedor que executa um conjunto de testes de ponta a ponta, você pode ter uma perspectiva totalmente diferente:
- Você quer resultados consistentes e reproduzíveis em execuções de teste repetidas, mas isso pode não acontecer se o executável ou binário do navegador decidir se atualizar entre duas execuções.
- Você quer fixar uma versão específica do navegador e verificar esse número de versão no repositório de código-fonte para poder conferir commits e ramificações antigos e executar os testes novamente no binário do navegador a partir desse momento.
Nada disso é possível com um binário de navegador com atualização automática. Como resultado, talvez você não queira usar a instalação normal do Chrome para testes automatizados. Essa é a incompatibilidade fundamental entre o que é bom para usuários normais do navegador e o que é bom para desenvolvedores que fazem testes automatizados.
Binários de navegador com versão
Além da atualização automática, talvez você também tenha dificuldade em encontrar um binário do Chrome com uma versão específica. O Google intencionalmente não disponibiliza downloads do Chrome com versão, já que os usuários não precisam se preocupar com números de versão. Eles sempre devem receber a versão mais recente assim que possível. Isso é ótimo para os usuários, mas doloroso para os desenvolvedores que precisam reproduzir um relatório de bugs em uma versão mais antiga do Chrome.
Um exemplo mais específico desse problema é quando você quer usar o ChromeDriver para automação de navegador. Não só é necessário fazer o download de um binário do Chrome, mas também de um binário do ChromeDriver com a versão correspondente para garantir que os dois binários sejam compatíveis.
Sem uma boa maneira de resolver esses problemas, muitos desenvolvedores fazem o download de binários do Chromium (não do Chrome) em vez disso, embora essa abordagem tenha algumas falhas. Primeiro, esses binários do Chromium não estão disponíveis de maneira confiável em todas as plataformas. Em segundo lugar, eles são criados e publicados separadamente do processo de lançamento do Chrome, o que impossibilita o mapeamento das versões para lançamentos reais do Chrome voltados ao usuário. Terceiro, o Chromium é diferente do Chrome.
A solução: Chrome for Testing
Projetado para resolver esses problemas, o Chrome for Testing é uma variação dedicada do Chrome voltada para o caso de uso de teste, sem atualização automática, integrada ao processo de lançamento do Chrome e disponibilizada para cada lançamento do Chrome. Um binário com versão que é o mais próximo possível do Chrome normal, sem afetar negativamente o caso de uso de teste.
Para criar o Chrome for Testing, fizemos mudanças nos codebases do Chromium e do Chrome e configuramos a infraestrutura para criar e fazer upload desses binários para um bucket disponível publicamente em sincronia com o processo de lançamento do Chrome em todos os canais (Stable, Beta, Dev e Canary).
A infraestrutura do Chrome for Testing oferece oportunidades interessantes além do próprio Chrome. Por exemplo, as dificuldades mencionadas anteriormente em relação à localização de um binário correspondente do Chrome e do ChromeDriver podem ser completamente eliminadas integrando o processo de lançamento do ChromeDriver à infraestrutura do Chrome for Testing. Além de resolver esse problema do usuário, isso também alinha os lançamentos do ChromeDriver com o Chrome e elimina o processo manual de lançamento do ChromeDriver.