Tellurium Automated Testing Framework is an open source automated testing framework for testing web applications. Tellurium evolved from
Selenium framework about 2 years ago with a different testing approach.
Tellurium is built on UI module concept, which makes it possible to write
reusable and easy to maintain tests against the dynamic RIA based web
applications. UI module is collection of UI(DOM) elements grouped together. Current version is 0.8.0.

Here we are defining that the UI consists of one Input textbox element and two submit buttons.

Adoption of UI module makes Tellurium expressive and easy to understand in the context of tests. Tellurium sets the Object to Locator Mapping
at runtime using the attributes from the composite locator(clocator). This makes Tellurium more robust and responsive to changes from internal UI elements.

In the test code locators are not used directly, instead UI elements are accessed by simply appending the uids along the path. To access
Search button, use GoogleSearchModule.Search

Writing test code for the above UI can be done using Java or Groovy as follows:

Tellurium shines when dynamic web content is being tested. Complex dynamic web data can be
easily defined using the Tellurium UI templates. For example, Issue Search page
on the projects website can be represented as follows:

Looking at the UI module we can infer that UI is an HMTL Table with the header row and the table body. Further, header columns can be
differentiated by metadata in uid {header:any} and the content for header column
is link. The whole body of the table is defined in last two lines as TextBox and
UrlLink. Further we can infer that data for the column referenced by the Extra
is cell with some text and every other cell is a link as defined in the uid
{row:all, column: all}. To access the elements for testing in the above UI, use indexes

issueResult.header[1] returns the first column in the header row which is ID column.

issueResult[2][2] returns the cell for second row and second column.

Tellurium API provides with various methods to access and manipulate the web data. Tellurium enforces clear separation between the UI and
the test code. In an agile world where UI changes rapidly, having this clear separation makes it easier to modify UI with minimal changes to the test code.

Tellurium Sub-projects

Tellurium started as small core project but quickly expanded into multiple sub-projects.

Tellurium UI Module Plugin(Trump): Firefox plugin that automatically generates the UI module after user selects the UI elements on the web page
being tested. Trump validates the UI module by evaluating each UI elements
attributes, then generates the runtime locator and verifies the locators are valid.

Tellurium-IDE: Firefox plugin that QA group and non programmers can use to record user actions on the web page and replay them. Plugin automatically
generates Tellurium commands and UI modules in DSL script format. The DSL
script can be exported as Groovy script. Replaying the script is done by the built in test runner.

Tellurium works in two modes. First mode works as a wrapper to the Selenium framework. Tellurium core generates the runtime locator based on
the attributes defined in clocator of the UI module. The generated locator is then passed in Selenium calls to the Selenium core with Tellurium extensions.

The following diagram illustrates this flow.

Second mode uses Tellurium Engine. Tellurium Core will convert the UI module into JSON notation and passes it to the Tellurium Engine
when the UI module is used first time. Engine uses the Santa algorithm to locate
the whole UI module and caches it. For subsequent calls, the cached UI module
will be used instead of locating again, thereby improving the test execution speed.