You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The runner needs a cicd pipeline for testing new pushes/PRs against coding standards, with a container for database builds that mimic a hosting environment, and automation that triggers prepare.php and test.php scripts to return any errors and other output- preferably with a Hosting Team reporting bot relaying data.
Tech specs
Keeping in line with Core standards - this should be built out using GitHub workflows/ actions runner image and Docker containerization for database testing, with phpcs, wpcs coding standard tests and automated triggering of runner scripts. Ideally a Hosting Team reporting bot would post results on PRs. The process of implementing this can be done iteratively.
First Runner code testing can be put in place, then automation triggering environment tests to simulate what happens in a hosting environment, and lastly a bot to report back any errors in PR comments. Then rinse and repeat for the reporter.
Which repos?
PHPunit Test Runner - to start, and as the highest priority
PHPunit Test Reporter - next priority although there is not much development happening here.
Runner Issue #212 : Code here switches to using short array syntax ( $var = [] vs. $var = array() ). The former is eprohibited in wp coding standards. Tests would catch that and prompt a fix.
Runner issue #271: Incorrect syntax was not caught by humans and resulted in a parse error on host test environments
Next, need to set up containerization and automate an install of the runner, and jobs that trigger prepare.php and test.php scripts to return any errors and other output. I am not sure this could work with a reporter bot relaying data back to test results.
@kittenkamala Following up on #325, the next phase is ready in feat/274-containerization:
Containerized runner
docker/Dockerfile builds one image with PHP and the extensions the test suite uses, Composer, Node 24, git, rsync, and SSH. Tests run as a non-root user.
compose.yaml pairs it with a throwaway MySQL or MariaDB database. docker compose up runs prepare.php → test.php → report.php → cleanup.php, and cleanup always runs.
Each step's log, plus junit.xml, env.json, and a Markdown summary.md, is saved to output/.
The new Container Tests workflow runs this on every PR, on PHP 8.3 / MySQL 8.4 and PHP 8.1 / MariaDB 10.6. It shows the summary on the run page and uploads the results as an artifact.
Reporter bot
Container Tests Report posts those summaries as a comment on the PR and updates the same comment on later pushes.
It runs from the base repository, so it works for PRs from forks without checking out or running PR code.
Notes:
trunk now needs Node ≥ 24.18.
PHP 7.4 can't be containerized because its Debian 11 base no longer gets packages, but phpunit-tests.yml still covers 7.4.
4 Tests_Dependencies_jQuery::test_jquery_files_exist failures show up on every run. They come from prepare.php's build step, not the container, and probably also happen in phpunit-tests.yml, where continue-on-error hides them. I'll open a separate issue.
The bot only takes effect once it's on master, so the first real comment will appear on the next PR after merge.
Activity
kittenkamala commentedon Sep 29, 2025
Some more references
GitHub workflow and actions:
https://docs.github.com/en/actions/how-tos/write-workflows/choose-where-workflows-run/run-jobs-in-a-container
https://docs.docker.com/build/ci/github-actions/
https://github.com/WordPress/wordpress-develop/blob/trunk/.github/workflows/workflow-lint.yml
https://github.com/WordPress/wordpress-develop/blob/trunk/.github/workflows/reusable-php-compatibility.yml
https://make.wordpress.org/core/2020/10/15/introducing-github-actions-for-automated-testing/
slack: https://github.com/WordPress/wordpress-develop/blob/trunk/.github/workflows/slack-notifications.yml
Coding standards:
https://github.com/WordPress/wordpress-develop/blob/trunk/phpcs.xml.dist
e2e:
https://github.com/WordPress/wordpress-develop/tree/trunk/tests/e2e
https://github.com/WordPress/wordpress-develop/blob/trunk/.github/workflows/end-to-end-tests.yml
Related:
#114
#127 (the PR for #274 should close out #127 as well)
dhruvang21 commentedon Jun 30, 2026
@kittenkamala i have implemented the ci/cd pipeline for the code changes using this PR #325
kittenkamala commentedon Aug 5, 2026
Code tests were implemented in #325
Next, need to set up containerization and automate an install of the runner, and jobs that trigger prepare.php and test.php scripts to return any errors and other output. I am not sure this could work with a reporter bot relaying data back to test results.
dhruvang21 commentedon Oct 1, 2026
@kittenkamala Following up on #325, the next phase is ready in
feat/274-containerization:Containerized runner
docker/Dockerfilebuilds one image with PHP and the extensions the test suite uses, Composer, Node 24, git, rsync, and SSH. Tests run as a non-root user.compose.yamlpairs it with a throwaway MySQL or MariaDB database.docker compose uprunsprepare.php→test.php→report.php→cleanup.php, and cleanup always runs.junit.xml,env.json, and a Markdownsummary.md, is saved tooutput/.Reporter bot
Notes:
phpunit-tests.ymlstill covers 7.4.Tests_Dependencies_jQuery::test_jquery_files_existfailures show up on every run. They come fromprepare.php's build step, not the container, and probably also happen inphpunit-tests.yml, wherecontinue-on-errorhides them. I'll open a separate issue.