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
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
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
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
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
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
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
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
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