Brincando com PhantomJS e CasperJS

Esses dias usei o PhantomJS para converter uma imagem em SVG para PNG, e gostei bastante, tanto que dei uma olhada mais a fundo em como ele pode ser usado. E umas das formas é para testar aplicações.

Com o Phantom você pode testar de forma headless, ou seja, sem usar a interface gráfica, o que resulta numa diminuição do tempo dos testes.

Mas ele por si só não é um framework de teste, portanto quando usado pra testar você geralmente vai querer usar algum framework de teste como o Jasmine.

Pra minha brincadeira eu acabei usando apenas o CasperJS, que abstrai o PhantomJS visando a execução de testes. Assim sendo ele nos dá funções de navegação, preenchimento de campos, screenshot, etc.

Casper

Após instalar o PhantomJS e o CasperJS (versão 1.1 beta 1). Dei uma olhada nos samples do Casper, e usei o “googletesting.coffee”, para entender como ele funciona, e fiz uma pequena mudança, para capturar um screenshot no último teste, como pode ser visto no código abaixo:


# Google sample testing.
#
# Usage:
# $ casperjs test googletesting.coffee
casper.test.begin 'Google search retrieves 10 or more results', 5, (test) ->
casper.start "http://www.google.fr/", ->
test.assertTitle "Google", "google homepage title is the one expected"
test.assertExists 'form[action="/search"]', "main form is found"
@fill 'form[action="/search"]', q: "foo", true
casper.then ->
test.assertTitle "foo – Recherche Google", "google title is ok"
test.assertUrlMatch /q=foo/, "search term has been submitted"
test.assertEval (->
__utils__.findAll("h3.r").length >= 10
), "google search for \"foo\" retrieves 10 or more results"
casper.run -> test.done()
casper.test.begin "Casperjs.org is first ranked", 1, (test) ->
casper.start "http://www.google.fr/", ->
@fill "form[action=\"/search\"]", q: "casperjs", true
casper.then ->
test.assertSelectorContains ".g", "casperjs.org", "casperjs.org is first ranked"
@capture './search_for_casperjs.png'
casper.run -> test.done()

Como vocês podem ver, a declaração do teste é bem similar a qualquer xUnit da vida.

Portanto, se você tiver procurando formas de testar usando Javascript/CoffeeScript, o PhantomJS pode te ajudar com certeza, e o CasperJS pode ser uma opção dentre as várias existentes.

Se quiser saber mais, sobre o PhantomJS o projeto é bem documentado, portanto dê uma olhada na doc e pra saber do CasperJS, veja a documentação e principalmente os samples.

Um comentário sobre “Brincando com PhantomJS e CasperJS

  1. Pingback: Brincando com PhantomJS e CasperJS | Qualidade de Software

Deixe um comentário