Read this guide if
Guide assumptions
This guide assumes that you:
Matomo Core contains a suite of tests used to make sure that Matomo works properly and that new commits do not introduce new bugs. These are the types of tests in this suite: unit tests, integration tests, system tests and ui tests.
Unit tests test individual classes isolated from the rest of the code to make sure they work correctly as a unit.
Integration tests test several parts working together, e.g. a test using a database.
System tests test Matomo's Reporting API and archiving logic by tracking visits and checking that the output of certain API queries matches the expected output.
UI tests test Matomo's twig templates, JavaScript and CSS by tracking visits, generating screenshots of URLs with Puppeteer and comparing expected screenshots with generated ones.
Javascript tests test Matomo's tracking layer (matomo.js) to ensure tracking in the browser keeps working as expected.
Client tests test some parts of the Vue code used in the Matomo UI.