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.
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.
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.
Thanks to the homogenity of a typical user interface written with Signum.Web (using
NormalPage, etc..) we can write high-level proxies to manipulate this controls in our tests:
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.
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