Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Integration Testing With Iridium

DZone's Guide to

Integration Testing With Iridium

Learn how to write integration tests that validate complex widgets in a web application with the Iridium testing tool.

· Web Dev Zone ·
Free Resource

Jumpstart your Angular applications with Indigo.Design, a unified platform for visual design, UX prototyping, code generation, and app development.

If you are just getting started with Iridium, please read the article An Introduction to Iridium, an Open Source Selenium and Cucumber Testing Tool.

So far we have focused on using Iridium to create end to end tests that simulate the actions of a user as they navigate a web application. But Iridium can be used to run a more comprehensive set of tests against an individual element. For example, you may want to validate some complex widget on your site, like a search box.

Gherkin supports the notion of a scenario outline, which when used with an examples table, provides a way to rerun a scenario multiple times with different inputs. To demonstrate this we’ll create a test script that enters a number of different searches into the DZone search menu.

To run this example, right click, download and run this Web Start file. If you have not already done so, ensure that you have trusted the location where the Iridium JAR file is downloaded from using the instructions in the installation chapter of the getting started guide.

The first half of the test script is the same top to bottom execution of scenarios and steps that you have seen in other examples.

Feature: Open an application
# This is where we give readable names to the xpaths, ids, classes, name attributes or
# css selectors that this test will be interacting with.
 Scenario: Generate Page Object
   Given the alias mappings
     | SearchMenu  | dropdownMenu2 |
     | SearchField | search        |

 # Open up the web page
 Scenario: Launch App
   And I set the default wait time between steps to "2"
   And I open the application
   And I maximise the window
   And I click the element found by alias "SearchMenu"

Scenario outlines are a feature of the Gherkin language that allow you to rerun a scenario multiple times. You add steps to the scenario outline as you would for any other scenario, but at the end you’ll add a Examples table. The header element in this table defines the name of the row, which is referenced in the steps with the format <rowname>.

 Scenario Outline: Test the search box
   And I clear the hidden element with the ID alias of "SearchField"
   And I populate the element found by alias "SearchField" with "<search>"
   Examples:
     | search |
     | Java   |
     | Devops |
     | Linux  |
     | Agile  |

In our example, we clear and populate the search field with a selection of search queries. When the test is run, the scenario outline will be run once with each of the rows in the examples table.

On a side note, you'll notice that we used the step

And I clear the hidden element with the ID alias of "SearchField"

instead of using the simple selection of

And I clear the hidden element found by alias "SearchField"

This is because in this case the string "search" (which is what the alias SearchField references) is not specific enough to identify a single element on the page, so we use a step that specifically references the ID rather than finding elements with id, classes, names, xpaths, css selectors that may also match the string "search".

Scenario outlines are a powerful way to write test cases for small units of functionality in a web application, and when combined with the steps already defined as part of Iridium you can quickly write an integration test that ensures your web application is functioning as expected.


Take a look at an Indigo.Design sample application to learn more about how apps are created with design to code software.

Topics:
web application ,scenario ,examples ,application ,selenium ,cucumber

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}