Slide 1

Slide 1 text

Testes e automação com PhantomJS e CasperJS Henrique Vicente https://github.com/henvic/phantom-casper-simple-talk https://speakerdeck.com/henvic/testes-e-automacao-com-phantomjs-e-casperjs 2nd-open-meeting-pernambucojs Wednesday, August 14, 13

Slide 2

Slide 2 text

phantomjs.org casperjs.org Instalação fácil * O site de CasperJS “recomenda” o 1.1-beta, ao invés do 1.0 (estável) Wednesday, August 14, 13

Slide 3

Slide 3 text

testes de integração [mais rápidos] web scraping automação (i.e., inserção de dados em massa) renderização remota (e.g., gerar PDF a partir de template em HTML e CSS para envio automático de relatórios via email) Wednesday, August 14, 13

Slide 4

Slide 4 text

Um web stack baseado no WebKit com uma API em JavaScript Feito com Webkit, Qt (não node.js) headless Remote debugging GhostDriver: web driver para Selenium Wednesday, August 14, 13

Slide 5

Slide 5 text

page.evaluate() magic Wednesday, August 14, 13

Slide 6

Slide 6 text

page.evaluate() magic O código é executado no contexto da página, dentro de uma sandbox “um console.log(“foo”) dentro do evaluate() é diferente de um console.log(“foo”) fora” Wednesday, August 14, 13

Slide 7

Slide 7 text

Wednesday, August 14, 13

Slide 8

Slide 8 text

PhantomJS API Objeto phantom Vários módulos 1. webpage 2. system 3. fs 4. webserver 5. child_process Você pode criar seu próprio módulo Wednesday, August 14, 13

Slide 9

Slide 9 text

phantom (global) .cookies .addCookie .deleteCookie .exit .injectJS ... Wednesday, August 14, 13

Slide 10

Slide 10 text

Módulo WebPage Funções Propriedades Callbacks Triggers para callbacks Wednesday, August 14, 13

Slide 11

Slide 11 text

Módulo System Propriedades: pid platform os env args parâmetros como em git --commit “foo” Wednesday, August 14, 13

Slide 12

Slide 12 text

Módulo FileSystem Properties separator {String} workingDirectory {String} Stream object retornado por fs.open Funções Wednesday, August 14, 13

Slide 13

Slide 13 text

WebServer, child_process... WebServer Permite a criação de um servidor web child_process Torna possível a invocação de subprocessos e comunicar com eles via stdin / stdout / stderr Wednesday, August 14, 13

Slide 14

Slide 14 text

Remote debugging http://localhost:9000/ em browser WebKit-based --remote-debugger-autorun=yes ou __run() no browser Wednesday, August 14, 13

Slide 15

Slide 15 text

Wednesday, August 14, 13

Slide 16

Slide 16 text

Framework para testes desenvolvida em JavaScript Funciona em cima do PhantomJS, e mais recentemente também do SlimerJS (baseado em Gecko) Também possui módulos, como o PhantomJS (alguns similares) Wednesday, August 14, 13

Slide 17

Slide 17 text

Teste funcional com o CasperJS Verificando se o WordPress está funcionando corretamente: - login - botão para carregar formulário de novo post - editor do formulário - criação do formulário - etc Wednesday, August 14, 13

Slide 18

Slide 18 text

Teste funcional com o CasperJS Wednesday, August 14, 13

Slide 19

Slide 19 text

Fim Testes e automação com PhantomJS e CasperJS Henrique Vicente https://github.com/henvic/phantom-casper-simple-talk https://speakerdeck.com/henvic/testes-e-automacao-com-phantomjs-e-casperjs 2nd-open-meeting-pernambucojs Wednesday, August 14, 13

Slide 20

Slide 20 text

Fontes https://github.com/ariya/phantomjs/wiki/API-Reference https://github.com/n1k0/casperjs/wiki http://docs.casperjs.org/en/latest/ Imagens: http://menina-voadora.blogspot.com.br/2012/08/ historias-do-povo.html Wednesday, August 14, 13