Skip to content

Build/Test Tools: Test localized packages in the install and upgrade tests - #13867

Draft
adimoldovan wants to merge 1 commit into
WordPress:trunkfrom
adimoldovan:locale-install-upgrade-tests
Draft

adimoldovan wants to merge 1 commit into
WordPress:trunkfrom
adimoldovan:locale-install-upgrade-tests

Conversation

@adimoldovan

@adimoldovan adimoldovan commented Sep 30, 2026 •

Copy link
Copy Markdown

Trac ticket: TBD

Add a locale job to install-testing.yml and to upgrade-testing.yml. The existing PHP × database matrices stay the same.

  • Install: download the localized package, check the version and $wp_local_package, verify the checksums, install and run the smoke check.
  • Upgrade: start from an earlier localized release on the same branch and update in two ways:
    • auto: update with the en_US package, then wp language core update. This is what automatic updates do.
    • manual: update with the localized package. This is what wp core update --locale and "Update now" do.

A locale is tested when it has a localized package for the branch's X.Y release or the previous minor release. Locales below the translation thresholds have no package, so they are not tested.

⚠️ Known limitation: timing

The timing of the localized packages and language packs build is not clear. If these workflows run before the builds finish, the locale jobs fail for almost every locale. This happens when:

  • the release team dispatches the workflows right after a release,
  • a PR or push run resolves latest to a release that is only a few hours old,
  • the weekly install run falls inside that window.

Other things to know

  • The locale jobs run the smoke check through WordPress/wordpress-develop/.github/actions/smoke-check@trunk, like the existing jobs. The old trunk script looks for the English text "Hello world!" and "No Update Required", so the smoke step fails on this PR's own CI until the smoke-check.sh change is on trunk. The smoke-check.sh change could go in first as a separate commit.
  • latest and nightly are tested as the latest stable release, because there are no localized nightly builds. Thus the weekly install run checks the current release. An X.Y target or a pre-release has no earlier release on its branch, so no locales are tested for it and the run shows a notice.
  • The matrix job fails when downloads.wordpress.org answers with anything other than 200 or 404. An outage therefore cannot drop locales and give a green run.

Testing Instructions

The jobs run only in WordPress/wordpress-develop. To test on a fork, temporarily change the github.repository conditions and point the smoke-check action to the fork branch. Then:

  1. Dispatch Installation Tests with wp-version set to 7.1.2, and again with 6.9.9.
  2. Dispatch Upgrade Tests with new-version set to 7.1.2.
  3. Confirm that only the locales in the table above fail, and that the auto upgrade jobs pass.
  4. Confirm that the existing PHP × database jobs are unchanged.

I ran the job scripts locally against MySQL 8.4, using the WP-CLI steps from the workflows. it_IT, fr_FR, de_DE and ja pass. ar fails at the download, as expected. I have not yet dispatched the workflows on a fork.

Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 5.5
Used for: Implementation, local testing and review of the workflow changes and this description. I reviewed the result.


This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.

…tests.

The install and upgrade tests use only the en_US package. Localized packages can be missing after a release, and no test reports it.

Add a locale job next to the existing PHP and database matrices, in both workflows. A locale is tested when it has a localized package for an earlier release on the same branch.

- Install: download, verify checksums, install and smoke check the localized package.
- Upgrade: update a localized site from the same branch, with the en_US package and a language pack (as automatic updates do), and with the localized package (as a manual update does).

The smoke check now reads its text markers from WordPress, so it also works on a localized site.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants