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.


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


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


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

Test basis plugins


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


<button> tag performs clicks on buttons.


<field> tag writes specified text to text field.


<pause> tag delays for specified time.

Default delay

Sets delay for waiting while html elements are loaded


<radio> tag helps to work with radiobuttons


<script> tag allows to embed javascript code in tests


<variable> tag allows to define constants in test code


<checkbox> tag allows work with checkboxes


<combobox> tag allows work with comboboxes


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


<assert> tag allows to check different conditions


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


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


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

Reporting plugins


<bdd> is a label for behavior reports


<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.