Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
402182f
Migrate the UI screenshot-testing harness to Puppeteer 24 and Node 24
sgiehl Jul 3, 2026
30088d2
Replace deprecated request/request-promise with native fetch in the U…
sgiehl Jul 3, 2026
ad10496
Use the ddev web image Chromium for local UI tests on all architectures
sgiehl Jul 3, 2026
223c094
Run the UI and Javascript test CI jobs on Node 24
sgiehl Jul 3, 2026
13e3b9b
Stabilise UI specs for the new headless Chrome
sgiehl Jul 3, 2026
240279d
Update submodule plugin references for Node 24 UI test compatibility
sgiehl Jul 3, 2026
b6ac517
Update expected UI screenshots for the new headless Chrome
sgiehl Jul 3, 2026
cb2dbc1
Update expected UI screenshots corrected by the Chrome 149 fixes
sgiehl Jul 3, 2026
6075f88
Set the copied dashboard name directly instead of typing it
sgiehl Jul 3, 2026
70ee027
Reload before waiting for the applied complex-segment report
sgiehl Jul 3, 2026
e898d95
Allow more time for the complex-segment report to archive on CI
sgiehl Jul 3, 2026
ae061b5
Wait for updater navigation to settle in the OneClickUpdate test
sgiehl Jul 3, 2026
efcb139
Tolerate navigation during waitForNetworkIdle settling evaluates
sgiehl Jul 3, 2026
41af68e
Wait for the increase-dimensions code blocks before the cancel screen…
sgiehl Jul 3, 2026
db4a9a8
Tolerate sub-pixel rendering noise on UsersManager user-table screens…
sgiehl Jul 3, 2026
31781d2
Expand mobile admin menu categories deterministically
sgiehl Jul 3, 2026
d79cefc
Wait for both increase-dimensions code snippets before the cancel scr…
sgiehl Jul 4, 2026
80d0399
Fix UI screenshot regressions flagged in review
sgiehl Jul 5, 2026
da92dfe
Sync corrected review screenshots + harden CI-timing-sensitive waits
sgiehl Jul 5, 2026
876e268
Sync password-reuse error screenshot; nudge layout recompute for CI-o…
sgiehl Jul 5, 2026
3e8f5e0
Sync corrected config-id modal screenshot (full-page shadow overlay)
sgiehl Jul 5, 2026
405b7f4
Sync the normal permissions_next screenshot
sgiehl Jul 5, 2026
9480af2
Revert ineffective CI-timing waits for CustomDimensions/Goals screens…
sgiehl Jul 5, 2026
1c7dcea
Capture full all-goals table by widening viewport past the scroller
sgiehl Jul 5, 2026
63b46a5
Update GoalsTable all-goals expected screenshot (full-width capture)
sgiehl Jul 5, 2026
27428e5
Drop modal-overlay CSS override in PrivacyManager config_id test
sgiehl Jul 5, 2026
829452e
Update config_id modal expected screenshot to genuine viewport overlay
sgiehl Jul 5, 2026
d992a37
Open the bulk set-access submenu by hovering its own trigger
sgiehl Jul 5, 2026
8224f7a
Re-sync expected UI screenshots for the new headless Chrome after rebase
sgiehl Jul 6, 2026
054b32d
Present the UI-test browser as regular Chrome so tracking is not blocked
sgiehl Jul 6, 2026
435fd2f
Remove duplicate user-agent override introduced during rebase
sgiehl Jul 8, 2026
5ba2221
Re-sync core expected UI screenshots after rebase
sgiehl Jul 8, 2026
c198120
Re-sync BarGraph/PieGraph other-metric + admin-home expected screenshots
sgiehl Jul 8, 2026
525ebaa
Adapt rebased Goals and UsersManager UI tests to the Puppeteer 24 har…
sgiehl Jul 21, 2026
602c001
Re-sync core expected UI screenshots for the new headless Chrome afte…
sgiehl Jul 21, 2026
56e4e8a
Update Bandwidth, MarketingCampaignsReporting and TagManager submodules
sgiehl Jul 21, 2026
96975ab
Sync Goals row-evolution and description-wraps expected screenshots
sgiehl Jul 21, 2026
1a909e5
Fix UsersManager bulk-remove test: wait for list reload before selecting
sgiehl Jul 21, 2026
78fe704
Sync OneClick update expected screenshots for the 5.x->6.x upgrade flow
sgiehl Jul 21, 2026
5c794e6
Fix UsersManager set-access-all-sites test: confirm password when pro…
sgiehl Jul 21, 2026
b4425b5
Sync SystemSettings_settings expected screenshot
sgiehl Jul 21, 2026
f245bc2
Re-sync UsersManager_permissions_next to the correct render
sgiehl Jul 21, 2026
d1bcb68
Update MarketingCampaignsReporting submodule (fix loaded_ecommerce st…
sgiehl Jul 21, 2026
b5d82dc
Update CustomAlerts submodule (fix stray dropdown hover in screenshots)
sgiehl Jul 21, 2026
dccf8ad
Shorten UI-test comments added during the Puppeteer 24 migration
sgiehl Jul 21, 2026
7146220
Update MarketingCampaignsReporting and CustomAlerts submodules (corre…
sgiehl Jul 21, 2026
ed0fb5b
Update TagManager and QueuedTracking submodules (shortened UI-test co…
sgiehl Jul 21, 2026
20f939d
Fix UsersManager set-access-all-sites password entry
sgiehl Jul 22, 2026
590e52b
Stabilize flaky UI tests: comparison large-range graph + widgetized g…
sgiehl Jul 22, 2026
a7bfc83
Fix set-access-all-sites password entry: clear field before typing
sgiehl Jul 22, 2026
3eeca38
Revert set-access-all-sites to non-cascading password handling
sgiehl Jul 22, 2026
ad61541
Re-sync Dashboard and Referrers expected screenshots after rebase
sgiehl Jul 22, 2026
d1e4c34
Stabilize flaky UI tests: TagManager publish modal + SitesManager par…
sgiehl Jul 22, 2026
81f4542
Clear the confirm-password field before typing in UsersManager tests
sgiehl Jul 22, 2026
b5ae6ea
Fix UsersManager password confirmations: set value instead of page.type
sgiehl Jul 22, 2026
beac298
Stabilize UsersManager bulk_set_access and delete_bulk_confirm captures
sgiehl Jul 22, 2026
04943d3
Sync UsersManager single-site, superuser-activitylog and bulk-set-con…
sgiehl Jul 22, 2026
67b7e75
Sync api_listing, delete_bulk_confirm and permissions_next expected s…
sgiehl Jul 22, 2026
64ced01
Wait for the permissions access-level header to settle before capturing
sgiehl Jul 22, 2026
01791bc
Re-sync config-file diagnostics expected screenshot after rebase
sgiehl Jul 23, 2026
a7381b9
Sync widgets-listing and add-token expected screenshots after rebase
sgiehl Jul 24, 2026
c9c0f56
Tolerate the permissions access-level header height shift with a thre…
sgiehl Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 3 additions & 15 deletions .ddev/initial-config/config.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,10 @@
const fs = require('fs');

exports.piwikUrl = "https://matomo.ddev.site/";
exports.phpServer = {
HTTP_HOST: 'matomo.ddev.site',
REQUEST_URI: '/',
REMOTE_ADDR: '127.0.0.1'
};

const browserConfig = {
args: ['--no-sandbox', '--ignore-certificate-errors']
};

// Puppeteer's bundled Chromium is amd64-only. When running on an arm64
// container (e.g. Apple Silicon without Rosetta), fall back to the system
// Chromium so UI tests still execute -- screenshots won't match CI in that
// case (the configure-platform.sh hook prints a warning).
if (process.arch !== 'x64' && fs.existsSync('/usr/bin/chromium')) {
browserConfig.executablePath = '/usr/bin/chromium';
}

exports.browserConfig = browserConfig;
// browserConfig (including the Chrome/Chromium executable path) is provided by tests/UI/config.dist.js,
// which resolves the Chromium the ddev web image installs. Local screenshots may still differ
// slightly from the CI-generated expected screenshots.
6 changes: 3 additions & 3 deletions .github/workflows/matomo-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ jobs:
with:
test-type: 'JS'
php-version: '8.1'
node-version: '12'
node-version: '24'
Client:
runs-on: ubuntu-24.04
timeout-minutes: 15
Expand Down Expand Up @@ -402,7 +402,7 @@ jobs:
php-version: '8.1'
mysql-engine: 'Mysql'
mysql-version: '8.0'
node-version: '16'
node-version: '24'
redis-service: true
artifacts-pass: ${{ secrets.ARTIFACTS_PASS }}
upload-artifacts: true
Expand Down Expand Up @@ -439,7 +439,7 @@ jobs:
php-version: '8.1'
mysql-engine: 'Mysql'
mysql-version: '8.0'
node-version: '16'
node-version: '24'
redis-service: true
artifacts-pass: ${{ secrets.ARTIFACTS_PASS }}
upload-artifacts: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/run-single-ui-test-suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
ui-test-options: '${{ inputs.test_suite_name }}'
test-type: 'UI'
php-version: '8.1'
node-version: '16'
node-version: '24'
redis-service: true
artifacts-pass: ${{ secrets.ARTIFACTS_PASS }}
upload-artifacts: true
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions plugins/BotTracking/tests/UI/BotTracking_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,16 @@ describe("BotTracking", function () {
expect(await sameRow(docsWidgetId, brokenWidgetId)).to.equal(1);
expect(await sameRow(humanWidgetId, aiWidgetId)).to.equal(1);

// The first (wide) report's DataTable header can be left mis-positioned after the layout reflows
// (help notification dismissal) under the modern headless Chrome. Scroll to top and trigger a
// resize so the tables recompute their header/column layout before capturing.
await page.evaluate(() => {
window.scrollTo(0, 0);
window.dispatchEvent(new Event('resize'));
});
await page.waitForTimeout(250);
await page.waitForNetworkIdle();

var elem = await page.$('.pageWrap');
expect(await elem.screenshot()).to.matchImage('bot_content_requests');
});
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading