Skip to content

Commit

Permalink
Refactory informations about cucumber versions, Gemfile, etc.
Browse files Browse the repository at this point in the history
  • Loading branch information
thiagopereira-olx committed Feb 2, 2018
1 parent 48e574f commit 04fcb9c
Showing 1 changed file with 34 additions and 15 deletions.
49 changes: 34 additions & 15 deletions Configuracoes.md
Expand Up @@ -8,26 +8,43 @@ sudo apt-get install jq nodejs curl -qy
sudo npm install -g geckodriver
```

Só para explicar, eu instalei o Node e através do Node eu instalei o geckodriver com -g para ele instalar exatamente onde deve estar.
Para instalar o node no Mac é bem mais fácil:

```ruby
brew install node
```

Só para explicar, eu instalei o Node e através do Node eu instalei o geckodriver com -g para ele instalar de forma global e isso quer dizer que ele vai colocar o geckodriver exatamente onde ele deve estar.

Obs.: Usuários de Windows, o processo é parecido, instale o Node e no terminal ou no Cmder instale com os mesmos comandos npm Ok.

# Configuração do ambiente para automação.

Dado que estamos com ruby instalado e geckodriver instalado será necessário configurarmos o nosso ambiente de trabalho. E para isso vamos ter que instalar em primeiro lugar uma gem chamada bundler, que servirá como gerenciador das gems e suas dependências através do nosso arquivo Gemfile (falarei mais abaixo). Para instalar, basta rodar o seguinte comando:
Dado que estamos com **ruby** e o **geckodriver** instalado será necessário configurarmos o nosso ambiente de trabalho.

As bibliotecas no ruby são chamadas de **gems** e tudo que vamos precisar alguém pensou primeiro e criou uma gem e a comunidade da manutenção.

Pra começar um projeto, vamos precisar instalar uma gem chamada **bundler**, que servirá como gerenciador das gems e suas dependências através do nosso arquivo Gemfile (falarei mais abaixo).

Para instalar, basta rodar o seguinte comando:

```ruby
gem install bundler
```
Após a instalação do bundler, vamos agora criar um arquivo chamado Gemfile (exatamente desse jeito, sem extensão específica) e no seu conteúdo deverá conter:

Toda gem que eu precisar, antes de sair instalando de alegre, de uma olhada em no rubygems, que é o lugar onde as bibliotecas ficam disponíveis e isso é importante pra decidirmos qual versão vamos trabalhar. Quando procurarmos a gem que estamos querendo trabalhar, vai aparecer as versões, a forma de como ela deve ficar no Gemfile ou então a forma manual de instalação. Com isso devemos copiar e colar para que eu tenha o controle total das versões que estou trabalhando. Nós temos uma péssima mania de qualquer versão nova que sai, já saímos atualizando sem saber porque estamos instalando.

Dentro da raiz do seu projeto, crie um arquivo chamado Gemfile (exatamente desse jeito, sem extensão). A grosso modo, o Gemfile é um arquivo onde eu armazeno a coleção de gems que eu vou precisar para o meu projeto. Com ele não sou obrigado a instalar gem a gem na mão. [Aqui](https://tosbourn.com/what-is-the-gemfile/) tem uma boa explicação do que é e como deixá-lo mais eficaz e escalável, mas por hora vamos cria da seguinte maneira:

```ruby
source "https://rubygems.org"
source 'https://rubygems.org'

gem "cucumber"
gem "capybara"
gem "selenium-webdriver"
gem 'cucumber', '~> 3.1'
gem 'capybara', '~> 2.16', '>= 2.16.1'
gem 'selenium-webdriver', '~> 3.8'
```
Dessa maneira eu to deixando claro quais as versões que eu to trabalhando. O cucumber sofreu muitas mudanças da versão 2.4 pra versão 3 em diante. O objetivo desse refactory é justamente adaptar a essas novas mudanças.

Essas são as gems necessárias para um início de trabalho.

Cucumber será a base da nossa automação, utilizando Gherkin para escrita.
Expand All @@ -36,6 +53,8 @@ Capybara será o framework de desenvolvimento.

Selenium Webdriver será o Driver base e abrir o Firefox para automação.

Quando temos o Gemfile, podemos usar o bundler para instalar todas as gems e suas dependências, usando o seguinte comando:

```ruby
bundle install
```
Expand Down Expand Up @@ -77,8 +96,8 @@ support serve para colocarmos qualquer tipo de configuração para os nossos tes
Se vocês repararem quando o comando init é dado, um arquivo chamado env.rb é criado na pasta support e esse arquivo nada mais é que um arquivo de configuração para os testes, e nele deve conter TODAS as gems que você quer utilizar, antecedidos de um require e também alguma configuração específica para que TODA vez que eu rodar o comando cucumber, ele olhe nesse arquivo, verifica as gems e as configurações para poder seguir com o teste. Segue o exemplo que vamos utilizar:

```ruby
require "capybara/cucumber"
require "selenium-webdriver"
require 'capybara/cucumber'
require 'selenium-webdriver'

Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, :browser => :firefox)
Expand All @@ -89,16 +108,16 @@ Capybara.default_max_wait_time = 60

Capybara.app_host = "https://www.flube.com.br/"
```
Onde, require "gem a ser utilizada" eu estou falando que para rodar esse projeto, eu estou utilizando essa gem.
Onde, **require "gem a ser utilizada"** eu estou falando que para rodar esse projeto, eu estou utilizando essa gem.

Capybara.register_driver eu to informando que SIM, ele pode abrir o Firefox com o geckodriver :), porém, posso também passar o parâmetro :chrome mas isso não vai ser discutido aqui beleza.
**Capybara.register_driver** eu to informando que SIM, ele pode abrir o Firefox com o geckodriver :), porém, posso também passar o parâmetro :chrome mas isso não vai ser discutido aqui beleza.

Capybara.default_driver = :selenium (Defino o Driver que eu vou utilizar, no caso, Selenium Webdriver. Mais a frente falarei de Webkit como driver para rodar os testes em Headles, vulgo por baixo dos panos rsrsr);
**Capybara.default_driver = :selenium** (Defino o Driver que eu vou utilizar, no caso, Selenium Webdriver.

Capybara.default_max_wait_time = 60 (Time out definido nesse caso, em 60 segundos, mas o valor você que estabelece).
**Capybara.default_max_wait_time = 60** (Time out definido nesse caso, em 60 segundos, mas o valor você que estabelece).

Capybara.app_host eu coloco a url do produto que estou a trabalhar.
**Capybara.app_host** eu coloco a url do produto que estou a trabalhar.

Dica: Tem os requires no arquivo env.rb eu tenho que ter TODAS as gems instaladas no meu computador e/ou ambiente de trabalho.
Dica: Pra ficar coerente, no arquivo env.rb coloque os require nas gems que tu informa no Gemfile, para não ter que colocar coisas a mais ou a menos.

Agora que temos o ambiente montado, devemos enteder algumas coisas. A primeira dela é como trabalhar com [arquivos de feature.](https://github.com/thiagomarquessp/capybaraforall/blob/master/Executando_seus_arquivos_Feature.md)

0 comments on commit 04fcb9c

Please sign in to comment.