Cross-Browser Automation Testing Using Watir
We take a look at how developers can perform cross-browser automation testing locally using Watir and Ruby. Read on to get started!
Join the DZone community and get the full member experience.Join For Free
What Is Cross-Browser Parallel Test Automation?
Cross-browser parallel testing is performed to run a single test across multiple browser combinations, simultaneously. This is a very practical and powerful scenario for automation testing. Cross-browser parallel test automation allows you to scale back execution time while not compromising with coverage of your check and leads to faster test results.
What Is Watir?
Watir is an open source Ruby library which helps to achieve cross-browser automation testing. Watir supports Ruby, which is an object-oriented language and typically it’s simpler and faster than other languages. The good thing about Watir is that it supports any web application irrespective of the technology used to develop that application.
- It’s a free open source tool belonging to the Ruby family.
- It supports headless browser execution.
- It supports the page object design pattern.
- It supports Cucumber integration.
- Tests' simplicity and flexibility can be maintained.
- It supports your web app no matter what technology you used to develop your app.
- It supports multiple browsers on different platforms.
- It is lightweight and easy to use.
- It supports execution in the cloud through cloud-based, cross-browser automation testing tools.
In this article, we will take a look on how to set up test automation environments for Watir with RubyMine IDE and then go ahead with the sample script. I would also like to show how to run the script and see the failure in RubyMine. Let’s dive right in.
Getting Started With Cross Browser Automation Testing Using Watir
Here are the prerequisite required for performing cross-browser automation testing using Watir on Windows:
- RubyMine IDE
The RubyInstaller is must because Watir supports Ruby code, so this installation is very important before we proceed with automation.
Setting Up the Automation Environment
This section has detailed steps explaining how to setup the automation environment for performing cross-browser automation testing using Watir through Windows.
Step1: Installing Ruby
Navigate to the official RubyInstaller page here.
Click on the latest version with DEVKIT and download it. Select your OS architecture type, for example I selected a (X64)64-bitt operating system.
After download, right click on installer and run as administrator in Windows machine.
The setup window popups to accept license agreement, you need to accept this and move next.
I would recommend selecting all checkboxes and clicking the install button to proceed further.
The below progress bar indicates the install is in-progress, which takes a few minutes time to install Ruby.
After installation is complete, the following window will popup to install the updated component. This is optional; you can either leave it by closing the window or hit the “Enter” button to update all the components.
Open the command prompt and enter the following command:
The Ruby version that was installed is displayed in the command prompt.
To verify once again that the installation was successful and Ruby works fine, enter the following command:
irb stands for Interactive Ruby Shell which is a REPL (read-eval-print-loop) for programming in the object-oriented scripting language Ruby.
I will write some simple code that will put in “lambdatest.com” and print it.
Step 2: Installation of Watir
Installation of Watir is very simple. As I mentioned in the above section, to verify Watir you must first install Ruby. To install, put in the below gem command:
gem install water
Gems are the package manager for the Ruby programming which provide a standard format of disturbing Ruby libraries.
Step 3: Installation of RubyMine IDE
RubyMine is an IDE (Integrated Development Environment) that helps you to write, debug, and test code for your application. Ruby also support multiple OSs like Windows, MacOS, and Linux.
Note: RubyMine comes up with a free 30-day trial license.
To download the RubyMine, navigate here and click on the following button:
Right-click on the installer and run it as an administrator.
Click Next and continue until the installation is complete and launch RubyMine
Keep the default with the existing plugins and click Next until you see the below window.
Click “Create New Project.”
Enter the project name and select “Ruby SDK,” which will be available if you installed RubyInstaller.
Right-click on the created project and create a new directory called “testsuites.”
Create a subdirectory called “resources” under testsuites and drop it in the “chromedriver.exe” file.
To run browser-based automation, ChromeDriver is required, which is a separate executable that WebDriver uses to control Chrome. To download ChromeDriver, visit here.
Writing Code for Sample Test
Writing code in RubyMine is very simple.
Right-click on testsuites and select “TestUnit Test Template.”
Enter the file name, “my_script.rb,” in filename and click OK.
In the RubyMine window, write the following code.
Code (Explanations Given in Comments):
require 'watir' require 'selenium-webdriver' require 'test/unit' require 'test/unit/ui/console/testrunner' class Sampletest < Test::Unit::TestCase "" " LambdaTest Watir automation sample example Configuration ---------- Download Chrome driver from http://chromedriver.chromium.org/downloads and drop into your resource folder Result ------- Execute Watir Automation Tests on LambdaTest website " "" def setup "" " Setup local driver Params ---------- platform : Windows 10 browserName : Supported platform - (chrome in your local box) Result ------- " "" #Initializing chrome driver Selenium::WebDriver::Chrome.driver_path = "resources/chromedriver.exe" @browser = Watir::Browser.new end def test_verifyLambdapage() #Navigate to lambdatest.com website @browser.goto 'https://lambdatest.com' #Maximize the browser window @browser.window.maximize #Initializing element with Link text ele_starttestingbutton = @browser.link(:text => "START TESTING") #Perform click operation ele_starttestingbutton.click #printing page title puts("Actual Page title is: "+@browser.title) #Verifying actual and expected title of the page. This examples I intentionally fail the test by adding spell error assert_equal("Signup - LambdaTest App | Free Cross Browser Testing To0ol", @browser.title) end def teardown #Quit the browser @browser.quit end end
Right-click on the script and select “Run” in the IDE to see test results and the output:
The above test script intentionally fails to verify results in terms of comparing actual vs. expected page titles.
The below snapshot explains whey the test failed and the difference is highlighted.
Using Local WebDriver to Perform Cross-Browser Automation Testing Using Watir
def setup "" " Setup local driver Params ---------- platform : Windows 10 browserName : Supported platform - (chrome in your local box) Result ------- " "" #Initializing chrome driver Selenium::WebDriver::Chrome.driver_path = "resources/chromedriver.exe" @browser = Watir::Browser.new end
def teardown #Quit the browser @browser.quit end
In the TestUnit template, the IDE automatically creates
def setup and
teardown. These methods actually run before and after the test.
Setup: This method is a precondition to run the test. You may setup something like initialize browser or any test data setup.
Teardown: This method is used after your test runs. You may close/quit the browser or delete the data in database.
Selenium::WebDriver::Chrome.driver_path = "resources/chromedriver.exe" @browser = Watir::Browser.new
The above code is initializing ChromeDriver and creates a new instance and assign an object reference to the variable browser.
The next line of code is typical Watir script (Note: The method name starts with “test_” which is mandatory for Unit Test Runner to actually realize this is test method).
- Navigate to browser.
- Maximize the Window.
- Click on “Start Testing” button in lambdatest.com.
- Prints Current Page Title.
- Finally, verify whether you get the expected vs. actual title.
def test_verifyLambdapage() #Navigate to lambdatest.com website @browser.goto 'https://lambdatest.com' #Maximize the browser window @browser.window.maximize #Initializing element with Link text ele_starttestingbutton = @browser.link(:text => "START TESTING") #Perform click operation ele_starttestingbutton.click #printing page title puts("Actual Page title is: "+@browser.title) #Verifying actual and expected title of the page. This examples I intentionally fail the test by adding spell error assert_equal("Signup - LambdaTest App | Free Cross Browser Testing To0ol", @browser.title) end
Published at DZone with permission of Muthuraja `Kumar. See the original article here.
Opinions expressed by DZone contributors are their own.