Episódio 4: por Robert in Waterloo, ON (julho de 2019)
Episódios anteriores
Se você trabalha no Blink, talvez conheça o web_tests (antigo LayoutTests).
O web-platform-tests (WPT) fica dentro do web_test/external/wpt
. O WPT é
maneira preferencial de testar recursos expostos na Web, já que eles são compartilhados com outros
via GitHub. Há dois tipos principais de testes: reftests e
testharness.js.
reftests fazem e comparam capturas de tela de duas páginas. Por padrão, as capturas de tela
são realizadas depois que o evento load
é disparado; se você adicionar uma classe reftest-wait
ao elemento <html>
, a captura de tela será feita quando a classe for removida.
Testes desativados significam diminuir a cobertura dos testes. Esteja ciente de problemas relacionados a fontes
instabilidade; use a fonte Ahem
quando possível.
testharness.js é um framework de JavaScript para testar qualquer coisa exceto a renderização. Ao criar testes de testharness.js, preste atenção ao tempo, e não se esqueça de limpar o estado global.
Tempo limite instável e possíveis estados vazados:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
Um teste melhor com tempo limite longo e limpeza:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
Use testdriver.js se precisar de automação, que não está disponível na Web.
É possível receber um gesto do usuário do test_driver.bless
, gerar consultas
entradas confiáveis com test_driver.action_sequence
etc.
O WPT também oferece alguns recursos úteis do lado do servidor usando nomes de arquivo.
Testes multiglobais (.any.js
e seus amigos) executam os mesmos testes em diferentes
escopos (window
, worker
etc.); .https.sub.html
solicita que o teste seja carregado
por HTTPS com suporte à substituição do lado do servidor como abaixo:
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
Alguns recursos também podem ser ativados em strings de consulta.
baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
ativa a substituição, adiciona X-Key: val
aos cabeçalhos da resposta e atrasa um segundo antes de responder. Pesquise "pipes"
em web-platform-tests.org para saber mais.
A WPT também pode testar comportamentos que ainda não estão incluídos nas especificações; apenas
nomeie o teste como .tentative
. Se você precisar de APIs internas do Blink (por exemplo,
testRunner
, internals
), coloque seus testes em web_tests/wpt_internal
.
As alterações feitas no WPT são exportadas automaticamente para o GitHub. Você verá
comentários de um bot no seu CL. As mudanças no GitHub de outros fornecedores também estão
são importadas continuamente. Para receber bugs registrados automaticamente quando novas falhas falharem
forem importados, crie um arquivo OWNERS
em um subdiretório no WPT:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
Outros recursos
- Quer saber como seus testes são executados em outros navegadores e o grau de interoperabilidade seu atributo? Use wpt.fyi.
- Procurando mais documentação sobre APIs, diretrizes, exemplos, dicas e muito mais? Acesse web-platform-tests.org.