Skip to content

Conversation

mgascam
Copy link
Contributor

@mgascam mgascam commented Sep 4, 2025

Fixes #WOOPMNT-5249

Changes proposed in this Pull Request

Split from #11002 to focus on the following changes (see comment):

  • Version coverage matrix
  • Retry logic
  • Docs

Warning

This PR hinders the stability of the E2E test runs in CI due to test flakiness, but I'm fixing those in a separate PR, to reduce the scope of changes and facilitate reviews

Details

After reviewing the state of E2E testing (pcreKM-3yi-p2) we identified some version coverage gaps:

  • PHP versions: PHP 8.2+ not covered
  • WC versions: No specific 8.8.x or 9.9.x version testing

This change aims to cover those gaps by introducing new test jobs, while keeping in mind the impact to the time it takes to run the workflows.

PHP versions

The current E2E testing strategy is updated to address PHP version coverage gaps:

  • PHP 7.3: Minimum version in the plugin header and used for WC 7.7.0 compatibility
  • PHP 8.3: Used for L-1, latest, and beta versions. Current stable version (released 2023-11-23)
  • PHP 8.4: Used for RC versions (latest, catch future compatibility issues early)

Please note that we won't be testing each WC version using every PHP version because that would introduce too many jobs, hindering the time it takes to run them. Instead I'm using a "smart" approach to keep the number of jobs to a minimal without sacrificing too much testing coverage.

WooCommerce versions

I'm adding new jobs to test with L-1 WooCommerce version, to align with this recent announcement pcShBQ-3pc-p2#comment-5118. This is the only change affecting the WC versions used in the tests.

About "beta" and "rc" versions

Please note that "beta" and "rc" versions are only included in the matrix when available. While working with the script to fetch the versions from https://api.wordpress.org/plugins/info/1.0/woocommerce.json I noticed there is no "beta" version currently available for the next version 10.1.0. I believe this is expected but thought it was worth mentioning it. Also I realized that the current workflow is using a 9.9.0-beta.1 but I think the correct beta to use should be 10.1.0-beta.x (if it exists). This inconsistency would be fixed by this PR.

Job matrix comparison

Scenario Before After Change
Pull Request Testing 4 jobs (WC Latest only) 8 jobs (WC L-1 and Latest) +4 jobs added. Execution time is similar
Main Branch Testing 20 jobs (WC 7.7.0, Latest, Beta, RC) 24 jobs (WC 7.7.0, L-1, Latest, Beta, RC) +4 jobs added. Execution time is similar
PHP Version Coverage 7.3 7.3 (WC 7.7.0), 8.3 (WC L-1, Beta, Latest), 8.4 (WC RC) +2 versions
WC Version Coverage 7.7.0, Latest, Beta, RC 7.7.0, L-1, Latest, Beta, RC +1 version (L-1)

Changes proposed in this Pull Request

  • .github/workflows/e2e-pull-request.yml: Added L-1 testing to PR workflow and include PHP in matrix.
  • .github/actions/setup-php/action.yml: support E2E_PHP_VERSION override.
  • .github/scripts/generate-wc-matrix.sh: New dynamic version resolution script. This is heavily inspired by @marcinbot's E2E - fix pulling non-latest WC versions, set up tests with rc #10990
  • .github/workflows/e2e-test.yml: The main branch workflow is updated to:
    • Uses the new version resolution script
    • L-1 testing
    • PHP versions

Testing instructions

  • E2E tests should pass in this pull request, although some flaky tests are expected.
  • E2E All workflow with this branch should pass, although some flaky tests are expected: run
  • CI checks should show job names like: WC - | PHP - | - .

  • Run npm run changelog to add a changelog file, choose patch to leave it empty if the change is not significant. You can add multiple changelog files in one PR by running this command a few times.
  • Covered with tests (or have a good reason not to test in description ☝️)
  • Tested on mobile (or does not apply)

Post merge

@mgascam mgascam changed the title [E2E] Ensure version coverage for WooCommerce and PHP [E2E][CI] Ensure version coverage for WooCommerce and PHP Sep 4, 2025
@botwoo
Copy link
Collaborator

botwoo commented Sep 4, 2025

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 11035 or branch name dev/woopmnt-5249-e2e-version-coverage-and-ci in your-test.site/wp-admin/admin.php?page=jetpack-beta&plugin=woocommerce-payments

Option 2. Jurassic Ninja - available for logged-in A12s

🚀 Launch a JN site with this branch 🚀

ℹ️ Install this Tampermonkey script to get more options.


Build info:

  • Latest commit: 97b6efd
  • Build time: 2025-09-05 10:59:28 UTC

Note: the build is updated when a new commit is pushed to this PR.

Copy link
Contributor

github-actions bot commented Sep 4, 2025

Size Change: 0 B

