Arquillian Drone Extension 1.2.1.Final Released

Since we wrote this post we didn't laze around. Check our latest announcement.

The Arquillian team is proud to announce the 1.2.1.Final release of the Arquillian Drone Extension component!

This release brings Safari support, inheritance bugfixes and minor improvements for reusable browsers. Additionally, Selenium version was updated to 2.37.1, so you can enjoy latest browsers out of the box. Don’t forget to check our documentation.


What’s new in Drone since 1.2.0.Final?

Safari support

Drone is now able to inject Safari browser. Kudos for implementing this feature goes to Jiří Locker! Usage is as easy as you would expect.

arquillian.xml
<extension qualifier=“webdriver”>
<property name=“browser”>safari</property>
</extension>

I’d like to thank everybody involved in this release. You guys make testing a breeze!

We hope that you’ll enjoy new stuff and look forward to hear your feedback in the community forums.

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.

Release details

Component Arquillian Drone Extension
Version 1.2.1.Final view tag
Release date 2013-12-03
Released by Karel Piwko
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-drone-bom pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium-depchain pom
  • org.jboss.arquillian.extension » arquillian-drone-webdriver-depchain pom
  • org.jboss.arquillian.extension » arquillian-drone-api jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-spi jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-configuration jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-impl jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium-server jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-webdriver jar javadoc pom

Release notes and resolved issues 9

Bugfix release with Safari support

Component Upgrade
Feature Request
  • ARQ-951 - Drone: Setup Matrix jobs for browser support
  • ARQ-1537 - Support for Safari browser
  • ARQ-1575 - Fix Eclipse/JBDS missing console configuration warning
Bug
  • ARQ-1543 - Unexpected ISE "Unexpected callable present in Drone Context, should be already instantiated at this moment."
  • ARQ-1593 - Missing Desired Capabilities for PhantomJS
  • ARQ-1594 - InitializationParameter does not check for non-serializable fields

Thanks to the following list of contributors: Karel Piwko, Jiří Locker

Arquillian Core 1.1.2.Final Released

Since we wrote this post we didn't laze around. Check our latest announcement.

The Arquillian team is proud to announce the 1.1.2.Final release of the Arquillian Core component!

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.

Release details

Component Arquillian Core
Version 1.1.2.Final view tag
Release date 2013-11-15
Released by Aslak Knutsen
Compiled against

Published artifacts org.jboss.arquillian.core

  • org.jboss.arquillian.core » arquillian-core-api jar javadoc pom
  • org.jboss.arquillian.core » arquillian-core-spi jar javadoc pom
  • org.jboss.arquillian.core » arquillian-core-impl-base jar javadoc pom
  • org.jboss.arquillian.config » arquillian-config-api jar javadoc pom
  • org.jboss.arquillian.config » arquillian-config-spi jar javadoc pom
  • org.jboss.arquillian.config » arquillian-config-impl-base jar javadoc pom
  • org.jboss.arquillian.test » arquillian-test-api jar javadoc pom
  • org.jboss.arquillian.test » arquillian-test-spi jar javadoc pom
  • org.jboss.arquillian.test » arquillian-test-impl-base jar javadoc pom
  • org.jboss.arquillian.container » arquillian-container-spi jar javadoc pom
  • org.jboss.arquillian.container » arquillian-container-impl-base jar javadoc pom
  • org.jboss.arquillian.container » arquillian-container-test-api jar javadoc pom
  • org.jboss.arquillian.container » arquillian-container-test-spi jar javadoc pom
  • org.jboss.arquillian.container » arquillian-container-test-impl-base jar javadoc pom
  • org.jboss.arquillian.junit » arquillian-junit-core jar javadoc pom
  • org.jboss.arquillian.junit » arquillian-junit-standalone jar javadoc pom
  • org.jboss.arquillian.junit » arquillian-junit-container jar javadoc pom
  • org.jboss.arquillian.testng » arquillian-testng-core jar javadoc pom
  • org.jboss.arquillian.testng » arquillian-testng-standalone jar javadoc pom
  • org.jboss.arquillian.testng » arquillian-testng-container jar javadoc pom
  • org.jboss.arquillian.testenricher » arquillian-testenricher-cdi jar javadoc pom
  • org.jboss.arquillian.testenricher » arquillian-testenricher-ejb jar javadoc pom
  • org.jboss.arquillian.testenricher » arquillian-testenricher-resource jar javadoc pom
  • org.jboss.arquillian.testenricher » arquillian-testenricher-initialcontext jar javadoc pom
  • org.jboss.arquillian.protocol » arquillian-protocol-servlet jar javadoc pom
  • org.jboss.arquillian.protocol » arquillian-protocol-jmx jar javadoc pom
  • org.jboss.arquillian » arquillian-bom pom

