Smart Testing 0.0.1 Released

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

The Arquillian team is proud to announce the 0.0.1 release of the Smart Testing component!

First release of Smart Testing is here!

It all started as a Google Summer of Code project last year with great ground work of our student Dimcho Karpachev.

Flash forward to this summer, after 222 commits, 69 pull requests merged and insane amount of CI builds we are super excited to announce a new addition to Arquillian Universe we’ve been working so vigorously on.

This time it’s not a new extension to Arquillian Testing Platform, but a brand new tool which we hope will bring a breath of fresh air into your builds, let it be on your local machine or the CI server.

You probably know it best – you write some code and tests, run the build, wait few minutes to only see at the later stage that your changes are breaking it. Of course you can go and grab a coffee, but if you commit early and often that might mean caffeine overdose in a very short time. Running tests before pushing is a good practice, but if it takes too long it simply slows you down.

Moreover having long lasting builds on your CI server makes your CI/CD process not really that continuous and leads to Pull Requests piling up. Bringing new features to production with confidence should be seamless. And for this we need to have faster feedback loops.

Smart Testing is a tool that speeds up the test running phase by reordering test execution plan to increase a probability of fail-fast execution and thus give you faster feedback about your project’s health.

That’s why we created this cure for you!

Highlights of this release

With this release we provide following strategies which you can use to optimize your build execution:

  • new – gives higher priority to newly added tests
  • changed – gives higher priority to changed tests (e.g. new test methods or refactorings of components under tests which imply changes in the tests)
  • affected – based on changes in your business logic, gives higher priority to the tests which are exercising them
  • failed – gives higher priority to the tests which failed in the previous (local) build

In addition you can either decide to run the whole test suite (ordering mode) or only those tests which fall into the selected categories (selecting, which is also a default mode).

new, changed and affected rely on SCM information. For this release we only support Git.

How to get started

If you are using Maven 3.3.x or newer (and you definitely should!) adding Smart Testing to your build is very easy. Create a file .mvn/extensions.xml in the root of project
with the following content:

extensions.xml
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
  <extension>
    <groupId>org.arquillian.smart.testing</groupId>
    <artifactId>maven-lifecycle-extension</artifactId>
    <version>0.0.1</version>
  </extension>
</extensions>

and you are all set!

Executing the build with Smart Testing enabled is as simple as adding one system property with strategies of your choice:

$ mvn clean verify -Dsmart.testing=new,changed,affected

This will execute the build running only those tests which are falling into selected categories, based on your local changes.

For the CI environment, such as Jenkins, you can pass commit hashes using environment variables. For example:
$ mvn verify -Dsmart.testing=affected -Dscm.range.head=GIT_COMMIT -Dscm.range.tail=GIT_PREVIOUS_COMMIT
This will optimize tests based on the changes between the current commit and the one against which the previous build was run.

For more details head over to our documentation backed by awesome Asciidoctor!

We are very excited about Smart Testing but we need you to help us make it even more awesome. We spent tremendous amount of effort building it with the developer experience in mind, but without the community feedback we can only get that far. So give it a try today and tell us what you think! Maven is a first stop for us. Stay tuned! There’s more to come!

Thanks to the whole team for making it happen! You are real heroes!

Also big kudos to Infinitest team for the inspiration! Give it a spin if you are Eclipse or IDEA user.

What is Smart Testing?

Smart Testing is a tool that speeds up the test running phase by reordering test execution plan to increase a probability of fail-fast execution and thus give you faster feedback about your project’s health.

Release details

Component Smart Testing
Version 0.0.1 view tag
Release date 2017-09-14
Released by Bartosz Majsak
Compiled against

Published artifacts org.arquillian.smart.testing

  • org.arquillian.smart.testing » core jar javadoc pom
  • org.arquillian.smart.testing » surefire-provider jar javadoc pom
  • org.arquillian.smart.testing » junit-test-result-parser jar javadoc pom
  • org.arquillian.smart.testing » strategy-affected jar javadoc pom
  • org.arquillian.smart.testing » strategy-changed jar javadoc pom
  • org.arquillian.smart.testing » strategy-failed jar javadoc pom
  • org.arquillian.smart.testing » maven-lifecycle-extension jar javadoc pom
  • org.arquillian.smart.testing » git-rules jar javadoc pom
  • org.arquillian.smart.testing » smart-testing-test-bed jar javadoc pom

