Começando com testcafe e Docker
testcafe é uma ferramenta javascript para rodar teste de frontend (teste de aceitação ou teste end-to-end). É similar ao selenium, mas mesmo que seja uma ferramenta javascript com nodejs ainda é necessário um navegador para rodar os testes.
Imagem Docker
Existe uma imagem docker oficial, então tudo o que você precisa fazer é baixá-la na sua máquina ou CI sem se preocupar com a instalação do nodejs ou de qualquer browser.
$ docker pull testcafe/testcafe
Primeiro teste
Este é um template para os testes:
import { Selector } from "testcafe"
fixture `Thank you page`
.page `http://devexpress.github.io/testcafe/example`
test("should say thank you, john doe", async t => {
await t
.typeText("#developer-name", "John Doe")
.click("#submit-button")
.expect(Selector("#article-header").innerText)
.eql("Thank you, John Doe!");
})
Salve-o num arquivo, por exemplo thankyoupage.test.js
, e rode os testes com esse comand:
$ docker run --rm -v $(pwd):/app -w /app testcafe/testcafe firefox thankyoupage.test.js
Os testes vão rodar num Firefox headless, ou seja, o Firefox não vai abrir uma nova janela, ao invés disso tudo vai acontecer em segundo plano.
A saída é algo como:
Running tests in:
- Firefox 61.0.0 / Linux 0.0.0
Thank you page
✓ should say thank you, john doe
1 passed (3s)
Quando o teste falha a saída é algo como:
Running tests in: [10/10]
- Firefox 61.0.0 / Linux 0.0.0
Thank you page
✖ should say thank you, john doe
1) AssertionError: expected 'Thank you, John Doe!' to deeply equal 'Thank
you, John Smith!'
Browser: Firefox 61.0.0 / Linux 0.0.0
[ … ]
Confira a página de assertions.