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.