Total Size: 870 kB

ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.45 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.45 kB
release/woocommerce-payments/assets/css/success.css 1.06 kB
release/woocommerce-payments/assets/css/success.rtl.css 1.06 kB
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.77 kB
release/woocommerce-payments/dist/blocks-checkout.css 2.77 kB
release/woocommerce-payments/dist/blocks-checkout.js 54.3 kB
release/woocommerce-payments/dist/cart-block-rtl.css 113 B
release/woocommerce-payments/dist/cart-block.css 112 B
release/woocommerce-payments/dist/cart-block.js 16.7 kB
release/woocommerce-payments/dist/cart.js 5.27 kB
release/woocommerce-payments/dist/checkout-rtl.css 1.08 kB
release/woocommerce-payments/dist/checkout.css 1.08 kB
release/woocommerce-payments/dist/checkout.js 34.4 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 367 B
release/woocommerce-payments/dist/express-checkout.css 367 B
release/woocommerce-payments/dist/express-checkout.js 16.8 kB
release/woocommerce-payments/dist/frontend-tracks.js 833 B
release/woocommerce-payments/dist/index-rtl.css 21 kB
release/woocommerce-payments/dist/index.css 21 kB
release/woocommerce-payments/dist/index.js 151 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.08 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.82 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 18.1 kB
release/woocommerce-payments/dist/multi-currency.css 3.83 kB
release/woocommerce-payments/dist/multi-currency.js 24.6 kB
release/woocommerce-payments/dist/order-rtl.css 740 B
release/woocommerce-payments/dist/order.css 740 B
release/woocommerce-payments/dist/order.js 21.2 kB
release/woocommerce-payments/dist/plugins-page-rtl.css 484 B
release/woocommerce-payments/dist/plugins-page.css 484 B
release/woocommerce-payments/dist/plugins-page.js 2.64 kB
release/woocommerce-payments/dist/product-details-rtl.css 433 B
release/woocommerce-payments/dist/product-details.css 436 B
release/woocommerce-payments/dist/product-details.js 12.3 kB
release/woocommerce-payments/dist/settings-rtl.css 11.7 kB
release/woocommerce-payments/dist/settings.css 11.6 kB
release/woocommerce-payments/dist/settings.js 140 kB
release/woocommerce-payments/dist/subscription-edit-page.js 703 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 527 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 527 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 1.98 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 730 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 1.9 kB
release/woocommerce-payments/dist/success.js 6.03 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 235 B
release/woocommerce-payments/dist/tos.js 3 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 5.68 kB
release/woocommerce-payments/dist/woopay-express-button.js 22.8 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.29 kB
release/woocommerce-payments/dist/woopay.css 4.27 kB
release/woocommerce-payments/dist/woopay.js 70.8 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 625 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 814 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/jetpack-script-data.js 957 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.02 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/script-data.js 69 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/babel.config.js 163 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.css 2.47 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.js 14.3 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css 2.47 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.css 10.1 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.js 29.7 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.rtl.css 10.1 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js 280 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css 625 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js 333 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css 626 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js 417 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-users-connection.js 161 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 585 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 215 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css 721 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js 412 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js 625 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.04 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 294 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 408 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.59 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 301 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 746 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 574 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 414 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 543 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js 9.4 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.js 6.78 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.84 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 545 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-subscription.js 2.52 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.js 22.2 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.7 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/payment-method-restrictions.js 1.29 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/wcs-meta-boxes-order.js 507 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 358 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 428 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/view-subscription.js 1.38 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/wcs-cart.js 782 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.09 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.26 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 391 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.04 kB

compressed-size-action

@mgascam mgascam marked this pull request as ready for review September 4, 2025 17:02
@mgascam mgascam requested a review from a team September 4, 2025 17:02
@htdat htdat requested a review from Copilot September 5, 2025 01:17
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements comprehensive version coverage for E2E tests by introducing dynamic matrix generation with an L-1 policy, expanded PHP version testing, and improved retry logic. The changes ensure better coverage of WooCommerce and PHP versions while optimizing CI execution time.

  • Dynamic version resolution using a new script that automatically fetches WC versions and applies L-1 policy
  • Enhanced PHP version coverage (7.3, 8.3, 8.4) with strategic assignment to different WC versions
  • Improved retry logic that selectively re-runs only failed spec files instead of using Playwright's built-in retries

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.github/workflows/e2e-test.yml Updated main E2E workflow to use dynamic matrix generation with optimized PHP/WC version combinations
.github/workflows/e2e-pull-request.yml Enhanced PR workflow to test against both L-1 and latest WC versions with PHP 8.3
.github/scripts/generate-wc-matrix.sh New script for dynamic WC version resolution with L-1 policy implementation
.github/scripts/README.md Comprehensive documentation for the new matrix generation strategy
.github/actions/setup-php/action.yml Added support for E2E_PHP_VERSION environment variable override
.github/actions/e2e/run-log-tests/action.yml Improved retry logic to selectively re-run failed spec files
tests/e2e/playwright.config.ts Disabled built-in retries in favor of custom retry strategy
tests/e2e/env/setup.sh Removed legacy beta/RC version resolution logic
tests/e2e/README.md Updated documentation with new retry strategy and matrix generation details

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Member

@htdat htdat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code changes resolve the coverage issue, and retries work as I double checked at https://github.com/Automattic/woocommerce-payments/actions/runs/17467393007/job/49619897091?pr=11035

Overall, LGTM with some improvement comments!

@mgascam mgascam added this pull request to the merge queue Sep 5, 2025
Merged via the queue into develop with commit 37fa6b0 Sep 5, 2025
38 of 43 checks passed
@mgascam mgascam deleted the dev/woopmnt-5249-e2e-version-coverage-and-ci branch September 5, 2025 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants