• Nenhum resultado encontrado

TESTES IN-BROWSER EM RAILS COM CAPYBARA E WEBDRIVER. Maurício Linhares

N/A
N/A
Protected

Academic year: 2021

Share "TESTES IN-BROWSER EM RAILS COM CAPYBARA E WEBDRIVER. Maurício Linhares"

Copied!
23
0
0

Texto

(1)

TESTES IN-BROWSER EM

RAILS COM CAPYBARA E

WEBDRIVER

(2)

Quem?

 Maurício Linhares

 João Pessoa, terra que o sol nasce primeiro

(3)
(4)
(5)

A.C. – Antes do Capybara

 Teste na mão chamando o Selenium RC;

 Surge o WebRat que funciona quando acha que

deve e ainda chamando o Selenium RC;

(6)
(7)

Selenium RC

 Lento;

 WebServer em Java que de lá controla o

navegador como um controle remoto (remote control);

 Se você está do lado Java, é tudo uma maravilha,

(8)

Selenium original

 Selenium original era escrito em JavaScript;

 Browsers são muito chatos no que JavaScript pode

fazer ou não (como se você não soubesse disso);

 Lento (engines de JS antigas) e muita coisa ficava

(9)

Selenium 2 - WebDriver

 Escrito utilizando a forma nativa do browser de ser

controlado:

 Plugin no Firefox;

 Automation tools no IE;

 Fast! Fast! Fast!

(10)

D.C. – Depois do Capybara

 Como Webrat, mas com WebDriver já integrado e

utilizado por padrão;

 Sintaxe praticamente igual a dos testes antigos

escritos com Webrat;

 Está virando a opção padrão pra testes

(11)
(12)

Montando a fábrica de objetos

Dado /^que (?:o|os|a|as) seguint(?:e|es) (.+)

exist(?:e|em):$/ do |nome, table|

table.hashes.each do |hash|

Factory( nome.singularize, hash )

end end

(13)

Preenchendo um formulário de login

# language: pt

Funcionalidade:Fazer login do usuário

Como usuário do sistema

Eu quero me autenticar no mesmo

Para poder acessar meu carrinho de compras

Cenário: Fazer login

Dado que o seguinte usuario existe:

| nome | email | senha | senha_confirmation | | José da Silva | jose@silva.com| 123456 | 123456 |

E que estou na página de login

Quando preencho "email" com "jose@silva.com"

E preencho "senha" com "123456"

E pressiono "Enviar"

Então devo ver "Seja bem vindo a nossa loja, José da Silva"

(14)

features/support/paths.rb

def path_to(page_name)

case page_name

when /página inicial/

'/'

when 'listagem de produtos'

produtos_path

when 'página do carrinho'

itens_path

else

raise_path_error( page_name )

end end

(15)

Cadastrando um usuário

# language: pt

Funcionalidade:Cadastrar um usuário no sistema

Como usuário do sistema

Eu quero ser capaz de criar uma conta no mesmo Para poder me identificar e fazer meus pedidos

Cenário:Cadastro com sucesso

Dado que estou na página de cadastro de usuário

Quando preencho "usuario[nome]"com "Marcos Silva"

E preencho "usuario[email]"com "marcos.silva@email.com"

E preencho "usuario[senha]"com "123456"

E preencho "usuario[senha_confirmation]"com "123456"

E marco "usuario[termos_e_condicoes]"

E pressiono "Enviar"

Então devo ver "Dados recebidos com sucesso"

(16)

Testando chamadas Ajax

# language: pt

@javascript

Funcionalidade: Adicionar e remover itens do carrinho

Como usuário do sistema

Eu quero adicionar e remover itens ao carrinho Para ser capaz efetuar compras

Contexto:

Dado que os seguintes produtos existem:

| nome | preco |

| Agile Estimating and Planning | 30.00 | | Lean Software Development | 25.00 |

(17)

@javascript

 Capybara usa tags do Cucumber para marcar se a sua

funcionalidade precisa ser testada com JavaScript ou não;

 Não é necessário ter os arquivos em pastas separadas nem

implementar steps de forma diferente;

 Você deve instalar a gem “database_cleaner” para que o

banco de dados seja limpo;

 O próprio Capybara inicia um servidor e abre o navegador

(18)

Adicionando itens ao carrinho

Cenário: Adicionar item ao carrinho

Dado que estou na listagem de produtos

Quando adiciono "5" itens do produto "Lean Software Development" ao carrinho

(19)

Step específico

Quando /^adiciono "([^\"]*)" itens do produto "([^\"]*)" ao carrinho$/ do |quantidade, nome|

produto = Produto.find_by_nome( nome )

Quando "preencho \"quantidade\" com

\"#{quantidade}\" em \"#produto_#{produto.id}\"" Quando "pressiono \"Adicionar\" em

\"#produto_#{produto.id}\"“

(20)

Removendo itens do carrinho

Cenário: Remover itens do carrinho

Dado que estou na listagem de produtos

E adiciono "5" itens do produto "Lean Software Development" ao carrinho

E adiciono "5" itens do produto "Agile Estimating and Planning" ao carrinho

Quando vou pra página do carrinho

E removo o produto "Agile Estimating and Planning" do carrinho

Entao devo ver "Lean Software Development“

(21)

Step específico

Quando /^removo o produto "([^"]*)" do carrinho$/ do |nome|

produto = Produto.find_by_nome( nome )

Quando "clico em \"Remover produto\" em \"#produto_#{produto.id}\"“

(22)

Usando Chrome como navegador

padrão

Capybara::Driver::Selenium.class_eval do def self.driver

unless @driver

@driver = Selenium::WebDriver.for :chrome

at_exit do @driver.quit end end @driver end end

(23)

Referências

 Cucumber -http://wiki.github.com/aslakhellesoy/cucumber/  Capybara – http://github.com/jnicklas/capybara  Projeto de Exemplo -http://github.com/mauricio/linuxfi-loja  @mauriciojr

Referências

Documentos relacionados

[r]

2 No caso do controlo de grupo, estabeleça as ligações elétricas do controlo remoto com a unidade principal quando ligar ao sistema de operação simultânea (as ligações elétricas

Aprova as (IR 60 – 10) Instruções Reguladoras para a Organização e o Funcionamento do Programa de Atualização dos Diplomados pela Escola de Comando e Estado-Maior do

[r]

1 - Origem Geográfica das Escolas Lisboa Beja Faro Bragança Santarém Castelo Branco Coimbra Évora Leiria Portalegre Setúbal Viseu Estrangeiro... 55 e 56 – Memórias Terrenas de um

b) original de um dos seguintes documentos de identificação: Cédula de Identidade (RG), Carteira de Órgão ou Conselho de Classe, Carteira de Trabalho e Previdência Social

[r]

O Centro de Apoio à Aprendizagem (CAA), como “espaço dinâmico, plural e agregador dos recursos humanos e materiais”, bem como as atividades desenvolvidas no âmbito do PNPSE,