You are on page 1of 27

Web Application Test In Ruby

Sumanth Krishna. A
www.sumanthkrishna.com
Agenda
Introducing the topic
Discussion on Testing frameworks/tools and
it’s necessity
Ruby
Installations
Architecture
Testcases
Scope
TAG CLOUD
ruby Apache Nginx assertions

install webserver FireWatir temp-


WATIR goto html
user DOM
web-applications opensource
tests
Assertions get_string firefox-addon
click hudson SVN COM open-source IE gems
open-QA ruby regression loadrunner mercury
automatio deployment browers tools
WATIR html DOM recorder telnet
Prerequisites
Can you believe you really don’t need any
special skills to implement this!
What is WATIR?
open-source functional testing tool for web-
applications
Simulate the user actions (filling/submitting
forms…)
Drives Internet Explorer browser
FireWatir – for FireFox
Ruby based
Various assertions (content-based)
Connects to databases
Reading data files
Exporting data (xml/html/excel…)
Why use WATIR?
Free
Powerful
Simple (easy to use and learn)
Excellent Support
Strongest Presence
Watir/Watin/Watij [Web Application Testing In
Ruby/.NET/Java ]
 Huge resource of supporting tools –
Firewatir, Watir Recorder ++, Wet, Cubictest,
Visual Studio
Is not?
Watir is not a record/playback tool.
 However, there are several recorders “out
there”
 WatirMaker
 Watir WebRecorder
 Webmetrics RIA Script Recorder (most recent
discussion…they are considering open sourcing their
application)
Watir is not a link checker
 However, you can easily write your own link
checker and customize it to your specific
needs.
Watir is not a test case management tool.
 However, you can write one in Ruby if
IE-WATIR
Web Application Use the OLE/COM
Automation
interface to
Internet Explorer
IE
DOM
Automation
Interface Watir/Ruby
FF-FireWATIR
Web Application
JSSh

FF
DOM
Automation
Interface FireWatir/Ruby
Browser Support

IE COM FF JSSH Apple Events V8 Debugger Dragonfly

Watir API

Component 1 Component 2 Component 3 Component 4

Test Script
Installing: Windows
 Install Ruby: Use the Ruby one-click installer for windows
 Install the latest gem watir (ruby packages are called gems)
gem install watir
And you find the following gems installing…
 Successfully installed xml-simple-1.0.11
 Successfully installed s4t-utils-1.0.4
 Successfully installed builder-2.1.2
 Successfully installed user-choices-1.1.6
 Successfully installed commonwatir-1.6.2
 Successfully installed firewatir-1.6.2 (to support Firefox)
 Successfully installed watir-1.6.2
 Successfully installed win32-api-1.3.0-x86-mswin32-60
 Successfully installed windows-api-0.3.0
 Successfully installed rubyforge-1.0.2
 10 gems installed
 Installation done… let’s move ahead
