Your SlideShare is downloading. ×
0
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Testes In Browser Em Rails Com Capybara E Webdriver
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Testes In Browser Em Rails Com Capybara E Webdriver

7,417

Published on

Apresentação sobre testes utilizando Rails, Capybara, WebDriver e Cucumber. …

Apresentação sobre testes utilizando Rails, Capybara, WebDriver e Cucumber.

Palestra apresentada originalmente no OxenteRails 2010.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,417
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
36
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. TESTES IN-BROWSER EM RAILS COM CAPYBARA E WEBDRIVER Maurício Linhares – mauricio.linhares@gmail.com
  • 2. Quem?  Maurício Linhares  João Pessoa, terra que o sol nasce primeiro  Ruby e Java developer;
  • 3. De Onde?
  • 4. Testes “in-browser” em Rails – A.C.
  • 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;  Timeouts, loops eternos, browser que não abre...;
  • 6. Selenium RC
  • 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, se não, pois é...
  • 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 de fora;
  • 9. Selenium 2 - WebDriver  Escrito utilizando a forma nativa do browser de ser controlado:  Plugin no Firefox;  Automation tools no IE;  Fast! Fast! Fast!  API orientada a objetos e simplificada;
  • 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 “in- browser” pra apps Rails com Cucumber;
  • 11. DEMO
  • 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" E devo estar na listagem de produtos
  • 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" E devo estar na listagem de produtos
  • 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 pra fazer o serviço;
  • 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 Então devo ver "Lean Software Development - 5"
  • 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}"“ end
  • 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“ Mas não devo ver "Agile Estimating and Planning"
  • 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}"“ end
  • 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

×