Cucumber, Capybara, Poltergeist

In questo tutorial parliamo di come installare Cucumber, Capybara e il driver Poltergeist per poter utilizzare PhantomJs su un sistema basato su Windows.

Installare Ruby

Il primo passa da fare è scaricare ed installare una versione di Ruby per Windows.
Io ho usato la versione 1.9.3.
Bisogna installare anche il kit di sviluppo presente nella stessa pagina, come suggerito nella stessa pagina, io ho usato la versione tdm-32-4.5.2.
Dobbiamo, ora, configurare il development kit.
Spostiamoci nella cartella dove abbiamo scompattato l’archivio e diamo i seguenti comandi

[code]ruby dk.rb init
ruby dk.rb install[/code]

Terminata la procedura di installazione potete verificare che tutto sia ok digitando dalla command line di windows (basta digitare cmd nella ricerca file)

[code]ruby -v[/code]

Installare Cucumber

A questo punto l’installazione di Cucumber sarà molto facile
Aprite la command line di Windows e digitate

[code]gem install cucumber[/code]

Installare Rspec

Senza chiudere la command line, digitiamo

[code]gem install rspec[/code]

Installare Capybara

Siamo ora pronti per installare Capybara. Sempre dalla cmd digitiamo

[code]gem install capybara[/code]

Installare PhantomJs

L’installazione del browser PhantomJs è molto semplice. Scaricate l’ultima versione dal sito quindi ricordatevi di aggiungere nelle varibili di ambiente del Sistema Operativo il path dove trovare il browser. Per aggiungere il percorso andare in
Start->Pannello di controllo->Sistema e Sicurezza->Sistema->Impostazioni di sistema avanzate->Variabili di ambiente
Quindi in “variabili di sistema”, trovate la voce path ed aggiungente il percorso di PhantomJs (ricordatevi che le voci sono separate da punto e virgola)

Installare Ansicon

Se ora lanciate Cucumber vedrete che vi verrà suggerito di installare Ansicon per poter mostrare i colori nella command line

ansicon

ansicon

Per installare Ansicon, collegarsi al sito e procedere con il download.
A questo punto nella cartella X86, per sistemi a 32 bit, o X64, per sistemi a 64 bit, troverete la command line di Ansicon. Da ora in avanti useremo questa command line. Eseguendo ora di nuovo lo stesso comando non avremo più l’alert

Installare Poltergeist

Poltergeist è il driver che permette a Capybara di poter pilotare il browser PhantomJs.
Per installare il driver dalla command line digitare

[code]gem install poltergeist[/code]

A questo punto abbiamo finito. Prima di provare che tutto funzioni vi voglio però suggerire un paio di editor che supportano la scrittura di file ruby e cucumber

  • Sublime Text 2
  • NetBeans

Sublime Text 2

Dal sito scaricatevi ed installate la versione corretta, quindi installiamo il Package Control
Una volta installato, andiamo in Preferences->Package Control e selezioniamo dal menù “Install Package”. Cerchiamo ed instialliamo i seguenti pacchetti

  • Cucumber
  • Gherkin[Cucumber] Formatter

NetBeans

Per quanto riguarda NetBeans, ci sono diversi plugin che hanno il supporto a Cucumber.
Personalmente ho scelto Cetriolo. Scaricatelo ed installatelo manualmente da Tools->Plugin->Downloaded
La versione di NetBeans che ho installato sul mio pc è la 7.4 e non ha il supporto nativo di Ruby (sembra che sia stato tolto dalla versione 7.0), per cui mi sono affidato a questo plugin. Scaricatelo e procedete all’installazione manuale sempre da Tools->Plugin->Downloaded.
Attenzione, per installare correttamente il pacchetto nella finesta dove selezionare i plugin da installare abbiate cura di selezionare non solo tutti i file *.nbm ma anche il file org-jruby-jruby.jar altrimenti comparirà un popup che blocca l’installazione con il seguente errore
“The plugin named org.jruby.jruby is needed and not found.”

Esempio Cucumber, Capybara, Poltergeist

A questo punto per controllare che tutto funzioni correttamente potete eseguire un semplice scenario che carica il sito google.it per cercare la stringa “pensieri da tester” controllando che nella pagina mostrata vi sia il link del sito.
Create una cartella, features nel mio caso, per mettervi i file di esempio, quindi create il file ricerca_google.feature

[code]Feature: Cerchiamo il sito pensieri da tester su Google
In order to search the blog "pensieri da tester"
As a user
I want to search the address of the site

Scenario: Ricerca in google
Given I am on the Google page
When I fill in "q" with "pensieri da tester"
And I click on search button
Then I should see "www.pensieridatester.it"
[/code]

Nella cartella appena creata, create una sottocartella denominata step_definitions e quindi il file google_steps.rb

[code]Given(/^I am on the Google page$/) do
visit "http://www.google.it"
end

When /^I fill in "([^"]*)" with "([^"]*)"$/ do |element, text|
fill_in element, with: text
end

And /^I click on search button$/ do
click_button ‘Cerca con Google’
end

Then(/^I should see "(.*?)"$/) do |text|
page.should have_content text
end
[/code]

Infine nella cartella dove avete messo il file ricerca_google.feature create una nuova cartella support e metteteci dentro il file env.rb che serve per usare il driver Poltergeist

[code]
require "Capybara"
require "Capybara/cucumber"
require "rspec"
require ‘capybara/poltergeist’

Capybara.default_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
options = {
:js_errors => true,
:timeout => 600,
:phantomjs_options => [‘–load-images=no’, ‘–disk-cache=false’],
}
Capybara::Poltergeist::Driver.new(app, options)
end
[/code]

Nella cartella principale (features), quindi, ci saranno due sottocartelle

  1. step_definitions con dentro il file google_steps.rb
  2. support con il file env.rb

e il file principale ricerca_google.feature

Se avete eseguito tutti i passi correttamente lanciando il test  mediante

[code]
cucumber features\ricerca_google.feature
[/code]

dovreste vedere una cosa del genere

Esempio esecuzione test cucumber

esempio esecuzione test cucumber

Questo dovrebbe essere tutto 🙂