Release notes and resolved issues 3

Enhancement
  • ARQ-1471 - Provide documentation for @Observes annotation
Feature Request
  • ARQ-986 - Add more advanced exception matching logic in @ShouldThrowException

Thanks to the following list of contributors: Aslak Knutsen, Lincoln Baxter, III, Karel Piwko, Ivan St. Ivanov

Arquillian Transaction Extension 1.0.0.Final Released

Since we wrote this post we didn't laze around. Check our latest announcement.

The Arquillian team is proud to announce the 1.0.0.Final release of the Arquillian Transaction Extension component!

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.

Release details

Component Arquillian Transaction Extension
Version 1.0.0.Final view tag
Release date 2013-10-29
Released by Aslak Knutsen
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-transaction-api jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-transaction-spi jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-transaction-impl-base jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-transaction-jta jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-transaction-bom pom

Release notes and resolved issues 4

Enhancement
  • ARQ-1529 - Enhance error reporting when user transaction cannot be found
Feature Request
Bug
  • ARQ-1473 - JUnit @Before and @After cause nested transaction

Thanks to the following list of contributors: Bartosz Majsak, Aslak Knutsen

Arquillian Graphene 2.0 - Functional Testing with Elegance

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.Final release of the Graphene component!

It’s already been a year since we announced the first alpha release of Graphene 2. Back then the Selenium project had undergone huge changes adopting the WebDriver API. We were excited to explore the new waters to make sure web applications are as easy to test as writing simple unit tests.

We quickly established some objectives for the project which evolved to what we can call Graphene 2.0 today:

  • built on top of WebDriver,
  • encourage to use/create reusable test abstractions,
  • simplify testing of AJAX pages.
  • fast development turnaround,

and last but not least, we wanted to make sure people could use the same features that were part of Graphene 1. Now, one and half year after the Graphene 1.0.0.Final release, we can finally report that we were able to rope in all of the concepts anticipated back then. During this journey we’ve basically touched all APIs and adopted all of the features while leveraging the modern WebDriver API for browser automation.

Graphene now consists of more than 700 commits from 11 code contributors – and that fact leads me to another aspect:

We would like to thank everyone who have been involved with the project so far; early adopters, issue reporters, people who improved documentation and of course people who picked up a ball and contributed to the code. You all hardened the project to the shape it is now.

Thank you, you guys rock!

How Graphene compares to WebDriver?

It’s important to say that Graphene is not just another dialect for WebDriver as we fully support the original WebDriver Java API. Instead, we add sensitive API extensions which we do believe altogether improves the experience and emphasizes ease of use – the common requirement for mass adoption.

We take the best of WebDriver such as

  • wide browser support,
  • object-oriented API,
  • testing design patterns such as Page Objects,

and we push them to the next level.

Graphene, together with its buddy Drone, are truly helpful for developers to lower the effort needed to build a reliable, robust and maintainable functional test suite. And we of course integrates seamlessly into the whole Arquillian test platform.

If you were to ask me; “whether you should just use the plain WebDriver API, or leverage Graphene?” the answer would be: you can continue using just WebDriver as you do today, and use as much or as little of Graphene as you see fit. Graphene just makes a few things a lot easier for you. The decision of which API to use can be compared to the decision you make when buying a new car – Should you buy a car with air-condition? Well, it certainly makes the ride a lot more pleasurable.

So, what’s so cool about Graphene?

Let’s go through some of the most prominent features:

Best Practices: Page Abstractions

As with WebDriver you can use Page Abstractions in the form of Page Objects. In Graphene we’ve made Page Abstractions a first class citizen, combined with dependency injection into the Arquillian test cases.

