Spinach
¿Qué es Spinach?
  Spinach es un nuevo
  framework de BDD (Behavior
  Driven Development –
  Desarrollo guiado por
  comportamiento) de alto
  nivel.
Características
  Escrito en Ruby.
  Cuenta con la encapsulación y modularidad.
  Se centra en la reutilización ya que se puede
   utilizar de una manera limpia a través de
   funciones y proyectos.
  Los Features son solo objetos de Ruby.
  Los Steps pueden ser extraídos en módulos.
Características
  Soporta Minitest, RSpec, así como
   Capybara.
  Cada función tiene sus propios pasos.
  Posee una simple arquitectura.
  Compatibilidad Framework Web.
  Utiliza el lenguaje expresivo Gherkin para
   ayudarle a definir las especificaciones
   ejecutables de la aplicación o los criterios
   de aceptación.
Lenguaje Gherkin
  Gherkin es el lenguaje que entiende
   Spinach. Permite describir el
   comportamiento del software sin detallar su
   implementación.
  Gherkin sirve para dos propósitos,
   documentación y pruebas automatizadas.
  Existen algunas convenciones:
    Cada archivo fuente Gherkin contiene la
     descripción de una única funcionalidad.
    Los archivos fuentes tienen extensión .feature.
Estructura de un Proyecto Spinach



               Steps



               Feature
Capybara
  Es una librería que provee una abstracción
   entre los diferentes navegadores. Es usado
   por Spinach en los request spec para poder
   interactuar con el navegador.
  Por ejemplo:
    click_button “nombre_boton”
    fill_in(‘Nombre’, :with => ‘Pedro’)
Selenium
  Es una librería que simula interacciones con
   el navegador. Permite ejecutar comandos
   de javascript y puede interactuar con
   Firefox, Google Chrome, entre otros.
Feature
    Es un archivo con extensión .feature.
    Cada feature consiste en uno o más escenarios.
    Cada feature puede poseer una breve descripción.
    Por ejemplo:
              Feature: Nombre Feature
                     In order to …
                     As a …
                     I want …
              Scenario: Nombre Scenario
              …
Feature - Background
  Background: En un archivo feature se puede especificar
   una serie de pasos comunes a todos los escenarios en el
   archivo.
  Por ejemplo:
               Background:
                         Given …
                         When …
               Scenario: Nombre Scenario 1
                         Then …
                         And …
               Scenario: Nombre Scenario 2
                         Then …
                         And …
               …
Steps
 Es un archivo con extensión .rb para cada
  archivo .feature
 Es donde se desarrolla cada uno de los
  pasos.
 Por ejemplo:
          Then “...” do
                 …
          end
Given, When y Then
  Se utilizan estas palabras para identificar las
   tres partes diferentes de un escenario:
      Given …
      When …
      Then …
  Cada línea en un escenario es conocido como
   un step. Se puede agregar más steps para
   cada Given, When o Then de un escenario
   usando la palabra And y But
Feature: logueo.feature
Generar archivo logueo.rb
Archivo generado logueo.rb
Ejemplo Steps
Ejecución Spinach
Given ‘Ingreso en la pagina web de Suitei’ do
         visit “http://suitei.herokuapp.com”
end
And ‘Hago click en el link Sign in para loguearme’ do
        page.find_link(“Sign in”).click
end
When ‘Ingreso email y password de una cuenta existente y activada’ do
        login! “silvina@insignia4u.com”, “123456”
end
And ‘Al hacer click en el boton Sign in’ do
         click_button “Sign in”
end
Then ‘Debo ver un mensaje de que se logueo con exito’ do
        page.has_content?(“Signed in successfully”)
end
Step no definido
Step con error
Links
  https://github.com/codegram/spinach
  https://github.com/cucumber/cucumber/wiki/
   Gherkin
  http://cheat.errtheblog.com/s/capybara/
  http://blog.codegram.com/2011/10/how-to-
   achieve-more-clean-encapsulated-modular-
   step-definitions-with-spinach
  http://blog.objectmentor.com/articles
   /2008/11/27/the-truth-about-bdd