Release notes and resolved issues 30

Initial release with Maven integration.

Component: Core
Component: Test Bed
Component: Maven
Component: Documentation
Component: Selection

Thanks to the following list of contributors: Bartosz Majsak, Alex Soto, Matous Jobanek, Dipak Pawar, Hemani

Arquillian Drone Extension 2.4.2 Released

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

The Arquillian team is proud to announce the 2.4.2 release of the Arquillian Drone Extension component!

Significant changes and additions:

Upgraded Selenium to 3.5.3

Added ability to explicitly specify the target architecture of the IE web-driver binary. To do it, use the property ieDriverArch with any of the two possible values: Win32 and x64. If the property is not specified then the architecture is resolved from the host OS. Big thanks to Václav Muzikář for implementing it.

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 2.4.2 view tag
Release date 2017-09-06
Released by Matous Jobanek
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-drone-bom 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-webdriver jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-saucelabs-extension jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-browserstack-extension jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-appium-extension jar javadoc pom

Release notes and resolved issues 2

Component Upgrade
Enhancement
  • ARQ-2140 - Support for specifying the architecture for IE driver binary

Thanks to the following list of contributors: Matous Jobanek, Václav Muzikář

Arquillian Universe 1.1.13.7 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.13.7 release of the Arquillian Universe component!

What is Arquillian Universe?

The Arquillian Universe BOM is a 'Bill of Material' Maven POM file collection that make up a module stack that stretch across the whole Arquillian Universe.

Release details

Component Arquillian Universe
Version 1.1.13.7 view tag
Release date 2017-09-04
Released by Bartosz Majsak
Compiled against

Published artifacts org.arquillian.universe

  • org.arquillian.universe » arquillian-core pom
  • org.arquillian.universe » arquillian-junit pom
  • org.arquillian.universe » arquillian-junit-standalone pom
  • org.arquillian.universe » arquillian-testng pom
  • org.arquillian.universe » arquillian-testng-standalone pom
  • org.arquillian » arquillian-universe pom
  • org.arquillian.universe » arquillian-drone pom
  • org.arquillian.universe » arquillian-graphene pom
  • org.arquillian.universe » arquillian-graphene-recorder pom
  • org.arquillian.universe » arquillian-warp pom
  • org.arquillian.universe » arquillian-warp-jsf pom
  • org.arquillian.universe » arquillian-transaction-core pom
  • org.arquillian.universe » arquillian-transaction-jta pom
  • org.arquillian.universe » arquillian-persistence-core pom
  • org.arquillian.universe » arquillian-persistence pom
  • org.arquillian.universe » arquillian-spring pom
  • org.arquillian.universe » arquillian-spring-transaction pom
  • org.arquillian.universe » arquillian-spring-persistence pom
  • org.arquillian.universe » arquillian-spring-warp pom
  • org.arquillian.universe » arquillian-governor-core pom
  • org.arquillian.universe » arquillian-governor-jira pom
  • org.arquillian.universe » arquillian-governor-github pom
  • org.arquillian.universe » arquillian-governor-redmine pom
  • org.arquillian.universe » arquillian-governor-skipper pom
  • org.arquillian.universe » arquillian-governor-ignore pom
  • org.arquillian.universe » arquillian-byteman pom
  • org.arquillian.universe » arquillian-jacoco pom
  • org.arquillian.universe » arquillian-recorder-api pom
  • org.arquillian.universe » arquillian-recorder pom
  • org.arquillian.universe » arquillian-rest-core pom
  • org.arquillian.universe » arquillian-rest-resteasy2 pom
  • org.arquillian.universe » arquillian-rest-resteasy3 pom
  • org.arquillian.universe » arquillian-rest-jaxrs2 pom
  • org.arquillian.universe » arquillian-rest-jersey pom
  • org.arquillian.universe » arquillian-rest-warp-core pom
  • org.arquillian.universe » arquillian-rest-warp-resteasy pom
  • org.arquillian.universe » arquillian-rest-warp-jaxrs2 pom
  • org.arquillian.universe » arquillian-rest-warp-jersey pom
  • org.arquillian.universe » arquillian-rest-warp-cxf pom
  • org.arquillian.universe » arquillian-spacelift pom
  • org.arquillian.universe » arquillian-chameleon pom
  • org.arquillian.universe » arquillian-cube-core pom
  • org.arquillian.universe » arquillian-cube-docker pom
  • org.arquillian.universe » arquillian-cube-openshift pom
  • org.arquillian.universe » arquillian-cube-containerless pom
  • org.arquillian.universe » arquillian-cube-kubernetes pom
  • org.arquillian.universe » arquillian-cube-docker-restassured pom
  • org.arquillian.universe » arquillian-cukes pom
  • org.arquillian.universe » arquillian-cube-q-pumba pom
  • org.arquillian.universe » arquillian-cube-q-simianarmy pom
  • org.arquillian.universe » arquillian-cube-q-toxic pom
  • org.arquillian.universe » arquillian-algeron-pact-consumer pom
  • org.arquillian.universe » arquillian-algeron-pact-provider pom
  • org.arquillian.universe » arquillian-algeron-git-publisher pom
  • org.arquillian.universe » arquillian-algeron-git-retriever pom
  • org.arquillian.universe » arquillian-algeron-maven-retriever pom
  • org.arquillian.universe » arquillian-algeron-pact-broker-retriever pom
  • org.arquillian.universe » arquillian-ape-nosql-mongodb pom
  • org.arquillian.universe » arquillian-ape-nosql-redis pom
  • org.arquillian.universe » arquillian-ape-nosql-couchbase pom
  • org.arquillian.universe » arquillian-ape-rest-postman pom
  • org.arquillian.universe » arquillian-ape-nosql-vault pom
  • org.arquillian.universe » arquillian-ape-sql-container-dbunit pom
  • org.arquillian.universe » arquillian-ape-sql-standalone-dbunit pom
  • org.arquillian.universe » arquillian-ape-sql-standalone-flyway pom
  • org.arquillian.universe » arquillian-ape-junit-rule pom
  • org.arquillian.universe » arquillian-rusheye pom
  • org.arquillian.universe » arquillian-test jar javadoc pom

