woocommerce-paypal-payments/tests/qa
Piotr Ostrowski 6da7daf82d
Merge pull request #4163 from woocommerce/dev/qa/fix-for-3.4.1
[QA] Autotest fixex for v3.4.1 and playwright-utils update
2026-03-11 14:24:11 +01:00
..
bin Lint fix 2025-11-14 11:32:46 +01:00
docs Add docs/, refactor main README 2025-09-09 12:43:47 +02:00
resources Update button labels and colors in types.ts; refactor PCP utility functions 2026-02-24 09:41:37 +01:00
snapshots/02-onboarding Update onboarding screenshots 2025-12-01 18:56:57 +01:00
tests Refactor: Update method name for deleting page in PLM Configurator test 2026-03-05 17:49:11 +01:00
utils Refactor Pay Later Messaging tests to utilize a dedicated preview iframe method for visibility checks. Updated test assertions for improved clarity and consistency. Adjusted styling test locations. 2026-02-26 13:04:07 +01:00
.env.example Update to playwright-utils v4.0.0 2026-02-12 16:55:09 +01:00
.eslintignore Fix eslint 2025-03-06 11:11:57 +01:00
.gitignore Fix .gitignore and package-lock 2025-12-16 10:38:14 +01:00
.npmrc Initial commit for QA folder 2025-02-05 16:40:30 +03:00
.wp-env.json Add custom domain for e2e tests 2025-11-20 16:33:25 +04:00
global-setup.ts Initial commit for QA folder 2025-02-05 16:40:30 +03:00
package-lock.json Update playwrihgt-utils to v 5.0.0 2026-03-10 18:34:12 +01:00
package.json Update playwrihgt-utils to v 5.0.0 2026-03-10 18:34:12 +01:00
playwright.config.ts Update to playwright-utils v4.0.0 2026-02-12 16:55:09 +01:00
README.md wp env support for e2e 2025-10-06 16:50:32 +03:00
tsconfig.json Initial commit for QA folder 2025-02-05 16:40:30 +03:00
wp-cli.yml wp env support for e2e 2025-10-06 16:50:32 +03:00

WooCommerce PayPal Payments Plugin Tests

Depends on @inpsyde/playwright-utils package.

Detailed information about current test project can be found in docs.

Table of Content

Local installation

  1. Clone repository locally:

    git clone https://github.com/woocommerce/woocommerce-paypal-payments.git
    

Installation of wp env, PlayWright and PayPal plugin

See also @inpsyde/playwright-utils documentation.

  1. Make sure you're logged in the Syde npm package registry.

  2. In the terminal change directory to ./tests/qa and run following command:

    npm run setup:all
    

This will run the next scripts:

  • setup:env -- Setup wp env and required plugins for running tests in http://localhost:8889
  • setup:plugin -- Compile WooCommerce PayPal Payments plugin, generates a ZIP and moves it into resources/files to be used in tests
  • setup:tests -- Setup required PlayWright libraries and utils

Project configuration (Devs)

  1. In the test project directory (./tests/qa/) create and configure .env file:

  2. Set general variables following these steps.

  3. Set PayPal API keys and test credentials. See .env.example. The .env content with actual test users' credentials is stored in 1Password.

Project configuration (QA team)

  1. SSE setup - will be deprecated in Q1 of 2025.

  2. In the test project directory (./tests/qa/) create and configure .env file:

    2.1 Set general variables following these steps.

    2.2 Set PayPal API keys and test credentials. See .env.example. The .env content with actual test users' credentials is stored in 1Password.

  3. Configure playwright.config.ts of the project following these steps.

  4. Configure reporting to Xray in Jira following these steps.

  5. To avoid conflicts make sure any other payment plugins are deleted.

  6. Additional website and WooCommerce configuration is done automatically via setup-woocommerce dependency project (see /tests/_setup/woocommerce.setup.ts).

Running tests

  • npm run tests:all -- Runs all the tests
  • npm run tests:critical -- Runs all the critical tests
  • npm run tests:onboarding -- Runs all the onboarding tests

Additional options to run tests from command line

  • Add scripts to package.json of the project (eligible for Windows, not tested on other OS):

    "scripts": {
    	"test:smoke":  "npx playwright test --grep \"@Smoke\"",
    	"test:critical": "npx playwright test --grep \"@Critical\"",
    	"test:ui": "npx playwright test --grep \"UI\"",
    	"test:functional": "npx playwright test --grep \"Functional\"",
    	"test:all": "npm run test:ui & npm run test:functional"
    },
    

    Run script with the following command:

    npm run test:critical
    
  • Run several tests by test ID (on Windows, Powershell):

    npx playwright test --grep --% "PCP-123^|PCP-124^|PCP-125"
    

    It may be required additionally to specify the project (if tests relate to more then one project):

    npx playwright test --project "project-name" --grep --% "PCP-123^|PCP-124^|PCP-125"
    

