Since we wrote this post we didn't laze around. Check our latest announcement.
The Arquillian team is proud to announce the 2.0.0.Alpha2 release of the Graphene component!
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
Call to Action
What is Arquillian?
Arquillian is open source software that empowers you to test JVM-based applications more effectively. Created to defend the software galaxy from bugs, Arquillian brings your test to the runtime so you can focus on testing your application's behavior rather than managing the runtime. Using Arquillian, you can develop a comprehensive suite of tests from the convenience of your IDE and run them in any IDE, build tool or continuous integration environment.
|Version||2.0.0.Alpha2 view tag|
|Released by||Lukas Fryc|
Published artifacts org.jboss.arquillian.graphene
- org.jboss.arquillian.graphene » graphene-parent pom
- org.jboss.arquillian.graphene » graphene-selenium-parent pom
- org.jboss.arquillian.graphene » graphene-selenium-api jar javadoc pom
- org.jboss.arquillian.graphene » graphene-selenium-impl jar javadoc pom
- org.jboss.arquillian.graphene » graphene-selenium-drone jar javadoc pom
- org.jboss.arquillian.graphene » graphene-selenium pom
- org.jboss.arquillian.graphene » graphene-webdriver-parent pom
- org.jboss.arquillian.graphene » graphene-webdriver-impl jar javadoc pom
- org.jboss.arquillian.graphene » graphene-webdriver-drone jar javadoc pom
- org.jboss.arquillian.graphene » graphene-webdriver pom
- org.jboss.arquillian.graphene » graphene-webdriver-spi jar javadoc pom
- org.jboss.arquillian.graphene » arquillian-graphene pom
- org.jboss.arquillian.graphene » graphene-component-api jar javadoc pom
Release notes and resolved issues 30
Adopting critical functionality from Graphene 1; Page Fragments
- Component Upgrade
- ARQGRA-150 - Upgrade to Arquillian Core 1.0.2.Final
- Feature Request
- ARQGRA-40 - Support for Component Objects pattern for Selenium 2
- ARQGRA-62 - Umbrella: Adopt Graphene for usage of WebDriver/Selenium 2 API
- ARQGRA-67 - Migrate request guards to Selenium 2
- ARQGRA-74 - Support Graphene utility in original scope with Selenium 2
- ARQGRA-156 - Introduce Opera and RemoteWebDriver factory wrappers
- ARQGRA-157 - Support XHR interception
- ARQGRA-160 - Create a configurator for Graphene 2 using arquillian.xml
- ARQGRA-161 - Introduce profile to enable execution from several browsers
- ARQGRA-179 - Document difference between Graphene 1 and Graphene 2 (Selenium 1 and WebDriver)
- ARQGRA-180 - Document Graphene - Getting Started
- ARQGRA-181 - Document Using WebDriver
- ARQGRA-182 - Document Using Drone
- ARQGRA-183 - Document Testing AJAX
- ARQGRA-132 - Add BOM usage into documentation
- ARQGRA-158 - Check and complete all documentation for all features in Alpha2
- ARQGRA-163 - Refactor Graphene Webdriver SPI module
- ARQGRA-171 - Refactor Component Objects - mainly make Component Obejcts as POJO
- ARQGRA-172 - Documentation for Page Extensions
- ARQGRA-173 - Documentation for Page Fragments
- ARQGRA-176 - Documentation for GrapheneContext and proxies
- ARQGRA-177 - Documentation for Request Guards
- ARQGRA-178 - Documentation for Graphene utility class
- ARQGRA-186 - Rename Component Objects dependencies to Page Fragments