wiki.techinc.nl/tests/phpunit
Máté Szabó acb403ccfd DeduplicateStyles: Only transform possible style nodes
Why:

- DeduplicateStyles runs as a default post-cache output transformation
  for every backend pageview. It tokenizes the article HTML via Remex to
  deduplicate style nodes within.
- This is expensive for large pages. On the Barack Obama page, the
  transform takes 350+ ms on a parser cache hit.
- Some other transforms, like HandleSectionLinks, already use regexes to
  only run Remex-driven transforms on relevant elements to avoid a
  potentially expensive tokenization of the whole page.

What:

- Use a regular expression to limit this transform so that it only
  tokenizes potential <style> nodes. This takes ~2ms to execute on a
  large page[1], compared to ~166ms currently.
- Restrict this optimization to legacy parser output transformations,
  since the naïve regex used might otherwise match encoded style tags
  within data-parsoid attribute values, as described in
  I32d3d1772243c3819e1e1486351d16871b6e21c4.
  Add a test for this.

[1] https://en.m.wikipedia.org/wiki/Democratic_Party_(United_States)?action=render

Bug: T394059
Change-Id: I33ebcc2da7685b4b6dafdad3ed3ef2a9edea9a00
(cherry picked from commit 02f69d5dc99a964981c57b597eedffa1f253a14c)
2025-10-03 23:19:17 +00:00
..
data Forward-compat data for SelserContext w/ JSON-encoded Content 2025-09-10 14:08:31 -04:00
docs Add namespace to maintenance/includes classes 2024-10-09 11:02:09 -04:00
includes DeduplicateStyles: Only transform possible style nodes 2025-10-03 23:19:17 +00:00
integration/includes Forward-compat data for SelserContext w/ JSON-encoded Content 2025-09-10 14:08:31 -04:00
maintenance tests: Use namespaced classes 2024-10-21 18:53:02 +02:00
mocks logger: Make log() methods return void 2025-06-18 02:21:42 +00:00
structure Skip 'ext.pageviewinfo' module in ResourcesTest to avoid CI failure 2025-09-16 15:13:58 +00:00
suites tests: add skins to PHPUnit "extensions:unit" test suite 2025-09-17 01:03:38 +00:00
tests tests: Add missing documentation to class properties 2024-09-18 17:25:42 +00:00
unit Use JsonCodec to serialize SelserContext 2025-09-10 14:08:31 -04:00
bootstrap.common.php
bootstrap.integration.php
bootstrap.maintenance.php
bootstrap.php phpunit: Fix bootstrap script when no extensions are installed 2025-02-21 22:24:30 +00:00
DynamicPropertyTestHelper.php Drop PHP 7.4/8.0 support from master (forward-port from MW 1.42) 2025-06-18 10:53:22 +01:00
getPHPUnitExtensionsAndSkins.php phpunit: Fix bootstrap script when no extensions are installed 2025-02-21 22:24:30 +00:00
HamcrestPHPUnitIntegration.php
JsonSchemaAssertionTrait.php REST: validate JSON in tests 2024-09-20 15:42:32 +00:00
MediaWikiCoversValidator.php
MediaWikiDeprecatedConfigPHPUnitExtension.php
MediaWikiGroupValidator.php
MediaWikiIntegrationTestCase.php title: Reset cached Title objects between tests 2025-05-27 12:35:10 +00:00
MediaWikiLangTestCase.php
MediaWikiLoggerPHPUnitExtension.php
MediaWikiPHPUnitResultPrinter.php
MediaWikiTeardownPHPUnitExtension.php
MediaWikiTestCaseTrait.php Use explicit nullable type on parameter arguments 2024-10-16 20:58:33 +02:00
MediaWikiUnitTestCase.php tests: Add missing documentation to class properties 2024-09-18 17:25:42 +00:00
MWTestDox.php
phpunit.php phpunit: Don't override --bootstrap if supplied 2025-01-13 15:14:27 +00:00
README.md
ResourceLoaderTestCase.php Use explicit nullable type on parameter arguments 2024-10-16 20:58:33 +02:00
suite.xml
TestSelectQueryBuilder.php Expand tests for rename user maintenance scripts 2024-10-08 21:51:59 +01:00

MediaWiki PHPUnit tests

WARNING: Integration tests may be destructive and alter or remove parts of your local database. We try to use temporary tables where possible, but you must never run tests on a production server or on a wiki where you don't want to lose data.

Running tests

If you haven't already, run composer update (specifically without --no-dev) in the MediaWiki core directory. This will install PHPUnit.

To read about how to run specific tests, refer to:

https://www.mediawiki.org/wiki/Manual:PHP_unit_testing/Running_the_tests

Writing tests

A guide to writing PHPUnit tests for MediaWiki can be found at:

https://www.mediawiki.org/wiki/Manual:PHP_unit_testing