SlideShare uma empresa Scribd logo
Visual Regression Testing 
com PhantomCSS 
Stefan Teixeira 
stefanfk@gmail.com / stefanteixeira.com.br
Sobre o palestrante 
Stefan Teixeira 
• QA/DevOps Engineer @ Rastreabilidade Brasil 
• Bacharel em Ciência da Computação pela UFRJ 
• Finalizando MBA em Garantia de Qualidade de Software pela Escola 
Politécnica da UFRJ 
• Mantém um blog técnico sobre testes: stefanteixeira.com.br 
• Certificado CTAL-TM / TA pelo ISQTB e CPRE-FL pelo IREB 
Contatos: 
• E-mail: stefanfk@gmail.com 
• Twitter: twitter.com/stefan_teixeira 
• Facebook: facebook.com/stefan.teixeira 
• LinkedIn: linkedin.com/in/stefanteixeira 
• GitHub: github.com/stefanteixeira 
• SlideShare: slideshare.net/stefanteixeira
Visual Regression 
Testing
TW Radar (Jan/2014)
TW Radar (Jul/2014)
Motivação 
• Diminuir esforço de testes manuais 
• Tornar refactor de CSS mais simples 
• Identificar, de forma fácil e rápida, defeitos 
que não seriam encontrados tão facilmente 
com testes manuais
Fonte: http://www.creativebloq.com/css3/4-tools-automatic-css-testing-7133777 (Simon Madine)
Usos 
• Comparar screenshots 
• Validar design responsivo 
• Validar valores de CSS
Tools
PhantomCSS
O que é? 
• Módulo do CasperJS para Visual Regression 
Testing usando PhantomJS e Resemble.js 
• Criado por James Cryer (Huddle) 
• https://github.com/Huddle/PhantomCSS
O que é? 
• Módulo do CasperJS para Visual 
Regression Testing usando PhantomJS e 
Resemble.js
Resemble.js 
• Biblioteca para análise e comparação de 
imagens, usando JavaScript e HTML5 
• Criada por James Cryer, especialmente para 
o PhantomCSS (mas você pode baixar e 
utilizá-la individualmente :) 
• http://huddle.github.io/Resemble.js
PhantomJS 
• Headless Browser mais popular atualmente 
• Utiliza engine gráfica WebKit, a mesma do 
Safari e do Chrome (até versão 27 - Abr/2013) 
• Hoje, o Chrome usa sua própria engine (Blink), que é um 
fork do WebKit 
• Criado por Ariya Hidayat 
• phantomjs.org / github.com/ariya/phantomjs
CasperJS 
• Ferramenta que provê recursos de 
navegação e testes para o PhantomJS 
(WebKit) e SlimerJS(Gecko) 
• Criado por Nicolas Perriault 
• casperjs.org / github.com/n1k0/casperjs
Exemplo com CasperJS
Como o PhantomCSS funciona? 
• Pega screenshots capturados pelo CasperJS 
• Compara esses screenshots com uma 
baseline de imagens, usando o Resemble.js 
• Caso ocorra algum erro, gera imagens com o 
diff entre as comparadas
Exemplo com PhantomCSS
Boas práticas 
• Nomeie seus screenshots 
• Evite usar seletores CSS3 muito complexos 
• Não use o PhantomCSS para substituir testes 
funcionais 
• Cuidado com screenshots da tela inteira, teste 
componentes da UI de forma individual 
• Cuidado com dados dinâmicos 
➡ hideSelector 
➡ mismatchTolerance
Case
Descrição do Case 
• Aplicação Web com design responsivo 
(Bootstrap) 
• Primeira release 
• 8 telas 
• 6 resoluções usadas para teste (6+ segundo 
W3C) 
• Screenshots da tela inteira (desculpa!) 
• 6 x 8 = 48 screenshots
Primeira execução 
Tempo de execução: 111,7ms ~ pouco menos 
que 2 minutos
Segunda execução 
Tempo de execução: 146,2ms ~ 2,5 minutos
Hands-on
Hands-on 
• Setup e página de exemplo 
• Rodando o primeiro teste para gerar 
screenshots 
• Alterando o CSS e vendo o teste falhar 
• Vendo as imagens de diff 
• Projeto de exemplo no GitHub 
• PhantomCSS + Jenkins + ChuckNorris Plugin
Veja também…
Resurrectio 
http://makina-corpus.com/blog/metier/2014/record-casperjs-tests-using-resurrectio
CasperBox 
http://casperbox.com
PhantomFlow 
https://github.com/Huddle/PhantomFlow
CasperJS + Page Objects 
http://jsebfranck.blogspot.fr/2014/03/page-object-pattern-with-casperjs.html
Obrigado! 
Stefan Teixeira 
stefanfk@gmail.com 
stefanteixeira.com.br 
@stefan_teixeira

Mais conteúdo relacionado

Mais procurados

Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Igor Abade
 
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Stefan Teixeira
 
Acelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosAcelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidos
Igor Abade
 
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
Stefan Teixeira
 
TDC 2015 São Paulo - Clean Code para Testers
TDC 2015 São Paulo - Clean Code para TestersTDC 2015 São Paulo - Clean Code para Testers
TDC 2015 São Paulo - Clean Code para Testers
Stefan Teixeira
 
Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!
minastestingconference
 
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvemTDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
Stefan Teixeira
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Stefan Teixeira
 
TechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NETTechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NET
Fabrício Catae
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipe
Wende Mendes
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
Júlio de Lima
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitido
Leonardo Galani
 
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
Igor Abade
 
Como testar sua aplicação Android com Robotium
Como testar sua aplicação Android com RobotiumComo testar sua aplicação Android com Robotium
Como testar sua aplicação Android com Robotium
Thayse Severiano
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa
Loiane Groner
 
TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...
TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...
TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...
Stefan Teixeira
 
POG - Definição e Conceitos
POG - Definição e ConceitosPOG - Definição e Conceitos
POG - Definição e Conceitos
Luciano Reis
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
Lucas Caton
 

Mais procurados (19)

Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
 
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
 
Acelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosAcelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidos
 
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
 
TDC 2015 São Paulo - Clean Code para Testers
TDC 2015 São Paulo - Clean Code para TestersTDC 2015 São Paulo - Clean Code para Testers
TDC 2015 São Paulo - Clean Code para Testers
 
Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!
 
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvemTDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
TDC 2015 Floripa - Visual Regression Testing em ambientes na nuvem
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
 
TechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NETTechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NET
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipe
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitido
 
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
Smoke tests, deployment e rollback automatizados (Mobile & Cloud Hack Days 2016)
 
Como testar sua aplicação Android com Robotium
Como testar sua aplicação Android com RobotiumComo testar sua aplicação Android com Robotium
Como testar sua aplicação Android com Robotium
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa
 
TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...
TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...
TDC 2015 São Paulo - Testes Automatizados de todos os tipos utilizando biblio...
 
POG - Definição e Conceitos
POG - Definição e ConceitosPOG - Definição e Conceitos
POG - Definição e Conceitos
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
 

Semelhante a Agile Brazil 2014 - Visual Regression Testing com PhantomCSS

Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
minastestingconference
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
Stefan Teixeira
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
Stefan Teixeira
 
