Convert existing tests to the latest technologies

Last modified by Eduard Moraru on 2022/02/25 09:25

Estimated workload

2-3 months


XWiki is an Open Source project more than 10 years old and it has gone through various technologies and ways of doing things to get where it is. This does not only apply to its functional code, but also to its testing framework.

As you can see from our testing documentation and from the test code itself, we are still dragging along a big part of the tests which are written in older technologies (mostly JUnit3 and JMock 2.x for unit tests, Selenium 1 for functional tests). When we have moved to the newer testing framework, we did not have the manpower to convert existing tests and just started writing the new tests using the new technologies.

We are looking for a student with a passion for testing to convert our older tests (both the functional and unit ones) and help us slowly get rid of the older testing framework (selenium1 and any previous component testing framework). In slightly more details, this involves:

  1. Upgrading the Selenium 1 functional tests to use Selenium 2 and Page Objects. These tests are currently located in the xwiki-enterprise-test-selenium module.
  2. Upgrading the Junit3 and JMock unit tests to use JUnit4 and Mockito.
  3. Moving all the functional tests from xwiki-enterprise-test to the various related projects on xwiki-platform-core since we will eventually remove the xwiki-enterprise repository altogether.

Any remaining time would be used in adding new tests (and missing page objects for functional tests) to increase the overall coverage.

The ratio of focus on either functional or unit tests is up to the student and based on his/her preferences, but this ratio will have to be detailed, agreed upon and committed to by the student in the proposal so that we can clearly evaluate if and when the objective of the GSoC project is achieved by the student or not.

Improvements along the way to our testing framework can also be proposed, including new testing techniques.

There is much to be learned in the process!

Some relevant mails (and threads) with answers to questions already asked by students and additional details on the project. Please read them before asking:

Developer profile
  • Java proficiency
  • Familiar with unit testing concepts and best practices
  • Familiar with functional testing concepts and best practices
    • Experience with Selenium and the Page Objects pattern is preferred
  • Familiar with web technologies: HTML/CSS/JavaScript
  • Experience in (unit/functional) testing a previous open source project is a big plus
  • Willingness to learn and to improve both him/herself and the project




Get Connected