A arte de desenvolver testes - Cucumber + Capybara



  • @Bruno-Fernandes Fala Bruno, nao tentei isso ainda, para ser sincero acho que nao teria a capacidade tecnica para fazer essa modificacao, e acabaria por modificar algo errado haha Vou continuar pesquisando e lendo, ate encontrar a resposta. Valeu pela ajuda!



  • @thiagompereira Se eu nao me engano ruby ja vem pre-instalado no mac?

    Essa msg retornada pelo terminal quando tento checar versao do ruby:

    TMMAC78:~ ldasilva$ ruby -v
    ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]

    Preciso instalar a versao 1.9?

    Valeuuu


  • MVP

    @Lucas-Silva , realmente o Mac vem com uma instalação de ruby, normalmente é para “uso próprio”. A maioria das pessoas tendem a usar algum outro tipo de versão na sua máquina para não se incomodar com permissão.
    Claro, que a dica do @Bruno-Fernandes é válida. Vai na pasta e “eleva” as permissões da pasta onde fica o ruby (sudo bla bla bla…)
    Caso não saiba, dá para fazer no modo gráfico (ir lá na pasta, “get info”, etc…etc…

    Se for usar ou o rvben ou rvm. Recomendo dar uma lida forte no modo de instalação pois sempre vai dar alguma merdinha no meio do processo de instalação…SEMPRE…

    Qualquer coisa, vai pedindo ajuda em um outro post que a galera aqui é bem receptiva (quando se sabe né…hehheheheh)



  • @thiagompereira ou @stefanteixeira Eu tenho o seguinte problema na minha máquina windows, quero usar o should ou o expect, sempre aparece NoMethodError: undefined method `have_content’

    # Verifica se o campo foi preenchido.
    user_elem = page.find(:id, @elem_id)
    #page.should have_selector(:id, @elem_id, :value => @send_value)
    expect(user_elem).to have_content(@send_value)
    
    NoMethodError: undefined method `have_selector' for #<LoginPage:0x00000004d7c1f8>
    NoMethodError: undefined method `expect' for #<LoginPage:0x00000004d18c70>
    Did you mean?  exec
    

    Alguns blog pala pra colocar o require ‘spec_helper’, mas no caso ele não é encontrado. O que vocês acham que pode ser? Possivelmente pode ser um problema de ambiente.


  • MVP

    @ReinaldoMateus Pra usar o expect vc tem que colocar a gem do rspec e dar require nela no arquivo de env.

    Aproveita e coloca no Gemfile também!



  • Não foi, ainda continua dando o erro, vou tentar no linux pra ver se não foi uma instalação zoada.



  • Se o problema fosse na gem dava pau na hora de fazer o require @ReinaldoMateus

    Mostra como tá sua configuração de ambiente :)



  • Esta falando do env.rb, segue:

    require 'capybara'
    require 'cucumber'
    require 'selenium-webdriver'
    require 'site_prism'
    require 'rspec'
    require 'yaml'
    require 'fileutils'
    require 'i18n'
    require_relative 'helper.rb'
    require 'imatcher'
    require 'chunky_png'
    require 'os'
    
    
    BROWSER = ENV['BROWSER']
    ENVIRONMENT_TYPE = ENV['ENVIRONMENT_TYPE']
    
    ## register driver according with browser chosen
    Capybara.register_driver :selenium do |app|
    
      Capybara.default_max_wait_time = 120
      if BROWSER.eql?('chrome')
        caps = Selenium::WebDriver::Remote::Capabilities.chrome(
        'chromeOptions' => {
      "args" => [""]
    }
    )
    Capybara::Selenium::Driver.new(app, {:browser => :chrome, :desired_capabilities => caps})
    elsif BROWSER.eql?('firefox')
    Capybara::Selenium::Driver.new(app, browser: :firefox)
    elsif BROWSER.eql?('internet_explorer')
    Capybara::Selenium::Driver.new(app, browser: :internet_explorer)
    end
    end
    
    IMATCHER = Imatcher::Matcher.new mode: :grayscale, tolerance: 1


  • Faz um tempo que não uso rspec + capybara… mas não ta faltando ai o:

    require "capybara/rspec"
    

    so não to entendendo pq ta usando cucumber + rspec… é mta abstração :/



  • Eu estou aprendendo zero brincando, eu mesmo não sei pq no ruby tem que importar tanta coisa, somente queria usar o cucumber com cabybara, só queria que ele fizesse o expect por enquanto.



  • No linux deu o mesmo erro, o problema é com SitePrism que estou usando nas pages, quando coloco nos steps_definitions ou numa classe isolada ele funciona o expect, apesar de o SitePrism ser simples de usar, não consigo importar uma classe dentro dele sem que a outra tenha os elements, alguém tem uma ideia pq?



  • Então… são contextos diferentes @ReinaldoMateus

    da uma lida nisso --> http://thewanderingcoder.com/2015/06/testing-with-page-objects-setup/


  • MVP

    @ReinaldoMateus cara, vamos lá. Vc disse que tá começando certo? Então abstrair por hora do SitePrism e começa do zero … https://github.com/thiagomarquessp/capybaraforall

    Tem da parte 1 até a parte 4 que aborda do início até page objects

    Outro detalhe, vc tem um monte de gem que não faz sentido nenhum estar aí.

    Esses repositórios eu fiz com intuito de ensinar o básico em Cucumber e capybara (esse artigo faz tempo que fiz e não atualizei kkk). Enfim, segue isso lá… me add no Skype que eu abro um Hangout e fazemos juntos OK: thiagobirobiro

    Valeu.



  • Obrigado @Leonardo-Galani e @thiagompereira, vou amanhã acordar cedo pra estudar esse links, consegui fazer funcionar o cucumber + capybara e SitePrism, estou acostumado com Java e Python, no entanto ruby é bem diferente, a syntax é bem legal, no entanto um pouco confuso de configurar o ambiente. Achei que o SitePrism abstrai muito, prefiro fazer sem, bem interessante o site que passou Galani mostrando a diferença.



  • @thiagompereira Valeu Thiago pela ajuda, conseguir fazer conforme me auxiliou do zero, passo a passo, somente com que era necessário, ficou legal o projetinho, fico te devendo uma!!!


  • MVP

    @ReinaldoMateus said in A arte de desenvolver testes - Cucumber + Capybara:

    @thiagompereira Valeu Thiago pela ajuda, conseguir fazer conforme me auxiliou do zero, passo a passo, somente com que era necessário, ficou legal o projetinho, fico te devendo uma!!!

    Tamo junto meu velho!!! Daí pra frente só alegria!!! =)



  • @thiagompereira and all rsrsrsrs
    tô tentando passar pra “fase” de page-objects e tô indo pelo seu exemplo lá do github, mas estou com um problema, que não encontrei solução, ainda…
    Tá dando isso quando executo: no sessionId in returned payload (Selenium::WebDriver::Error::WebDriverError)
    ./features/step_definitions/cadastro_groupon.rb:6:in `/^que eu estou na página de cadatro
    do Groupon$/'
    Valeu pessoal.



  • @Lucas-Alvine esse erro ocorre por que vc esta usando a ultima versão do selenium web driver, instala a ultima versão do Geckodriver tambem. v0.15 que deve resolver teu problema. qq duvida me chama no PV que eu posso te ajudar. abraço.



  • Valeu @Fernando-Bonilla vou fazer isso, qualquer coisa, te chamo!



  • Funfou @Fernando-Bonilla valeuu!!!