Graphene adds to this the concept of Page Fragments, which allows you to make even better abstractions. Page Fragments are so brilliant that e.g. the RichFaces project plan to offer fragments for testing their own widgets, in order to make your life super-easy.

public class UserDetailsPage {

    @FindBy(css = “.ui-timepicker”)
    private TimePicker birthday;

    public void setBirthDay(DateTime date) {
        birthday.setDate(date);
    }
}

public void TestCase {

    @Page
    private UserDetailsPage userDetails;

    @Test
    public void when_user_changes_birthday_then_admin_will_be_notified() {
        ...
        DateTime birthday = new Birthday(2012, 05, 04);
        userDetails.setBirthDay(birthday);
        ...
    }
}

Testing AJAX

Another area where Graphene excels is testing AJAX applications. In fact, Graphene doesn’t consider the WebElement as a concrete element on the target page, but rather as a proxy (or promise) for the real element that might be.

You no longer need to make sure the element you point to is not stale, since the proxy will make sure to bind to the most recent element for the given locator. This allows us to inject all Page Objects and their members using dependency injection during the start phase of the test. Members are then dereferenced as they are used.

Another useful feature is the Fluent Waiting API, which aims to better the readability of the test code.

Even more interesting is the use of Request Guards, which allow you to add synchronization points in your test logic when dealing with AJAX communication.

@FindByJQuery(“input:submit”)
private WebElement confirmButton;

@FindByJQuery(“body div.modal”)
private ModalPanel modalPanel;

// waits until a popup is opened
waitGui.until().element(popupPanel).is().visible();

// blocks until AJAX (XMLHttpRequest) communication is done
guardAjax(confirmButton).click();

Dependency Injection

Graphene is capable of providing injection of objects such as:

  • WebDriver context
  • interesting objects from WebDriver API e.g. JavascriptExecutor
  • elements using FindBy

into test objects such as:

  • Arquillian test case (class)
  • Page Objects
  • Page Fragments
  • WebElement wrappers, for example Select
@ArquillianResource
private WebDriver driver;

@ArquillianResource
private TakesScreenshot screenshotter;

You can find a complete list of resources available for injection in the Reference Documentation.

You can find a complete list of features in the Reference Documentation.

Learning Graphene

If you’re new to functional testing, I recommend you start by reading Functional Testing using Drone and Graphene which will guide you from the first build setup; through packaging parts of your application as a testable deployment and how to write your first test using Arquillian Graphene. It will give you an idea of how to structure the tests and give a few tips on how to write tests in a robust way.

Then you should focus on learning the WebDriver API.

If you already know the WebDriver API, I recommend you reading through the Reference Documentation which contain descriptions of all the Graphene features/goodies. Plus a few tips and tricks.

And finally, you can also read up on the JavaDoc.

Support and Compatibility Notes

We proactively test Graphene on Chrome, Firefox, Internet Explorer and PhantomJS, where we run our extensive test suite as part of the automated build. But generally speaking we support anything that Drone supports! We know for instance that Graphene also works on mobile devices such as Android.

From our experience, we also know that Graphene works great for testing web frameworks like JSF, GWT, AngularJS and generally it should work with any other web framework.

We hope that you’ll enjoy this new release and we look forward to your feedback on the community forum.
If you find any problems, have a new feature request, want some help spreading the word or want to show us a success story blog post, please don’t hesitate to contact us on the forum. All requests are welcome!

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.

Release details

Component Graphene
Version 2.0.0.Final view tag
Release date 2013-10-11
Released by Lukas Fryc
Compiled against

Published artifacts org.jboss.arquillian.graphene

  • org.jboss.arquillian.graphene » graphene-parent pom
  • org.jboss.arquillian.graphene » graphene-webdriver pom
  • org.jboss.arquillian.graphene » arquillian-graphene pom
  • org.jboss.arquillian.graphene » graphene-webdriver-spi jar javadoc pom
  • org.jboss.arquillian.graphene » graphene-webdriver-api jar javadoc pom
  • org.jboss.arquillian.graphene » graphene-webdriver-impl jar javadoc pom

Release notes and resolved issues 10

Final release

