Graphene 2.0.0.Alpha2 Released
September 17, 2012
Graphene 2 is building on top of the Selenium WebDriver API and provide extensions for writing reusable, robust and AJAX-enabled tests with improved readability.
Graphene 2 uses the ideas from Graphene 1 (based on Selenium 1 API) and applies it to the world of Selenium WebDriver.
You can read more about the difference between Graphene 1 and Graphene 2 in the Reference Documentation
Page abstractions allow you to abstract page functionality using the well-known Selenium design pattern Page Objects. In Graphene you can inject page objects directly into the test case using the
The concept of Page Fragments comes from an idea that those components share a same underlying DOM structure, the only difference between all occurences of a component is a location in a DOM tree where a component is rendered – this is denoted by the
@Root annotation. You can define this root location for each concrete occurence using a
Fluent-API for Waiting Conditions
Graphene provides a set of widely used conditions to avoid writing them repeatedly.
Request guards block the Selenium test execution until a network communication caused by a given action ends. Guards support blocking on HTTP and XHR (AJAX) but can also be used to verify that no such requests were done.
Under the Hood
There are some low level features exposed as API that are used by Graphene internally. While not used regularly within a normal test, can be handy to write more robust tests:
Graphene allows you to obtain current thread-local context of a browser session and inject it exactly where you need. No more need for driver reference propagation.
Last but definitely not the least addition is the great documentation for all of the features above including answers for general questions like how Selenium 1, Graphene 1, Selenium WebDriver and Graphene 2 relates to each other, what’s the relation between Graphene’s, Drone and Arquillian.
In the upcoming releases, we would like to focus on more new features as well as migrate some features from Graphene 1 to Graphene 2:
- Forge plugin for quick start
- command interceptors
- parallel browser session control
- jQuery/Sizzle locators
- AJAX/HTTP Communication Halter
- page abstraction improvements
- closer integration with the Arquillian event system
- helpers for writing browser specific code