[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes
[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes
[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes
GUTS-RS
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
ASP.NET Core Day Campinas
ASP.NET Core Day CampinasASP.NET Core Day Campinas
ASP.NET Core Day Campinas
Jaqueline Ramos
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Renato Groff
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Renato Groff
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
Ari Stopassola Junior
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Renato Groff
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
Stefan Teixeira
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Renato Groff
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
Vitor Pellegrino
 
Drupal e a Qualidade de Software
Drupal e a Qualidade de SoftwareDrupal e a Qualidade de Software
Drupal e a Qualidade de Software
Daniel Carvalhinho
 
Agile Brazil 2018
Agile Brazil 2018Agile Brazil 2018
Agile Brazil 2018
Karla Silva
 
Mobile Conf 2015 - Testes de Unidade com Robolectric
Mobile Conf 2015 - Testes de Unidade com RobolectricMobile Conf 2015 - Testes de Unidade com Robolectric
Mobile Conf 2015 - Testes de Unidade com Robolectric
Lucas Albuquerque
 
Mobile Conf 2015 - Testes de Unidade com Robolectric
Mobile Conf 2015 - Testes de Unidade com RobolectricMobile Conf 2015 - Testes de Unidade com Robolectric
Mobile Conf 2015 - Testes de Unidade com Robolectric
Stefan Teixeira
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
Elias Nogueira
 

Semelhante a Agile Brazil 2014 - Visual Regression Testing com PhantomCSS (20)

Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
Visual Regression Testing em ambientes na nuvem - Stefan Teixeira
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes
[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes
[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
ASP.NET Core Day Campinas
ASP.NET Core Day CampinasASP.NET Core Day Campinas
ASP.NET Core Day Campinas
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Drupal e a Qualidade de Software
Drupal e a Qualidade de SoftwareDrupal e a Qualidade de Software
Drupal e a Qualidade de Software
 
Agile Brazil 2018
Agile Brazil 2018Agile Brazil 2018
Agile Brazil 2018
 
Mobile Conf 2015 - Testes de Unidade com Robolectric
Mobile Conf 2015 - Testes de Unidade com RobolectricMobile Conf 2015 - Testes de Unidade com Robolectric
Mobile Conf 2015 - Testes de Unidade com Robolectric
 
Mobile Conf 2015 - Testes de Unidade com Robolectric
Mobile Conf 2015 - Testes de Unidade com RobolectricMobile Conf 2015 - Testes de Unidade com Robolectric
Mobile Conf 2015 - Testes de Unidade com Robolectric
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
 

Mais de Stefan Teixeira

Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
Scrum Gathering Portugal 2016 - Containerizing Tests with DockerScrum Gathering Portugal 2016 - Containerizing Tests with Docker
Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
Stefan Teixeira
 
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnitAgile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Stefan Teixeira
 
Latinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open sourceLatinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open source
Stefan Teixeira
 
Ágiles 2016 - Using open source tools to support Continuous Delivery
Ágiles 2016 - Using open source tools to support Continuous DeliveryÁgiles 2016 - Using open source tools to support Continuous Delivery
Ágiles 2016 - Using open source tools to support Continuous Delivery
Stefan Teixeira
 
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
Stefan Teixeira
 
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
Stefan Teixeira
 
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecerTDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
Stefan Teixeira
 
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCTDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
Stefan Teixeira
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Stefan Teixeira
 
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
Stefan Teixeira
 
Meetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com LocustMeetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com Locust
Stefan Teixeira
 
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
Stefan Teixeira
 
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxariaTDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
Stefan Teixeira
 
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e PromisesTDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
Stefan Teixeira
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Stefan Teixeira
 
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesVR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
Stefan Teixeira
 
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorMeetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Stefan Teixeira
 
Meetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
Meetup AngularJS Rio - Testes e2e para apps AngularJS com ProtractorMeetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
Meetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
Stefan Teixeira
 
Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de Docker
Stefan Teixeira
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de Docker
Stefan Teixeira
 

Mais de Stefan Teixeira (20)

Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
Scrum Gathering Portugal 2016 - Containerizing Tests with DockerScrum Gathering Portugal 2016 - Containerizing Tests with Docker
Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
 
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnitAgile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
 
Latinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open sourceLatinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open source
 
Ágiles 2016 - Using open source tools to support Continuous Delivery
Ágiles 2016 - Using open source tools to support Continuous DeliveryÁgiles 2016 - Using open source tools to support Continuous Delivery
Ágiles 2016 - Using open source tools to support Continuous Delivery
 
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
 
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
 
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecerTDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
 
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCTDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
 
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
 
Meetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com LocustMeetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com Locust
 
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
 
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxariaTDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
 
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e PromisesTDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
 
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesVR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
 
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorMeetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
 
Meetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
Meetup AngularJS Rio - Testes e2e para apps AngularJS com ProtractorMeetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
Meetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
 
Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de Docker
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de Docker
 

Último

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
2m Assessoria
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (10)

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

Agile Brazil 2014 - Visual Regression Testing com PhantomCSS

  • 1. Visual Regression Testing com PhantomCSS Stefan Teixeira stefanfk@gmail.com / stefanteixeira.com.br
  • 2. Sobre o palestrante Stefan Teixeira • QA/DevOps Engineer @ Rastreabilidade Brasil • Bacharel em Ciência da Computação pela UFRJ • Finalizando MBA em Garantia de Qualidade de Software pela Escola Politécnica da UFRJ • Mantém um blog técnico sobre testes: stefanteixeira.com.br • Certificado CTAL-TM / TA pelo ISQTB e CPRE-FL pelo IREB Contatos: • E-mail: stefanfk@gmail.com • Twitter: twitter.com/stefan_teixeira • Facebook: facebook.com/stefan.teixeira • LinkedIn: linkedin.com/in/stefanteixeira • GitHub: github.com/stefanteixeira • SlideShare: slideshare.net/stefanteixeira
  • 6.
  • 7. Motivação • Diminuir esforço de testes manuais • Tornar refactor de CSS mais simples • Identificar, de forma fácil e rápida, defeitos que não seriam encontrados tão facilmente com testes manuais
  • 9. Usos • Comparar screenshots • Validar design responsivo • Validar valores de CSS
  • 10. Tools
  • 12. O que é? • Módulo do CasperJS para Visual Regression Testing usando PhantomJS e Resemble.js • Criado por James Cryer (Huddle) • https://github.com/Huddle/PhantomCSS
  • 13. O que é? • Módulo do CasperJS para Visual Regression Testing usando PhantomJS e Resemble.js
  • 14. Resemble.js • Biblioteca para análise e comparação de imagens, usando JavaScript e HTML5 • Criada por James Cryer, especialmente para o PhantomCSS (mas você pode baixar e utilizá-la individualmente :) • http://huddle.github.io/Resemble.js
  • 15. PhantomJS • Headless Browser mais popular atualmente • Utiliza engine gráfica WebKit, a mesma do Safari e do Chrome (até versão 27 - Abr/2013) • Hoje, o Chrome usa sua própria engine (Blink), que é um fork do WebKit • Criado por Ariya Hidayat • phantomjs.org / github.com/ariya/phantomjs
  • 16. CasperJS • Ferramenta que provê recursos de navegação e testes para o PhantomJS (WebKit) e SlimerJS(Gecko) • Criado por Nicolas Perriault • casperjs.org / github.com/n1k0/casperjs
  • 18. Como o PhantomCSS funciona? • Pega screenshots capturados pelo CasperJS • Compara esses screenshots com uma baseline de imagens, usando o Resemble.js • Caso ocorra algum erro, gera imagens com o diff entre as comparadas
  • 20. Boas práticas • Nomeie seus screenshots • Evite usar seletores CSS3 muito complexos • Não use o PhantomCSS para substituir testes funcionais • Cuidado com screenshots da tela inteira, teste componentes da UI de forma individual • Cuidado com dados dinâmicos ➡ hideSelector ➡ mismatchTolerance
  • 21. Case
  • 22. Descrição do Case • Aplicação Web com design responsivo (Bootstrap) • Primeira release • 8 telas • 6 resoluções usadas para teste (6+ segundo W3C) • Screenshots da tela inteira (desculpa!) • 6 x 8 = 48 screenshots
  • 23.
  • 24. Primeira execução Tempo de execução: 111,7ms ~ pouco menos que 2 minutos
  • 25. Segunda execução Tempo de execução: 146,2ms ~ 2,5 minutos
  • 27. Hands-on • Setup e página de exemplo • Rodando o primeiro teste para gerar screenshots • Alterando o CSS e vendo o teste falhar • Vendo as imagens de diff • Projeto de exemplo no GitHub • PhantomCSS + Jenkins + ChuckNorris Plugin
  • 32. CasperJS + Page Objects http://jsebfranck.blogspot.fr/2014/03/page-object-pattern-with-casperjs.html
  • 33. Obrigado! Stefan Teixeira stefanfk@gmail.com stefanteixeira.com.br @stefan_teixeira