Plugin architecture

XML2Selenium plugin architecture concepts

XMl2Selenium is a plugin based platform where everything - tags, reporting tools, video recording, screenshots and snapshots are plugins. To add new features to framework new plugin can be developed. Plugins logically divided into two groups:

  • Tag plugins are UI-test elements and commands (button, field, navigate, etc.)
  • Event-driven plugins are internal workers which handle internal framework events like tests execution start, element processing start and other (reporting, web driver integration, etc.)

Plugins can extend each other. It is possible to change existing framework behavior by adding new plugins.

For plugin management we use Apache Maven, which offers flexible projects structure and plugin delivering capabilities. Plugins are written in Java and each plugin is a separate maven module. For plugin management and delivery we use Sonatype Nexus which is industry standard for managing modules in Java. Both Maven and Nexus are open source platforms.



Featured plugins

Video recording

Records tests video. With video it's easier to fix bugs for programmers.

Screenshots and snapshots

Saves screenshots and snapshots (html source).


Download, upload file

Works with upload forms and helps to check downloaded files.

Window handle

Allows work with many browser windows for specific tests.

WebDriver integration

Manages WebDriver lifecycle, basis of UI-tests running.


Test flow plugins

Before, after

Allows to put common test fragments into sections which are executed before and after each test.

Frames

Combines test fragments into reusable pieces. Supports inheritance and input parameters.

Failure

Allows to finish manually test with fail result if some business logic conditions are not correct, displays result in reports.

Iterate

Allows operations with groups of elements (lists, tables, dropdown elements, menus, content blocks) on web-page.


Test basis plugins

Navigate

<navigate> tag opens specified url in web-browser.

Button

<button> tag performs clicks on buttons.

Field

<field> tag writes specified text to text field.

Pause

<pause> tag delays for specified time.


Default delay

Sets delay for waiting while html elements are loaded

Radio

<radio> tag helps to work with radiobuttons

Script

<script> tag allows to embed javascript code in tests

Variable

<variable> tag allows to define constants in test code


Checkbox

<checkbox> tag allows work with checkboxes

Combobox

<combobox> tag allows work with comboboxes

Test,TestCase

<test> and <testcase> tags are basis for tests creating

Assert

<assert> tag allows to check different conditions


Import

<import> tag allows including files with common test code, helps to avoid copy-pasting and core reusing

Dialog

<dialog> tag allows to work with system browser alerts and dialogs (press button, enter texts, close)

Property

<property> allows to work with .property text-files, which contain constants with locators, locale-dependent words, etc.


Reporting plugins

Bdd

<bdd> is a label for behavior reports

Echo

<echo> tag writes specified text in test log file

Webaction visualizer

marks html elements which test currently works with

Technical reports

Collect information about JVM parameters, used plugins, etc.