Tuesday, September 29, 2009

Watir QA Automation: Watir Setup - Part II: Installing Watir

Previous blog - Watir QA Automation: Watir Setup - Part I: Installing Ruby explain how to install Ruby on various platforms. This article explains how to install various types of Watir for different browsers and validate your installation.


Watir support Microsoft Internet Explorer [IE], FireFox and Safari browsers. There are separate Watir frameworks for each of these browsers.

  • Watir for IE

  • FireWatir for FireFox

  • SafariWatir for Safari


Since these are separate projects, the version of each of these Watir variations may not be same. I noticed that some of the features are supported by Watir are not available in FireWatir or vice-versa. This sometimes make writing cross browser test cases more challenging. Later I'll discuss this in details about writing interoperable, reusable and cross browser test cases without maintaining test suites for each browsers. We will postpone this discussion till then.


Prerequisites


In order to install Watir, you will need gem. Gem should get automatically installed when you install Ruby. Please refer to previous blog for Ruby installation -


You can verify whether gem is installed by typing the command gem or gem -v on the command prompt



C:\apptests\trunk\test_suite>gem
RubyGems is a sophisticated package manager for Ruby. This is a
basic help message containing pointers to more information.
Usage:
gem -h/--help
gem -v/--version
gem command [arguments...] [options...]
Examples:
gem install rake
gem list --local
gem build package.gemspec
gem help install
Further help:
gem help commands list all 'gem' commands
gem help examples show some examples of usage
gem help show help on COMMAND
(e.g. 'gem help install')
Further information:
http://rubygems.rubyforge.org
C:\apptests\trunk\test_suite>gem -v
0.9.4

If you want to grab the newer version of gem or you do not have gem installed, then go to http://rubygems.rubyforge.org/ or http://docs.rubygems.org/ and install gem. You will find the gem binaries, install instructions and documentation for gem here.


You can also verify whether you had any Watir frameworks installed using gem list



C:\apptests\trunk\test_suite>gem list |grep watir
commonwatir (1.6.2)
Common code used by Watir and FireWatir
firewatir (1.6.2)
flash_watir (1.1.0)
an extension for watir to test flash applications in firefox.
watir (1.6.2)

If you have any older versions of Watir installed then I would recommend to uninstall those before installing the newer versions.


It is possible that you might have latest-greatest version of watir already installed, so before you start uninstalling the existing version, check the gem list. Latest versions of the available gems are published periodically at http://gems.rubyforge.vm.bytemark.co.uk/gems/ and http://gems.rubyforge.org/gems/


Watir for Internet Explorer


Installing watir is as easy as execution one command. If you want specific version of watir then specify version number with -v option



gem install watir
gem install watir -v 1.6.2


Verify your Watir installation



gem list --local


this will list all gem installed on your computer

OR

if use gem list watir, will list only watir info.



C:\apptests\trunk\test_suite>gem list watir
*** LOCAL GEMS ***
watir (1.6.2)
Automated testing tool for web applications.

FireWatir for FireFox


FireWatir setup requires one extra step than installing Watir for IE


  • Install FireWatir and

  • Install JSSH plugins for FireFox


In following section we will explore each of this in details.

Installing FireWatir for FireFox


Installing firewatir is same process as installing watir, only gem name is different. If you want specific version of firewatir then specify version number with -v option



gem install firewatir
gem install firewatir -v 1.6.2

Verify your FireWatir installation



gem list --local

this will list all gem installed on your computer

OR

if use gem list watir, will list only firewatir info.



C:\apptests\trunk\test_suite>gem list firewatir
*** LOCAL GEMS ***
firewatir (1.6.2)
Automated testing tool for web applications using FireFox browser.

Install JSSH for FireFox


To run the FireWatir test cases in FireFox you need to install JSSH [javascript shell] plugins for FireFox


If you do not have FireFox installed yet, then download Firefox browser from http://www.mozilla.com and install it.


Follow the following steps to install JSSH plugins

  • Download .XPI file from http://code.google.com/p/firewatir/downloads/list

  • Start Firefox browser.

  • From File menu select Open File option.

  • Navigate to the path where the downloaded .XPI file is located. Select the .XPI file click open.

  • Wait till a dialog appear stating that do you want to install this extension.

  • Click install.

  • The extension will now show up in the installed extensions list.


