Select Page
QA Automation

Creating a Ruby Cucumber Project

In this article, we will show you how to create a feature file and implementation code using RubyMine.

Creating a Ruby Cucumber Project

This is our first blog post on Ruby Cucumber automation testing and as an automation testing services company, we would like to share basic and advanced techniques of automation testing with software testing & quality assurance communities.

In this article, we will show you how to create a feature file and implementation code using RubyMine. Before following up the below steps, make sure you have already configured RubyMine

Step1-Create Empty Ruby Project

File->New Project

Step1-Create Empty Ruby Project

Step2-Create Gem file

Select project directory, right click and click New->File

Create Gem file with the following Gem details as shown below.

Note: These Gem details will be published in our next article.

source 'https://rubygems.org/'
gem 'cucumber', '1.2.1'
gem 'rspec', '2.10.0'
gem 'ffi', '1.3.1'
gem 'watir-webdriver', '0.7.0'
gem 'watir'
gem 'selenium-webdriver'
gem 'headless', '0.2.2'
gem 'titleize', '1.2.1'
gem 'json', '1.7.7'
gem 'gherkin', '<= 2.11.6'
gem 'syntax'
  

Step2-Create Gem file

Step3-Directory Structure

Create sub folders as shown below

—>features

————->Project1

——————->feature

——————->pages

——————->step_definitions

————->Support

Step3-Directory Structure

Step4-Create Shared Driver

Create SharedDriver.rb inside Support folder with the following code.

require 'rubygems'
require 'rspec'
require 'watir-webdriver'

include Selenium

#Creating Remote WebDriver
browser = Watir::Browser.new(:remote, :url => "http://SauceUsername:[email protected]:80/wd/hub",
                              :desired_capabilities => WebDriver::Remote::Capabilities.firefox)
#If you want to run it locally, use Watir::Browser.new :firefox
         
Before do
  @browser = browser
end
  

Step4-Create Shared Driver

Step5-Create Feature file

Create sample.feature file inside feature folder with the below steps

Feature: Sample Feature

  Scenario: Sample Scenario
    Given I launch https://codoid.com
    And I click on Login tab
    And I enter username
    And I enter password
    When I click Login button
    Then I see Home page
  

Step5-Create Feature file

Step6-Create Step Definitions

Create Step Definitions with pending steps

Given(/^I launch http://www.codoid.com$/) do
  pending
end

And(/^I click on Login tab$/) do
  pending
end

And(/^I enter username$/) do
  pending
end

And(/^I enter password$/) do
  pending
end

When(/^I click Login button$/) do
  pending
end

Then(/^I see Home page$/) do
  pending
end
  

Step6-Create Step Definitions

Step7-Create Page Object

class LoginPage
  attr_accessor :loginTab,:txtUsername,:txtPassword,:btnLogin

  def initialize(browser)
    @browser = browser
    @loginTab    = @browser.a(:text => "Login")
    @txtUsername = @browser.text_field(:id => "userId")
    @txtPassword = @browser.text_field(:id => "password")
    @btnLogin      = @browser.element(:id => "log_in_button")
  end

  def visit
    @browser.goto "https://codoid.com"
  end

  def clickLoginTab()
    @loginTab.click
  end

  def enterUsername(username)
    @txtUsername.set username
  end

  def enterPassword(password)
    @txtPassword.set password
  end

  def clickLoginButton
    @btnLogin.click
  end

  def verifyHomePageHeader()
    @browser.element(:text => "Dashboard").wait_until_present
  end
end
  

Step7-Create Page Object

Step8-Call Page Methods in Step Definitions

Given(/^I launch http://www.codoid.com$/) do
  @LoginPage = LoginPage.new(@browser)
  @LoginPage.visit
end

And(/^I click on Login tab$/) do
  @LoginPage.clickLoginTab
end

And(/^I enter username$/) do
  @LoginPage.enterUsername("xxxxxxx")
end

And(/^I enter password$/) do
  @LoginPage.enterPassword("yyyyyyy")
end

When(/^I click Login button$/) do
  @LoginPage.clickLoginButton
end

Then(/^I see Home page$/) do
  @LoginPage.verifyHomePageHeader
end
  

Step8-Call Page Methods in Step Definitions

Step9-Create cucumber.yml file

Create cucumber.yml file inside project directory as shown below

default: --format html --out=Report.html
  

Step9-Create cucumber.yml file

Step10-Run the feature file

Step10-Run the feature file

Once execution is done, open the report file

Step10-Run the feature file Open file

You will see the report as shown below

Step10-Run the feature file, report file

In the subsequent articles, we will share more topics and advanced techniques. Stay tuned!

Comments(0)

Submit a Comment

Your email address will not be published. Required fields are marked *

Talk to our Experts

Amazing clients who
trust us


poloatto
ABB
polaris
ooredo
stryker
mobility