Frequently Asked Questions about Concordion

This page shows the FAQ for Java. Click the toggle buttons above to choose other options.

How do I automate web browser testing with Concordion?

Concordion integrates well with Selenium WebDriver for specification and testing of web browser applications. It provides rich output, allowing you to view screenshots on failure, create storyboards and add logging information. To speed up testing, you can run tests in parallel.

You can choose to create a new browser per example, per specification or just once for the whole test run.

To see the range of options available for browser management, download the concordion-scope-examples project. This provides sample code for each permutation of browser scope, and parallel or serial testing. It runs tests against the Google home page and generates specifications that show a screenshot on failure (see the Arithmetic specification). You might also want to add other extensions, such as Storyboard, Logback or others.

The Cubano framework integrates Concordion with a number of Concordion extensions, Selenium WebDriver and other open-source projects to provide a ready-made framework for web and API testing that creates beautiful living documentation.

How does Concordion differ from Selenium?

Selenium is a test scripting tool for driving web browsers. Concordion is a specification tool and hides scripting activity inside Java fixture code. For tests that exercise the browser, we recommend Selenium WebDriver with Concordion.

How do I automate my web service / database / desktop app / green screen / other app with Concordion?

Concordion acts as a test runner and integrates with any Java library to drive other interfaces. Examples include wslite, CXF, JAX/RS, JAX/WS for REST and SOAP web services, JDBC for databases, FEST for Swing desktop apps and FreeHost for green screens.

Does Concordion itself have active specifications?

Yes, see the Concordion specifications.

How do I use complex expressions in my Concordion specifications?

In order to keep your specifications simple and maintainable, Concordion deliberately restricts the expression format that is allowed when instrumenting specifications. Complexity should be moved into the fixture code, and then evolved into a DSL, where it is easier to maintain. The idea is to have the fixture do all the work of fetching and munging the data and then return exactly the data that the spec needs, which helps to decouple the spec from the implementation.

However, if you really want to remove this restriction you can apply the annotation @FullOGNL to your fixture class. This would allow you to do things like pass property values of Java beans into methods, or use constant values in concordion:execute commands.

Who developed Concordion?

Concordion (for Java) was originally developed by David Peterson. The idea was sparked by conversations with testers and developers, in particular Nat Pryce and Steve Freeman while working at Easynet (BSkyB) in 2006.

In 2013, Nigel Charman took over as project lead, having developed the Concordion extensions mechanism.

Version 2.0 of Concordion was released in 2016 by a team of contributors.

Concordion has been ported and further extended by several other developers.

See the Concordion team.

How is Concordion licensed?

Concordion is licensed under the Apache License, v2.0.

See here for the license text.

Is there a mailing list?

Yes, on Google Groups. Join here.

We also have a developer list for discussing development of Concordion core and extension code.

Is there a twitter account?


How do I report defects or submit enhancement requests?

In Concordion’s Issues List.

Where is the source code repository?

It is hosted on GitHub: Main Project Page, all Concordion projects. The current development version (potentially unstable) can be cloned as follows:

git clone https://github.com/concordion/concordion.git

How do I collaborate with development of Concordion?

Firstly, you should create an issue for your enhancement request.

Concordion uses a “Fork & Pull” model for collaborative development. If you have changes that you would like us to consider for introduction to Concordion, you will need to fork the repository, commit and push your changes to your forked project, and send us a pull request referencing the URL of the issue that you created.

Please note that, in order to keep Concordion clean and minimal, we consider all enhancement requests carefully. Should your enhancement not be appropriate for Concordion core, you may wish to package it as a Concordion extension.

See README-DEVELOPERS.txt in the concordion repository for the development standards.

I’ve got a question that hasn’t been answered. How do I get further help?

If you believe the question should be answered on this website, please raise a website issue.

For more general questions, start a discussion on our Google Group (see link below), or ask on Stack Overflow.