Skip to content

Prepare for Matomo 6 - #333

Open
sgiehl wants to merge 8 commits into
6.x-devfrom
prepare6x
Open

Prepare for Matomo 6#333
sgiehl wants to merge 8 commits into
6.x-devfrom
prepare6x

Conversation

@sgiehl

@sgiehl sgiehl commented Aug 9, 2026

Copy link
Copy Markdown
Member

Description

Prepares QueuedTracking for Matomo 6.

6.x-dev has been created as the plugin's Matomo 6 maintenance line, branched in parity from 5.x-dev. This PR carries the accumulated Matomo 6 work — the commits that had previously been pushed to or merged into prepare6x while no 6.x-dev branch existed — restacked onto it, plus the remaining preparation steps:

  • Bump the plugin version to 6.0.0 and require matomo >=6.0.0-b1,<7.0.0-b1. The -b1 lower bound is required so the plugin is not disabled against a beta core.
  • Replace the removed Piwik\Db::optimizeTables() / Piwik\Db::isOptimizeInnoDBSupported() with Piwik\Db\Schema::getInstance().
  • Run the plugin tests on the same PHP versions as core, via the matomo6_min_php / matomo6_max_php aliases rather than pinned literals, so they follow core instead of drifting.
  • Add the MySQL 8.0 / MariaDB 10.6 database matrix, and put the UI job on Node 24 with an explicit MySQL engine and version.
  • Update the expected UI screenshots for the new headless Chrome and the changed primary brand colour.
  • Add the 6.0.0 changelog entry.

5.x-dev remains the Matomo 5 maintenance branch. No changes.json entry was added — Matomo 6 compatibility is not a user-facing feature.

The full Matomo 6 breaking-changes catalogue was swept against the plugin — removed PHP APIs, removed HTTP API methods, removed global functions, changed interfaces, the Monolog 3 / PHP-DI 7 / Symfony 6.4 / php-tracker 4 / PHPUnit 9 dependency upgrades, the #[JsonResponse] controller contract, removed Less variables and stylesheets, and the removed JS APIs. The only hit is Tasks.php using the Db\Schema replacement API, which is the intended target. The plugin has no composer.json, changes.json, phpstan.neon or Vue sources, so those preparation steps do not apply.

Issue No

Part of the Matomo 6 plugin preparation; no separate issue.

Steps to Replicate the Issue

Not applicable — this is a compatibility change with no user-visible behaviour change.

Verified locally against a Matomo 6 checkout (PHP 8.1, MySQL 8.0, Node 24): PHPCS clean across all 52 files, the plugin activates, and core:update reports no pending migrations.

Checklist

  • [✔] Tested locally or on demo2/demo3?
  • [NA] New test case added/updated?
  • [NA] Are all newly added texts included via translation?
  • [NA] Are text sanitized properly? (Eg use of v-text v/s v-html for vue)
  • [✔] Version bumped?
  • [✔] I have understood, reviewed, and tested all AI outputs before use
  • [✔] All AI instructions respect security, IP, and privacy rules
  • [NA] Documentation updated?

🤖 This pull request was prepared with Claude Code.

sgiehl and others added 8 commits August 9, 2026 16:26
Bump plugin version to 6.0.0 and require Matomo >=6.0.0-b1,<7.0.0-b1.
Matomo 6 removes the deprecated Db::optimizeTables() and
Db::isOptimizeInnoDBSupported() wrappers; call the Schema instance
directly instead.
* Run plugin tests against MySQL 8.0 and MariaDB 10.6

The workflow inherited the shared action's MySQL 5.7 default, which is below
Matomo's new minimum. Pin the database-backed jobs to the supported floor:
PluginTests now runs a MySQL 8.0 + MariaDB 10.6 matrix, and the UI/JS jobs run
on MySQL 8.0.

* Only upload plugin test artifacts for the MySQL matrix leg

PluginTests runs a MySQL + MariaDB matrix; the upload-artifacts condition
matched both legs and uploaded twice. Restrict the upload to the MySQL leg.
… Puppeteer 24) (#327)

* Update expected UI screenshots for the new headless Chrome (Node 24 / Puppeteer 24)

* Stabilise queue-enabled toggle click under the new headless Chrome

Scroll the toggle to the viewport centre before clicking; under Chrome 149 it
could otherwise be reported as 'not clickable' when behind a sticky header.

* Use a JS click for the queue-enabled toggle under modern headless Chrome

page.click() reports the Materialize lever as not clickable on the new Chrome
even after scrolling it into view; dispatching the click directly fires the
toggle handler reliably.

* Wait for the password-confirmation modal before interacting with it

After enabling the queue toggle the submit opens a password-confirmation modal;
under the modern headless Chrome its input is not focusable and its confirm
button not clickable until the open animation finishes. Wait for them to be
visible and use a JS click for the confirm button.

* Use a JS click for the settings submit button

page/element click can be reported as not clickable under the modern headless
Chrome, so the password-confirmation modal never opened; dispatch the click
directly to trigger it reliably.

* Fix the queue-enabled error test for the modern headless Chrome

Three Chrome-149 issues stacked in this test: the queue toggle was clicked via
its label span (which no longer reliably flips the checkbox), so the setting
never changed; and the password-confirmation modal selectors were unscoped, so
they matched a closed .confirm-password-modal instance instead of the open one.
Click the checkbox input directly, JS-click the submit button, and scope all
modal interactions to .modal.open. Verified locally: the redis connection error
is now shown as expected.

* Update settings_save_error expected screenshot for Chrome 149

* Shorten UI-test comments added during the Puppeteer 24 migration

* Run the plugin UI tests on Node 24

Match the Node 24 / Puppeteer 24 screenshot-testing stack; the UI job was still pinned to Node 16.
Teal brand screenshots on 6.x-dev plugin base; synced from matomo-org/matomo run 30405694397.
@sgiehl
sgiehl requested a review from a team August 9, 2026 14:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants