A arte de desenvolver testes - Cucumber + Capybara



  • @stefanteixeira obrigadão Stefan, interessante esse Gradle, não tinha ouvido falar, tem bastante recurso, tem algum exemplo usando o cucumber integrado?



  • @Reinaldo O Gradle é uma ferramenta de build, assim como o Ant e o Maven. A diferença é que ele pegou o melhor dos dois mundos: a flexibilidade do Ant e a convenção sobre configuração do Maven (além dos repositórios). Em vez de ficar escrevendo seu build em XML, vc escreve scripts em Groovy. Pra desenvolver em Android, o Gradle é a ferramenta de build padrão, inclusive.

    Sobre integração com o Cucumber, eu não cheguei a usar, mas no repositório do Cucumber-JVM tem umas instruções pra usar com o Gradle: https://github.com/cucumber/cucumber-jvm/tree/master/examples/java-gradle

    Abs



  • Muito bom @thiagompereira estava obrigado pela clara explicação.

    Abç


  • MVP

    @Luis-Henrique-Chagas-Leite esse já ta meio obsoleto. Da uma olhadinha na iniciativa Automation For all - Capybara for All no meu Github: https://github.com/thiagomarquessp/capybaraforall.

    Qualquer dúvida, crítica e coisas do tipo da um toque =).

    Abs.



  • Ola @thiagompereira,

    Muito legal a iniciativa tentando ajudar a galera a dar uma up-skill em automacao. Eu trabalho com testes de aplicativos mobile (Android e IOS). Recentemente comecei a estudar Ruby e queria tentar aplicar esse conhecimento em automacao (web e/ou mobile).

    Comecei a seguir o teu tutorial: https://github.com/thiagomarquessp/capybaraforall/blob/master/Configuracoes.md, e o primeiro empecilho que encontro e relacionado a permissoes, pois eu uso Mac, quando tento instalar o gem file (gem install bundler). O erro gerado e esse:

    GUESTs-MacBook-Pro:~ GUEST$ gem install bundler
    Fetching: bundler-1.12.5.gem (100%)
    ERROR: While executing gem … (Gem::FilePermissionError)
    You don’t have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

    Dei uma pesquisada no stackoverflow e outros lugares tentando encontrar resposta para esse problema, mas ate agora nada… Nao sei se tu ou alguem mais desse forum ja passou por algum problema semelhante?

    Valeu a a atencao,
    Lucas



  • @Lucas-Silva , não sei como se faz isto no Mac, mas você já tentou dar permissão de escrita no diretório /Library/Ruby/Gems/2.0.0 directory ? Estes problemas de permissão costumam ter a mesma solução independentemente do SO.


  • MVP

    @thiagompereira Vc instalou direitinho o ruby no seu mac com rvm ou rbenv? Não tem segredo … é mais fácil pra MAC inclusive… eu uso no meu dia a dia. me chama no skype ai: thiagobirobiro



  • Estou seguindo pelo projeto do Github “CapybaraForAll” achei muito bom, está contribuindo para meu treinamento pessoal. Acho que a galera pode ir por lá. está mais atual.


  • MVP

    @Luis-Henrique-Chagas-Leite Sim, ele ta bemmmmm mais atual =) … Vida fácil ali!



  • @thiagompereira man, te add no skype. Gostaria de saber se ja ocorreu de você enfrentar o problema de validação com aquelas imagens, pq acho que o site do walmart me pegou achando que é robô kkk.



  • @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.