What Next?
Since we are here to test the web-
application
Navigate the browser?
Find elements on the page?
Interact with elements on the page?
Check output on the page?
Create and use Methods?
Create formal test cases?
Step by Step
Navigate to the browser
#Always Load the Watir library at the top of
your script
require ‘watir’
Start IE and navigate to a given/different
URL
IE = Watir::IE.start(‘http://www.qvnatel.com’)
IE.goto(“http://free-
opensource.qvantel.net/mediawiki//index.php
/Main_Page ”)
IE.close
Finding <HTML> Elements
TextBox IE.text_field(how, what)
Button IE.button(how, what)
DropDownList IE.select_list(how, what)
CheckBox IE.checkbox(how, what)

RadioButton IE.radio(how, what)


HyperLink IE.link(how, what)
Form IE.form(how, what)

Frame IE.frame(how, what)

And many, many more (div, label, image, etc…)…


Interacting with Elements
#Set the text field (or text area) specified
name specified value.
ie.text_field(:name,'name').set('value')

#Sets the select with to the specified value


ie.select_list(:name,'name').select('value')
#Click the button with the specified value
(label)
ie.button(:value,'value').click
#Clicks the link matching 'text'
ie.link(:text,'text').click
#Accessing elements in a "frame" or
Closer view

browser.button(:value, "Click Me").click

[Variable] . [method] (: [element] , “ [unique identifier]” . [method]


Checking Output

#Get the title of the page


ie.title

#Get all the text displayed on the page


ie.text

#Get all the HTML in the body of the page


ie.html

#Return true if ‘text’ is displayed on the page


ie.contains_text('text')
Ruby advantage
Since WATIR is ruby based web application
testing framework, we can customize the
script according to our needs.
Taking Ruby’s Object Oriented concepts,
create more dynamic/customized scripts
Use classes & methods effectively
Access even the database to validate the
data
Test::Unit Assertions
Methods
 #Here is an example method for logging into a web
application. Its two parameters are a user and password
(both of which have defaults). It returns an instance of IE
def login(user=“test_admin”,password = “Password123”)
ie=Watir::IE.start(‘http://someURL.com/login’)
ie.text_field(:name,/user/i).set(user)
ie.text_field(:name,/password/i).set(password)
ie.button(:value,/login/i).click
return ie
end

 #Now we can easily login with the default user..


 ie = login
 #or with a unique user
 ie = login(“Fred”,”flinstone”)
Full Fledge Test Case
 require 'test/unit' #includes Ruby's test case functionality
 require ‘util’ #Assuming our login method is saved in util.rb

 #Test cases are contained within classes which extend Ruby’s base test case class
class MyTest < Test::Unit::TestCase
def setup #Optional, will be run before each test method.
@ie = login() #call our login function.
end

def test_some_link #Test methods must begin with "test_“


@ie.link(:text,”some_link”).click #click on some link

#verify that the proper page loaded


assert(@ie.contains_text(“My Some Link Page”))
end

def teardown #Optional, will be run after each test method.


@ie.close
end
end
Installing: Ubuntu
 Install Ruby:
sudo apt-get install ruby
 Install the latest gem firewatir (ruby packages are called
gems)
sudo gem install firewatir
And you find the following gems installing…
 Successfully installed xml-simple-1.0.11
 Successfully installed s4t-utils-1.0.4
 Successfully installed builder-2.1.2
 Successfully installed user-choices-1.1.6
 Successfully installed commonwatir-1.6.2
 Successfully installed firewatir-1.6.2
 Successfully installed rubyforge-1.0.2
 7 gems installed (3gems to support IE/Windows environment are not
installed)
 Installation done… let’s move ahead
Tweaks/Tips
While working on Linux platform need to
specify
require “rubygems” at the top of test case
ff = FireWatir::Firefox.new
Start firefox in jssh mode
For Windows:
 Close instances of firefox (if any)
 Type “firefox.exe –p –jssh” in the “Run”

ie = Watir::IE.new
Scope
Using Watir for all web applications
Integrate it with Automation/Building
process
 Watir
References
Wikipedia: http://en.wikipedia.org/wiki/Watir
Watir main site: http://wiki.openqa.org/display/WTR/
Watir user guide: wtr.rubyforge.org/watir_user_guide.html
Watir API: wtr.rubyforge.org/rdoc/index.html
Mailing List: rubyforge.org/mailman/listinfo/wtr-general
Project site: http://wiki.openqa.org/display/WTR/
User Contributions/examples:
http://wiki.openqa.org/display/WTR/Contributions
Watir FAQ: http://wiki.openqa.org/display/WTR/FAQ
 Watir Recorder
http://www.hanselman.com/blog/IntroducingWatirMakerRecordingForRubybasedW

http://www.hanselman.com/blog/NewReleaseOfWatirMakerNowWatirRecorder.
aspx
 FireWatir
Source: http://code.google.com/p/firewatir/wiki/Firewatir

 Ruby
Ruby site: http://ruby-lang.org
Ruby docs: http://ruby-doc.org/
Ruby Quickstart: ruby-lang.org/en/documentation/quickstart/
Thanks

tosumanthkrishna@gmail.com
www.sumanthkrishna.com

You might also like