|
|
||
|---|---|---|
| .. | ||
| bin | ||
| docs | ||
| resources | ||
| snapshots/02-onboarding | ||
| tests | ||
| utils | ||
| .env.example | ||
| .eslintignore | ||
| .gitignore | ||
| .npmrc | ||
| .wp-env.json | ||
| global-setup.ts | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| tsconfig.json | ||
| wp-cli.yml | ||
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
- Installation of
node_modules - Installation of
playwright-utilsfor local development - Project configuration
- Run tests
- Autotest Execution workflow
- Coding standards
- Automated env setup scripts
Local installation
-
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.
-
Make sure you're logged in the Syde npm package registry.
-
In the terminal change directory to
./tests/qaand run following command:npm run setup:all
This will run the next scripts:
setup:env-- Setupwp envand required plugins for running tests in http://localhost:8889setup:plugin-- Compile WooCommerce PayPal Payments plugin, generates a ZIP and moves it into resources/files to be used in testssetup:tests-- Setup required PlayWright libraries and utils
Project configuration (Devs)
-
In the test project directory (
./tests/qa/) create and configure.envfile: -
Set general variables following these steps.
-
Set PayPal API keys and test credentials. See
.env.example. The.envcontent with actual test users' credentials is stored in 1Password.
Project configuration (QA team)
-
SSE setup - will be deprecated in Q1 of 2025.
-
In the test project directory (
./tests/qa/) create and configure.envfile:2.1 Set general variables following these steps.
2.2 Set PayPal API keys and test credentials. See
.env.example. The.envcontent with actual test users' credentials is stored in 1Password. -
Configure
playwright.config.tsof the project following these steps. -
Configure reporting to Xray in Jira following these steps.
-
To avoid conflicts make sure any other payment plugins are deleted.
-
Additional website and WooCommerce configuration is done automatically via
setup-woocommercedependency project (see/tests/_setup/woocommerce.setup.ts).
Running tests
npm run tests:all-- Runs all the testsnpm run tests:critical-- Runs all the critical testsnpm run tests:onboarding-- Runs all the onboarding tests
Additional options to run tests from command line
-
Add scripts to
package.jsonof 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
-
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.
-
Link release ticket (via
tests: PCP-234) to test execution ticket. -
Set Test Execution ticket status
In progress. -
In
.envfile of the test project (/tests/qa/) add/update test execution ticket key (TEST_EXEC_KEY='PCP-234'). -
Download tested plugin
.zippackage (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). -
Optional: delete previous version of tested plugin from the website if you don't execute plugin foundation tests.
-
Start autotest execution from command line for the defined scope of tests (see this section). You should see
Test execution Jira key: PCP-234in the terminal. -
When finished test results will be imported to the specified test execution ticket in Jira.
-
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" --debugNote: command for restarting failed/skipped tests is posted to the terminal after the execution.
-
Report bugs (if any) and attach them to the test-runs of failed tests (Click "Create defect" or "Add defect" on test execution screen).
-
If needed fix failing tests in a new branch, create a PR and assign it for review.
-
Set Test execution ticket status to
Done.
Coding standards
Before commiting changes run following command:
npm run lint:js:fix
Reset Kinsta env
Note: the staging env on Kinsta should be created and the script to reset env provided by devops (if not - create a ticket on SDO board).
Find SSH data in Kinsta dashboard for your tested env. Replace data in the following one-line command and run it in the terminal to reset the env:
ssh <your-ssh-username>@<your-ssh-host> -p <your-ssh-port> '${HOME}/bin/reset-wp.sh --wp-version=6.9 --wp-type=single && exit'
Automated env setup scripts for migration
Preconditions
Local usage of automated env setup scripts assumes that the following steps are fulfilled:
-
Clone PayPal repo to your local machine:
git clone https://github.com/woocommerce/woocommerce-paypal-payments.gitNote: temporary, for migration testing change branch to
dev/qa/migration-tests:git checkout dev/qa/migration-tests. -
Copy following packages into
/tests/qa/resources/files:-
Configured PayPal plugin package (e.g. v3.4.1) named as
woocommerce-paypal-payments.zip -
Optional: Paypal plugin version to upgrade/downgrade to (e.g. v3.0.0 or v4.0.0) as
woocommerce-paypal-payments-update.zip. -
WooCommerce Subscriptions package named as
woocommerce-subscriptions.zip
-
-
In the terminal open the cloned repo and navigate to
/tests/qadir:cd tests/qa -
Install Node dependencies and Playwright:
npm run setup:tests -
In the
/tests/qadirectory create a.envfile and copy-paste content fromPCP .envvault of 1Password replacing all the data for your test env. Alternatively use.env.example. -
Run the scripts described below.
Script naming convention
Scripts follow a three-tier naming pattern:
| Prefix | Meaning | Example |
|---|---|---|
env:reset |
Reset only env + WooCommerce | npm run env:reset |
env:reset:pcp:* |
Reset env + PCP setup (single run) | npm run env:reset:pcp:usa |
env:setup:* |
PCP/config setup only, no reset | npm run env:setup:pcp:usa |
Reset env and WooCommerce setup
- Resets the env
- Configures website permalinks (
%postname%) - Installs plugins and themes:
- WooCommerce
- Storefront theme
- Additional plugins (Disable Nonce, WC Subscriptions, etc.)
- Configures WooCommerce for default country (USA):
- API keys
- Country/currency: USA/USD
- Taxes: included, 10% rate
- Shipping: flat rate/10 USD and free
- Emails: disabled
- Creates test entities:
- Classic cart and checkout
- Tested products
- Coupons
- Registered US customer
npm run env:reset
WooCommerce setup only (no SSH reset):
npm run env:setup:wc
Setup PCP for specific country
- Installs PCP plugin (
woocommerce-paypal-payments.zip). - Connects merchant from specified country.
For USA — PCP + connected US merchant + ACDC enabled (PayPal and other PMs disabled).
| With reset | Without reset |
|---|---|
npm run env:reset:pcp:usa |
npm run env:setup:pcp:usa |
For Germany & PUI (disabled by default)
| With reset | Without reset |
|---|---|
npm run env:reset:pcp:germany |
npm run env:setup:pcp:germany |
For Mexico & OXXO (disabled by default)
| With reset | Without reset |
|---|---|
npm run env:reset:pcp:mexico |
npm run env:setup:pcp:mexico |
Upgrade PCP (without env reload)
Installs woocommerce-paypal-payments-update.zip over the existing PCP installation.
npm run env:setup:pcp:update
Switch checkout layout (without env reload)
Enable classic cart/checkout
npm run env:setup:checkout:classic
Enable block cart/checkout
npm run env:setup:checkout:block
Switch tax configuration (without env reload)
Tax included in prices
npm run env:setup:tax:inc
Tax excluded from prices
npm run env:setup:tax:exc