Project title: Integration testing for extensions in Canasta
Brief summary: Canasta is a fairly large MediaWiki distribution that includes, besides MediaWiki itself, over 150 extensions, 10 skins, a full LAMP stack, and a variety of other applications and libraries, like Elasticsearch. This amount of software makes Canasta a full-featured solution, but it also means that many things can go wrong. An upgrade to some component could result in that component breaking - or could even result in the entire system breaking. There is already a plan to add testing of core MediaWiki, via this pending pull request. That leaves MediaWiki extensions (and, to a much lesser extent, skins). This project would add testing of these to the Canasta continuous integration (CI) pipeline, so that testing is done of every patch, helping to ensure that no change is destructive.
Expected outcomes: This project is meant to create a testing suite that tests a significant range of extension functionality, including both front-end and back-end code. This would involve creating the following:
- GitHub Actions code that runs all the unit and integration testing code currently in each of these extensions
- The addition of testing code, either within Canasta itself or (ideally) within the relevant extensions, that tests important functionality that currently lacks testing
- The addition of testing code to Canasta for functionality that involves multiple extensions working together like CommentStreams + VisualEditor or Page Forms + Cargo
Skills required/preferred: Familiarity with integration testing required, knowledge of GitHub Actions, Docker and the PHPUnit, Jest and SonarQube testing frameworks preferred
Possible mentors: @Yaron_Koren, @cicalese
Expected size of the project: 350 hours
Rating: Medium
Microtasks: T414652, https://github.com/CanastaWiki/Canasta/issues/568, T415112
Any other additional information for contributors: About the code structure: Canasta is structured as a Docker image, whose base image is CanastaBase. CanastaBase holds MediaWiki, the LAMP stack, and most of the remaining software, while Canasta mostly just adds on to it the set of MediaWiki extensions and skins; these extensions and skins are in turn defined via the Recommended Revisions project.
Why are you proposing this project? Integration testing has been part of the Canasta development wishlist since nearly the beginning of the project. It is a crucial missing element that would greatly improve development.
What is the expected impact? This integration testing code would enable making changes to the Canasta software with much more confidence, and would in turn lead to greater assurance for users. The addition of testing could also lead to greater code quality, now and in the future, for many of the extensions in Canasta.