Protractor com Xvfb para
Integração Contínua
AgileTesters Conference 2017
Agenda
• Apresentação;
• Problema;
• Protractor;
• Integração Contínua;
• Headless Browsers;
• Xvfb;
• Dicas do dia;
Apresentação
• Marcelo Soares
• Formado em computação pela UNESP-Bauru;
• Trabalho com testes desde 2010;
• QA na
Problema
• No mundo “ágil” em que vivemos, todos somos
obrigados a queremos testar tudo, toda hora, de
todas as maneiras possíveis, mas o que fazer para
rodar seus testes end-to-end em um servidor que
não possui interface gráfica?
Protractor
• Framework para testes end-to-end para aplicações
em Angular e AngularJS;
• Esperas automáticas*;
• Roda os testes através da interface (como se fosse
um usuário de verdade);
• Roda sobre o WebDriver;
* as esperas podem ser desabitadas e o protractor pode ser usado para qualquer aplicação web
Protractor
• Fácil setup;
• Bastante utilizado (suporte da comunidade -
https://github.com/angular/protractor);
• Utiliza javascript;
Continuous Integration
https://insights.sei.cmu.edu/devops/2015/01/continuous-integration-in-devops-1.html
Headless Browsers
• Browsers sem interface gráfica, mas que
conseguem executar ações dentro de uma
determinada URL;
• Testes mais rápidos;
• SO não precisa de interface gráfica;
Headless Browsers
• Por que não usar PhantomJS com Protractor?
• Comportamento diferente dos browsers reais em
algumas aplicações;
• Falsos positivos;
• Aumenta o custo de manutenção;
Headless Browsers
• A própria equipe do Protractor não recomenda o
uso do PhantomJS:
“Note: We recommend against using PhantomJS for tests with
Protractor. There are many reported issues with PhantomJS
crashing and behaving differently from real browsers.”
Xvfb
• X - sistema de display utilizado pelo Linux (X11);
• Virtual framebuffer X server for X Version 11;
• Fornece um buffer falso para programas gráficos
escreverem sobre ele, permitindo que qualquer
programa rode “headless”;
• Não é tão rápido quanto um headless browser;
• https://www.x.org/archive/X11R7.6/doc/man/man1/Xvfb
.1.xhtml;
Xvfb
• Como instalar o Xvfb?
• Instalando os browsers:
Xvfb
• Rodando seu browser no Xvfb:
• xvfb-run <browser> <URL>
• Protractor:
DEMO
Xvfb
• Não é um headless browser!
• Seus testes rodam no browser de verdade!!
Dicas do dia!
• Não use Protractor para testar TUDO, mantenha o foco
no end-to-end;
• Aprenda a usar o arquivo de configuração do
Protractor;
• Leia a documentação da API;
• Não use texto em validações nem para encontrar
elementos;
• Participe da comunidade =)
marcelorss@live.com
https://br.linkedin.com/in/marcelorss
@marcelojoale
Obrigado!

ATC2017 SP - Protractor com XVFB para CI

  • 1.
    Protractor com Xvfbpara Integração Contínua AgileTesters Conference 2017
  • 2.
    Agenda • Apresentação; • Problema; •Protractor; • Integração Contínua; • Headless Browsers; • Xvfb; • Dicas do dia;
  • 3.
    Apresentação • Marcelo Soares •Formado em computação pela UNESP-Bauru; • Trabalho com testes desde 2010; • QA na
  • 4.
    Problema • No mundo“ágil” em que vivemos, todos somos obrigados a queremos testar tudo, toda hora, de todas as maneiras possíveis, mas o que fazer para rodar seus testes end-to-end em um servidor que não possui interface gráfica?
  • 5.
    Protractor • Framework paratestes end-to-end para aplicações em Angular e AngularJS; • Esperas automáticas*; • Roda os testes através da interface (como se fosse um usuário de verdade); • Roda sobre o WebDriver; * as esperas podem ser desabitadas e o protractor pode ser usado para qualquer aplicação web
  • 6.
    Protractor • Fácil setup; •Bastante utilizado (suporte da comunidade - https://github.com/angular/protractor); • Utiliza javascript;
  • 7.
  • 8.
    Headless Browsers • Browserssem interface gráfica, mas que conseguem executar ações dentro de uma determinada URL; • Testes mais rápidos; • SO não precisa de interface gráfica;
  • 9.
    Headless Browsers • Porque não usar PhantomJS com Protractor? • Comportamento diferente dos browsers reais em algumas aplicações; • Falsos positivos; • Aumenta o custo de manutenção;
  • 10.
    Headless Browsers • Aprópria equipe do Protractor não recomenda o uso do PhantomJS: “Note: We recommend against using PhantomJS for tests with Protractor. There are many reported issues with PhantomJS crashing and behaving differently from real browsers.”
  • 11.
    Xvfb • X -sistema de display utilizado pelo Linux (X11); • Virtual framebuffer X server for X Version 11; • Fornece um buffer falso para programas gráficos escreverem sobre ele, permitindo que qualquer programa rode “headless”; • Não é tão rápido quanto um headless browser; • https://www.x.org/archive/X11R7.6/doc/man/man1/Xvfb .1.xhtml;
  • 12.
    Xvfb • Como instalaro Xvfb? • Instalando os browsers:
  • 13.
    Xvfb • Rodando seubrowser no Xvfb: • xvfb-run <browser> <URL> • Protractor:
  • 14.
  • 15.
    Xvfb • Não éum headless browser! • Seus testes rodam no browser de verdade!!
  • 16.
    Dicas do dia! •Não use Protractor para testar TUDO, mantenha o foco no end-to-end; • Aprenda a usar o arquivo de configuração do Protractor; • Leia a documentação da API; • Não use texto em validações nem para encontrar elementos; • Participe da comunidade =)
  • 17.