Page MenuHomePhabricator

Integration testing for extensions in Canasta (GSoC 2026)
Open, Needs TriagePublic

Description

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.

Event Timeline

Hi @Yaron_Koren thank you for the proposal. A couple things:

  • It looks like you are also a mentor for T414281. We strongly discourage mentors from participating in more than one project, as it's very difficult to provide adequate support to multiple contributors. What is your plan for supporting two projects?
  • Please note that you must have microtasks in order for your project to be accepted for the program, so be sure to add those soon.

I've mentored two different GSoC projects in two previous years, so I assume I can handle it this time as well. That said, if I'm not allowed to do it this year, I'll remove myself from one of them.

Yaron_Koren renamed this task from Integration testing for Canasta (GSoC 2026) to Integration testing for extensions in Canasta (GSoC 2026).Jan 15 2026, 9:29 PM
Yaron_Koren updated the task description. (Show Details)

Thank you for adding some microtasks. Please consider pulling out tasks from github and subtasking them here, so that they can be tracked with this project.

Hi @Yaron_Koren , @cicalese , I’m preparing for GSoC 2026 and I’m interested in contributing to this project.
I’ve previously contributed to Pywikibot and submitted a few patches there, and I’m keen to continue learning and improving through real contributions.

Could you please suggest some beginner-friendly issues or microtasks that I can start with?

Thank you for your guidance!