Release notes and resolved issues 0

Thanks to the following list of contributors: Bartosz Majsak, Matous Jobanek

Arquillian Universe 1.1.13.6 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.13.6 release of the Arquillian Universe component!

What is Arquillian Universe?

The Arquillian Universe BOM is a 'Bill of Material' Maven POM file collection that make up a module stack that stretch across the whole Arquillian Universe.

Release details

Component Arquillian Universe
Version 1.1.13.6 view tag
Release date 2017-08-29
Released by Bartosz Majsak
Compiled against

Published artifacts org.arquillian.universe

  • org.arquillian.universe » arquillian-core pom
  • org.arquillian.universe » arquillian-junit pom
  • org.arquillian.universe » arquillian-junit-standalone pom
  • org.arquillian.universe » arquillian-testng pom
  • org.arquillian.universe » arquillian-testng-standalone pom
  • org.arquillian » arquillian-universe pom
  • org.arquillian.universe » arquillian-drone pom
  • org.arquillian.universe » arquillian-graphene pom
  • org.arquillian.universe » arquillian-graphene-recorder pom
  • org.arquillian.universe » arquillian-warp pom
  • org.arquillian.universe » arquillian-warp-jsf pom
  • org.arquillian.universe » arquillian-transaction-core pom
  • org.arquillian.universe » arquillian-transaction-jta pom
  • org.arquillian.universe » arquillian-persistence-core pom
  • org.arquillian.universe » arquillian-persistence pom
  • org.arquillian.universe » arquillian-spring pom
  • org.arquillian.universe » arquillian-spring-transaction pom
  • org.arquillian.universe » arquillian-spring-persistence pom
  • org.arquillian.universe » arquillian-spring-warp pom
  • org.arquillian.universe » arquillian-governor-core pom
  • org.arquillian.universe » arquillian-governor-jira pom
  • org.arquillian.universe » arquillian-governor-github pom
  • org.arquillian.universe » arquillian-governor-redmine pom
  • org.arquillian.universe » arquillian-governor-skipper pom
  • org.arquillian.universe » arquillian-governor-ignore pom
  • org.arquillian.universe » arquillian-byteman pom
  • org.arquillian.universe » arquillian-jacoco pom
  • org.arquillian.universe » arquillian-recorder-api pom
  • org.arquillian.universe » arquillian-recorder pom
  • org.arquillian.universe » arquillian-rest-core pom
  • org.arquillian.universe » arquillian-rest-resteasy2 pom
  • org.arquillian.universe » arquillian-rest-resteasy3 pom
  • org.arquillian.universe » arquillian-rest-jaxrs2 pom
  • org.arquillian.universe » arquillian-rest-jersey pom
  • org.arquillian.universe » arquillian-rest-warp-core pom
  • org.arquillian.universe » arquillian-rest-warp-resteasy pom
  • org.arquillian.universe » arquillian-rest-warp-jaxrs2 pom
  • org.arquillian.universe » arquillian-rest-warp-jersey pom
  • org.arquillian.universe » arquillian-rest-warp-cxf pom
  • org.arquillian.universe » arquillian-spacelift pom
  • org.arquillian.universe » arquillian-chameleon pom
  • org.arquillian.universe » arquillian-cube-core pom
  • org.arquillian.universe » arquillian-cube-docker pom
  • org.arquillian.universe » arquillian-cube-openshift pom
  • org.arquillian.universe » arquillian-cube-containerless pom
  • org.arquillian.universe » arquillian-cube-kubernetes pom
  • org.arquillian.universe » arquillian-cube-docker-restassured pom
  • org.arquillian.universe » arquillian-cukes pom
  • org.arquillian.universe » arquillian-cube-q-pumba pom
  • org.arquillian.universe » arquillian-cube-q-simianarmy pom
  • org.arquillian.universe » arquillian-cube-q-toxic pom
  • org.arquillian.universe » arquillian-algeron-pact-consumer pom
  • org.arquillian.universe » arquillian-algeron-pact-provider pom
  • org.arquillian.universe » arquillian-algeron-git-publisher pom
  • org.arquillian.universe » arquillian-algeron-git-retriever pom
  • org.arquillian.universe » arquillian-algeron-maven-retriever pom
  • org.arquillian.universe » arquillian-algeron-pact-broker-retriever pom
  • org.arquillian.universe » arquillian-ape-nosql-mongodb pom
  • org.arquillian.universe » arquillian-ape-nosql-redis pom
  • org.arquillian.universe » arquillian-ape-nosql-couchbase pom
  • org.arquillian.universe » arquillian-ape-rest-postman pom
  • org.arquillian.universe » arquillian-ape-nosql-vault pom
  • org.arquillian.universe » arquillian-ape-sql-container-dbunit pom
  • org.arquillian.universe » arquillian-ape-sql-standalone-dbunit pom
  • org.arquillian.universe » arquillian-ape-sql-standalone-flyway pom
  • org.arquillian.universe » arquillian-ape-junit-rule pom
  • org.arquillian.universe » arquillian-rusheye pom
  • org.arquillian.universe » arquillian-test jar javadoc pom