Autotest Execution workflow

  1. Create Test Execution ticket in Jira, named after the tested plugin version, for example "Test Execution for v2.3.4-rc1, PHP8.1".

    Note: For autotest execution there's no need to manually add tests cases to the execution - the executed tests will be imported automatically after execution.

  2. Link release ticket (via tests: PCP-234) to test execution ticket.

  3. Set Test Execution ticket status In progress.

  4. In .env file of the test project (/tests/qa/) add/update test execution ticket key (TEST_EXEC_KEY='PCP-234').

  5. Download tested plugin .zip package (usually attached to release ticket) and add it to /tests/qa/resources/files. You may need to remove version number from the file name (expected name: woocommerce-paypal-payments.zip).

  6. Optional: delete previous version of tested plugin from the website if you don't execute plugin foundation tests.

  7. Start autotest execution from command line for the defined scope of tests (see this section). You should see Test execution Jira key: PCP-234 in the terminal.

  8. When finished test results will be imported to the specified test execution ticket in Jira.

  9. Analyze failed tests (if any). Restart execution for failed tests, possibly in debug mode (for Windows):

    npx playwright test --grep --% "PCP-123^|PCP-124^|PCP-125" --debug
    

    Note: command for restarting failed/skipped tests is posted to the terminal after the execution.

  10. Report bugs (if any) and attach them to the test-runs of failed tests (Click "Create defect" or "Add defect" on test execution screen).

  11. If needed fix failing tests in a new branch, create a PR and assign it for review.

  12. Set Test execution ticket status to Done.

Coding standards

Before commiting changes run following command:

npm run lint:js:fix

Automated env setup scripts

Local usage of automated env setup scripts assumes that the following steps are fulfilled:

  1. Your current terminal dir to run scripts is ./tests/qa.

  2. Dependencies and node_modules are installed (see this section).

    Note: for now the storage of .zip files is restricted in .gitignore. Please ask someone of QA to provide the content of ./tests/qa/resources/files dir.

  3. .env file is configured as per step 2 of this section (simply copy-paste it from PCP .env vault of 1Password).

  4. (Optional) For DDEV setup add IGNORE_HTTPS_ERRORS=true to .env and remove the Basic Auth credentials:

    # playwright-utils config
    IGNORE_HTTPS_ERRORS=true
    WP_BASE_URL='https://woocommerce-paypal-payments.ddev.site'
    WP_USERNAME=admin
    WP_PASSWORD=admin
    WP_BASIC_AUTH_USER=
    WP_BASIC_AUTH_PASS=
    STORAGE_STATE_PATH='./storage-states'
    STORAGE_STATE_PATH_ADMIN='./storage-states/admin.json'
    

Reset SSE env

Note: see SSE setup don in Confluence (will be deprecated in 2025).

  1. Connect via ssh:

    ssh -l fname php_version.emp.pluginpsyde.com
    
  2. Reset SSE website:

    rm -rf /var/www/html/* 2>/dev/null; wp core download --version=X.Y.Z && wp config create && mariadb -e "DROP DATABASE fname; CREATE DATABASE fname;" && wp core install
    

Setup store

  • Installs WooCommerce, Storefront theme, additional plugins (WP Debugging, Disable Nonce, Subscriptions, etc.).
  • Configures website permalinks (%postname%).
  • Configures WooCommerce default settings (country, currency, taxes, shipping, API keys, emails).
  • Creates classic pages, products, coupons, registered customer.
npm run setup:store:default

Setup block pages

npm run setup:checkout:block

Setup classic pages

npm run setup:checkout:classic

Setup taxes included

npm run setup:tax:inc

Setup taxes excluded

npm run setup:tax:exc

Setup US store and merchant (block pages)

npm run setup:pcp:usa

Setup German store and merchant (block pages)

npm run setup:pcp:germany

Setup Mexican store and merchant (block pages)

npm run setup:pcp:mexico

Setup US store and merchant with vaulting (PayPal, ACDC) enabled (block pages)

npm run setup:pcp:usa:vaulting

Setup US store and merchant with vaulting (PayPal, ACDC) enabled (classic pages)

npm run setup:pcp:usa:vaulting:classic

Setup US store and merchant for Vaulting subscription (WC Subscriptions plugin, products, block pages)

npm run setup:pcp:usa:vaulting:subscription

Setup US store and merchant for PayPal subscriptions (WC Subscriptions plugin, products, block pages)

npm run setup:pcp:usa:paypal:subscription