For checking the installation of JSSH extension; follow steps below
  • Close Firefox.

  • Restart it from command prompt using "Firefox installation directory/firefox.exe -jssh". Make sure you give "-jssh" as parameter otherwise Firefox will not start JSSh shell.

  • To check if JSSh is listening on port 9997 run command "telnet localhost 9997" from command prompt.

Friday, September 25, 2009

Watir QA Automation: Watir Setup - Part I: Installing Ruby

Watir Setup - Part I: Installing Ruby



Installing watir is just two step process
  • Step #1 - Install Ruby

  • Step #2 - Install Watir



Step #1 - Installing Ruby


Download ruby binaries or installers.

Installing Ruby on Windows



You might have Ruby already installed. It is always good idea to check whether Ruby is already installed in your machine and the version of Ruby if it is available. Execite the following commond from your windows command prompt.


C:\Documents and Settings\Shrikant Wagh>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]


If it is not installed you will get the following message


C:\Documents and Settings\Shrikant Wagh>ruby -v
'ruby' is not recognized as an internal or external command,
operable program or batch file.


Easiest way to install Ruby on Windows platforms is to use one-click installer. Click on this link to download the one-click installer
Ruby 1.8.6 One-Click Installer

Run the one-click installer and follow the instruction to install Ruby.

After installation is complete, verify your Ruby installtion using the same commant mentioed above.

If you want to explore other option to install Ruby, please visit http://ruby-lang.org/en/downloads.


Installing Ruby On Linux


For most of the Linux flavors, compiled packages/binaries are available to install Ruby.

Red Hat and Fedora Linux

Verify whether Ruby is already installed.


rpm -q ruby
package ruby is not installed

If it is not yet instyalled then you can install it using yum update manager. Any installtion tasks requires root access, so you can login with root access or use sudo


sudo yum install ruby


Follow the instructions prompted by installer to install required packages.

Verify your Ruby installtion once complete.


ruby -v
ruby 1.8.1 (2003-12-25) [i386-linux-gnu]


Debian or Ubuntu Linux


Verify whether Ruby is already installed.


ruby
The program 'ruby' is currently not installed.
You can install it by typing:
sudo apt-get install ruby
-bash: ruby: command not found

If it is not yet instyalled then you can install it using app-get. Any installtion tasks requires root access, so you can login with root access or use sudo


sudo apt-get install ruby


Follow the instructions prompted by installer to install required packages.

Verify your Ruby installtion once complete.


ruby -v
ruby 1.8.1 (2003-12-25) [i386-linux-gnu]


Installing Ruby On OS X


Your Mac might have Ruby already installed, verify which version on Ruby is installed on your Mac.

ruby -v
ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]


You got the right version. Do nothing. If you got older versiona dn want to installt new version then you can use MacPorts or Fink



On MacPorts, you can install Ruby with…





% port install ruby


Also, you can doenload the source code and compile it locally.




For source code and more details of installting Ruby on OS X, refer to Ruby source code" for source, Ruby for Leopard for building Ruby on Mac OS X 10.5 (Leopard) and Ruby for Tiger for builing Ruby on Mac OS X 10.4 (Tiger)

Thursday, September 24, 2009

Watir QA Automation - How do I know/check when certain web components are rendered, before testing for those

For any web page testing, almost very test engineer has the dilemma of how much wait is optimal for the page/certain component to render. How much time will it take to render the component before you can check that components or the enclosed in the components depends on so may parameters and your guess is as good as mine. If you wait for less, you get to many false failures. If you wait more, you test execution get sluggish.

You can always use this trick, few lines if extra code, but make you test execution much efficient - sleep for small duration, check for component in a loop and break out soon it is available.

Here is the test automation scenario.

You have a web page with the form and you have to automate filling the form fields and form submission. So if you try to check for components using assert() or try to edit the form fields before the form is rendered on the page, you test will fail just because the page took longer to load. If you take the worst case scenario and put 30 sec of wait time, it will be annoying for person who will execute those test cases, as he/she have to wait for that duration everytime.

Following approach will address this issue, just use any looping structure you are comfortable with, sleep for small duration and check if the form is rendered, break out of the loop soon form is available and continue with rest of the test case.

Sample Code:

tries = 0
until ($browser.form(:id, "service-form").exists? or tries > 5)
sleep 2
$browser.logger.info( "waiting...")
tries = tries + 1
end