Ejemplo completo
  https://github.com/grsilvinav/suiteispinach

Spinach

  • 1.
  • 2.
    ¿Qué es Spinach? Spinach es un nuevo framework de BDD (Behavior Driven Development – Desarrollo guiado por comportamiento) de alto nivel.
  • 3.
    Características  Escritoen Ruby.  Cuenta con la encapsulación y modularidad.  Se centra en la reutilización ya que se puede utilizar de una manera limpia a través de funciones y proyectos.  Los Features son solo objetos de Ruby.  Los Steps pueden ser extraídos en módulos.
  • 4.
    Características  SoportaMinitest, RSpec, así como Capybara.  Cada función tiene sus propios pasos.  Posee una simple arquitectura.  Compatibilidad Framework Web.  Utiliza el lenguaje expresivo Gherkin para ayudarle a definir las especificaciones ejecutables de la aplicación o los criterios de aceptación.
  • 5.
    Lenguaje Gherkin Gherkin es el lenguaje que entiende Spinach. Permite describir el comportamiento del software sin detallar su implementación.  Gherkin sirve para dos propósitos, documentación y pruebas automatizadas.  Existen algunas convenciones:  Cada archivo fuente Gherkin contiene la descripción de una única funcionalidad.  Los archivos fuentes tienen extensión .feature.
  • 6.
    Estructura de unProyecto Spinach Steps Feature
  • 7.
    Capybara  Esuna librería que provee una abstracción entre los diferentes navegadores. Es usado por Spinach en los request spec para poder interactuar con el navegador.  Por ejemplo:  click_button “nombre_boton”  fill_in(‘Nombre’, :with => ‘Pedro’)
  • 8.
    Selenium  Esuna librería que simula interacciones con el navegador. Permite ejecutar comandos de javascript y puede interactuar con Firefox, Google Chrome, entre otros.
  • 9.
    Feature  Es un archivo con extensión .feature.  Cada feature consiste en uno o más escenarios.  Cada feature puede poseer una breve descripción.  Por ejemplo: Feature: Nombre Feature In order to … As a … I want … Scenario: Nombre Scenario …
  • 10.
    Feature - Background  Background: En un archivo feature se puede especificar una serie de pasos comunes a todos los escenarios en el archivo.  Por ejemplo: Background: Given … When … Scenario: Nombre Scenario 1 Then … And … Scenario: Nombre Scenario 2 Then … And … …
  • 11.
    Steps  Es unarchivo con extensión .rb para cada archivo .feature  Es donde se desarrolla cada uno de los pasos.  Por ejemplo: Then “...” do … end
  • 12.
    Given, When yThen  Se utilizan estas palabras para identificar las tres partes diferentes de un escenario:  Given …  When …  Then …  Cada línea en un escenario es conocido como un step. Se puede agregar más steps para cada Given, When o Then de un escenario usando la palabra And y But
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
    Given ‘Ingreso enla pagina web de Suitei’ do visit “http://suitei.herokuapp.com” end
  • 19.
    And ‘Hago clicken el link Sign in para loguearme’ do page.find_link(“Sign in”).click end
  • 20.
    When ‘Ingreso emaily password de una cuenta existente y activada’ do login! “silvina@insignia4u.com”, “123456” end
  • 21.
    And ‘Al hacerclick en el boton Sign in’ do click_button “Sign in” end
  • 22.
    Then ‘Debo verun mensaje de que se logueo con exito’ do page.has_content?(“Signed in successfully”) end
  • 23.
  • 24.
  • 25.
    Links  https://github.com/codegram/spinach  https://github.com/cucumber/cucumber/wiki/ Gherkin  http://cheat.errtheblog.com/s/capybara/  http://blog.codegram.com/2011/10/how-to- achieve-more-clean-encapsulated-modular- step-definitions-with-spinach  http://blog.objectmentor.com/articles /2008/11/27/the-truth-about-bdd
  • 26.
    Ejemplo completo https://github.com/grsilvinav/suiteispinach