Release notes and resolved issues 0

Thanks to the following list of contributors: Bartosz Majsak, Matous Jobanek, Alex Soto

Arquillian Drone Extension 2.4.1 Released

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

The Arquillian team is proud to announce the 2.4.1 release of the Arquillian Drone Extension component!

Authenticated GitHub requests

In case of downloading webdrivers from GitHub, you may reach the rate limit for unauthenticated requests (60 per hour). To avoid this, there had been implemented several caching mechanisms, but in some cases (larger CI matrix jobs) it doesn’t have to suffice.

Because of these problems, in this release, we have introduced support for authenticated GitHub requests. In the case of authenticated connections the rate limit is much higher, so it should be almost impossible to reach the limit. To use it you need to specify your GitHub username and secret token in your arquillian.xml file:

<property name="githubUsername">${github.username}</property>
<property name="githubToken">${github.secretToken}</property>

You can imagine that exposing your secrets in the arquillian.xml file is not the best idea. Instead of it, we are suggesting using variables (as you can see in the example) and then specify the secrets on command line (or in your system properties):
mvn test -Dgithub.username=john -Dgithub.secretToken=doe_password

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 2.4.1 view tag
Release date 2017-08-24
Released by Matous Jobanek
Compiled against

Published artifacts org.jboss.arquillian.extension

  • org.jboss.arquillian.extension » arquillian-drone-bom 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-webdriver jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-saucelabs-extension jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-browserstack-extension jar javadoc pom
  • org.jboss.arquillian.extension » arquillian-drone-appium-extension jar javadoc pom

Release notes and resolved issues 1

Feature Request
  • ARQ-2139 - Drone should support authenticated GH requests

Thanks to the following list of contributors: Matous Jobanek