Depends on @inpsyde/playwright-utils package.
Detailed information about current test project can be found in docs.
- Local installation
- Project configuration (Devs)
- Project configuration (QA team)
- Running tests
- Autotest Execution workflow
- Coding standards
- Reset Kinsta env
- Automated env setup scripts
-
Clone repository locally:
git clone https://github.com/woocommerce/woocommerce-paypal-payments.git
-
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.
-
Create and configure
.envfile:1.1 Set general variables following these steps.
1.2 Set PayPal API keys and test credentials. See
.env.example. For Google Pay transaction tests, make sure to also setGOOGLE_PAY_EMAILandGOOGLE_PAY_PASSWORD. 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).
-
Add
yarntodevDependenciesinpackage.json:"devDependencies": { "yarn": "^1.22.21",
-
Execute steps for local development described here.
General one-line
tsc-watchcommand is:npm run e2e:setup:tests && cd ./playwright-utils && yarn devLocal
-
After development is finished cleanup
package.jsonand regenerate thepackage-lock.json.
npm run tests:all-- Runs all the testsnpm run tests:critical-- Runs all the critical testsnpm run tests:onboarding-- Runs all the onboarding tests
-
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"
-
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 add/update test execution ticket key (XRAY_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" --debug
Note: 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.
Before committing changes run following command:
npm run e2e:lint:js:fixNote: 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'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.git
Note: 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
-
-
Install Node dependencies and Playwright:
npm run e2e:setup:tests
-
In the root 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.
Scripts follow a naming pattern:
| Prefix | Meaning | Example |
|---|---|---|
e2e:env:reset |
Reset only env | npm run e2e:env:reset |
e2e:env:reset:wc |
Reset only env + WooCommerce | npm run e2e:env:reset:wc |
e2e:env:reset:pcp:* |
Reset env + WooCommerce + PCP setup (single run) | npm run e2e:env:reset:pcp:usa |
e2e:env:setup:* |
PCP/config setup only, no reset | npm run e2e:env:setup:pcp:usa |
- 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
# Reset env only
npm run env:reset
# Reset env, WooCommerce
npm run env:reset:wcWooCommerce setup only (no SSH reset):
npm run e2e:env:setup:wc- 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 e2e:env:reset:pcp:usa |
npm run e2e:env:setup:pcp:usa |
| With reset | Without reset |
|---|---|
npm run e2e:env:reset:pcp:germany |
npm run e2e:env:setup:pcp:germany |
| With reset | Without reset |
|---|---|
npm run e2e:env:reset:pcp:mexico |
npm run e2e:env:setup:pcp:mexico |
Installs woocommerce-paypal-payments-update.zip over the existing PCP installation.
npm run e2e:env:setup:pcp:updatenpm run e2e:env:setup:checkout:classicnpm run e2e:env:setup:checkout:blocknpm run e2e:env:setup:tax:incnpm run e2e:env:setup:tax:exc