Enhancement
Task
Sub-task

Thanks to the following list of contributors: Lukas Fryc

Arquillian Drone Extension 1.2.0.Final Released

Since we wrote this post we didn't laze around. Check our latest announcement.

The Arquillian team is proud to announce the 1.2.0.Final release of the Arquillian Drone Extension component!

Arquillian Drone has reached 1.2.0.Final!
The focus of this release was to improve the usabillity for other Arquillian extension developers. That said, it still brings a lot of goodies and bugfixes from the previous versions. And the best part, it’s fully backward compatible with Arquillian Drone 1.1.1.Final.
So, update and enjoy new features! And don’t forget to check our updated documentation


What’s new in Drone since 1.1.1.Final?

Browser capabilities shorthand

Configuration property browserCapabilities is now replaced with the simple browser property. The original property still works, of course, but emits a warning when used.

arquillian.xml
<extension qualifier=“webdriver”>
<!— since now, you can simply write “browser” —>
<property name=“browser”>chrome</property>
</extension>
PhantomJS support

Drone allows you to use PhantomJS as a browser. Moreover, it automatically fetches the binary needed for your platform. All you need to do is configure it:

arquillian.xml
<extension qualifier=“webdriver”>
<property name=“browser”>phantomjs</property>
</extension>
Selenium BOM

It is now much easier to override the Selenium version by importing a single BOM in the <dependencyManagement> section, before arquillian-drone-bom. By default, Drone uses Selenium 2.35.0.

pom.xml
<depenencyManagement>
<dependency>
<groupId>org.jboss.arquillian.selenium</groupId>
<artifactId>selenium-bom</artifactId>
<version>${version.selenium}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</depenencyManagement>
Time limited Drone creation

Drone now injects Selenium and WebDriver instances using a time limit to avoiding your tests from getting stuck. Also, Drone now creates the instances before they are used for the first time. So it’s no longer bound to the BeforeClass event.
The time limit is 60 seconds by default and can be modified in arquillian.xml globally for all supported Drones. Also, the limit is disabled if you set arquillian.debug property to true.

arquillian.xml
<extension qualifier=“drone”>
<!— set this to zero if you want to disable timeout —>
<property name=“instantiationTimeoutInSeconds”>0</property>
</extension>
Browser goodies

Added support for the dimensions property that allow you to resize the window. This is handy especially if the default viewport is small and some elements are not visible, like with PhantomJS. The Firefox configuration now accepts two new properties, firefox_profile and firefoxUserPreferences. While the first one is not really new, it allows you to set a path to the Firefox profile template, the latter makes it possible to modify prefs.js for the created Firefox profile. And reusable browsers are now able to remove properties before each test class or method (depends on where you inject Drone) using reuseCookies property.

arquillian.xml
<extension qualifier=“webdriver”>
<property name=“firefox_profile”>/path/to/profile</property>
<property name=“firefoxUserPreferences”>/path/to/preferences/file</property>
<property name=“dimensions”>1680×1050</property>
<property name=“reuseCookies”>false</property>
</extension>
New SPI

All extensions should now profit from a much richer event model. Additionally, Drone 1.2.0.Final brings the new concept of DroneInstanceEnricher, which allows you to modify the Drone instance that Drone creates for you by any means. We use it for instance to automatically augment browser object to implement all the interfaces defined by its capabilities.

I’d like to thank everybody involved in this release. You guys make testing a breeze!

We hope that you’ll enjoy the improvements and look forward to hear your feedback in the community forums.

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.

Release details

Component Arquillian Drone Extension
Version 1.2.0.Final view tag
Release date 2013-10-07
Released by Karel Piwko
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-drone-bom pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium-depchain pom
  • org.jboss.arquillian.extension » arquillian-drone-webdriver-depchain pom
  • org.jboss.arquillian.extension » arquillian-drone-api jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-spi jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-configuration jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-impl jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium-server jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-selenium jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-webdriver jar javadoc pom

Release notes and resolved issues 2

Bug
  • ARQ-1508 - WindowResizer does not fail-safe on Android
  • ARQ-1523 - Drone: Opera browser window is not closed after test case (class)

Thanks to the following list of contributors: Karel Piwko