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)
Agile Brazil 2014 - Visual Regression Testing com PhantomCSS
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
Agile Brazil 2014 - Visual Regression Testing com PhantomCSS
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

PDF
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
PDF
TDC 2014 SP - Visual Regression Testing com PhantomCSS
PDF
Agile Brazil 2015 - Testando na Nuvem a UI e o JavaScript de sua aplicação
PDF
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
PDF
Mtc docker - utilizando no seu dia a dia
PPTX
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
PDF
Minas Testing Conference 2016 - Testes de Carga com Locust
PDF
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
TDC 2014 SP - Visual Regression Testing com PhantomCSS
Agile Brazil 2015 - Testando na Nuvem a UI e o JavaScript de sua aplicação
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
Mtc docker - utilizando no seu dia a dia
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem

Mais procurados (19)

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

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

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

Mais de Stefan Teixeira (20)

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

Último (19)

PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Aula04-Academia Heri- Tecnologia Geral 2025
COBITxITIL-Entenda as diferença em uso governança TI
Processos na gestão de transportes, TM100 Col18
Aula 18 - Manipulacao De Arquivos python
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Apple Pippin Uma breve introdução. - David Glotz
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26

Agile Brazil 2014 - Visual Regression Testing com PhantomCSS