Selenium (Web Testing)

Test your Signum.Web application with a nice strongly-typed API

Signum.Selenium is Web testing framework built on top of Selenium, and optimized for testing applications built with Signum.Web

Selenium

Selenium is a web automation system that let you send JavaScript commands to Web Browsers and assert for conditions to write tests 

Controlling Time

The most complicated part of UI testing is controlling time. The test application and the browser run asynchronously and recurrent explicit waits are required to keep them synchronized (i.e., Press button A and wait until button B is enabled).

A set of extension method are provided to simplify waiting for conditions, and throw descriptive exceptions where the conditions are not met after timeout.

Disposabe Pages and Popups

Signum.Selenium provides classes that represent the common pages and popups. This classes encapsulate a reference to the Selenium object, and a string prefix and, implement IDiposable interface, allowing your test to be easier to read by nesting using statements as new popups or pages are opened and, in case of exception, close them in the Dispose method. 

Signum.Web Proxies 

Thanks to the homogenity of a typical user interface written with Signum.Web (using SearchControls, EntityControls, NormalPage, etc..) we can write high-level proxies to manipulate this controls in our tests:

  • EntityControls:
    • Create/Find/Remove/View buttons
    • AutoComplete
    • Select elements in ComboBox or List
    • Get detail view
    • ...
  • SearchControls:
    • Add / remove filters
    • Add / remove columns
    • Sort by columns
    • Control pagination
    • Selete elements and navigate
    • Create new elements
    • Context menus
    • ...
  • NormalWindow
    • Execute operations
    • Reload entity
    • Access to widgets
    • Ok/Cancel
    • Loose changes
    • ...

All this proxies already understand the default behaviour of the controls, waiting for condition, and expecting windows to open, radically simplifying the write of UI test.

More than 20 rich proxies are already provided for the common controls in Signum.Windows, but you can create new proxies to represent custom controls or windows, removing the technical details from your UI test.

Strongly-Typed

Taking advantage of the similarity between the user interfaces and the entities, a type-rich API can be provided. The API makes intensive use of generics so, just by referencing your entities assembly and using lambda expression, we can refer to almost all the UI controls by their binded property without nasty magic strings. 

This is really important in order to have a reliable test suit that doesn't creating false errors every time the entities are changed.


Turn back to Signum Extensions