Page MenuHomePhabricator

Outreach Round 29: Improve the Wiki Education Dashboard test suite
Closed, ResolvedPublic

Description

Summary

Wiki Education Dashboard is a Ruby on Rails application with a mixed React and server-rendered fronted. It provides tracking and statistics for hundreds of thousands of editors on Wikipedia and other Wikimedia wikis.

The Dashboard codebase is supported by an extensive suite of Ruby tests using the rspec framework, including unit tests of individual class files as well as browser-driven feature (ie, integration) tests interact with both the client-side UI and the server-side behavior. In also includes a smaller set of JavaScript tests — primarily focused on reducer functions and business logic functions (with React component behavior left to the browser-driven tests).

The test suite takes approximately 35 minutes to run (on GitHub CI), and is overall fairly fragile, with intermittently failing tests causing some test runs to fail even when no breaking changes are introduced. In many cases, intermittent failures are due to tests that rely on external APIs that may be down or return an unexpected response during a test run (but it is also important for our test suite to detect when breaking changes occur in external APIs, which then require changes to our codebase).

In this project, you will take a broad approach to improving the quality and performance of the test suite. Reliability, maintainability, and developer experience are the main priorities, but improving coverage and speeding up test runs would also be a welcome area of improvement.

First, evaluate the test suite and its recent history of continuous integration (CI) logs to identify:

  1. tests that fail intermittently
  1. tests (or sets of tests, or aspects of test suite configuration) that contribute substantially to execution time
  1. areas of the code with significant holes in test coverage
  1. tests that are not easy to understand or should be refactored or rewritten

Then, choose the aspects most ripe for improvement, and fix them.

Some possible stretch goals:

  1. a test suite that passes 20 consecutive runs on CI
  1. test suite execution time under 20 minutes
  1. 100% line coverage of Ruby code (current status: 11580 / 11679 LOC — 99.15% — covered)
  1. 90% statement coverage of JavaScript / JSX code via browser tests (current status: 9600 / 13098 — 73.3% — covered)

Skills

  • Experience with automatic software testing in important. The intern will be expected to develop an understanding of the Dashboard's overall testing environment and strategy, and to make informed decisions about what aspects to improve.
  • Experience with Ruby and/or JavaScript are very helpful.

Possible mentor(s):

Microtasks / Exploring the Project

See:

Event Timeline

debt changed the task status from Open to In Progress.Dec 17 2024, 5:59 PM

Assuming that this task is resolved as Outreachy 29 is over.