- Add class PayPalConnectionPopup - Refactor connectToSandbox - Add new USA paypal user account |
||
|---|---|---|
| .. | ||
| resources | ||
| tests | ||
| utils | ||
| .env.example | ||
| .gitignore | ||
| .npmrc | ||
| global-setup.ts | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| tsconfig.json | ||
PCP Tests
Folder for Playwright tests. Depends on @inpsyde/playwright-utils package.
Folder structure
Tests for PCP project are stored under the tests/qa dir.
Project structure
-
resources- files with test-data, images, project related installation packages, types, etc. -
tests- test specifications. For payment plugins contains following folders:01-plugin-foundation- general tests for plugin installation, uninstallation, activation, deactivation, display of plugin in WooCommerce -> Settings -> Payments.
The rest of the tests will be added over time
* - folders are numerated on purpose, to force correct sequence of tests - from basic to advanced. Although each test should be independent and work separately, it is better to start testing from
plugin-foundationand move to more complex tests.** - folders and numeration can be different, based on project requirements.
-
utils- project related utility files, built on top of@inpsyde/playwright-utils.-
admin- functionality for operating dashboard pages. -
frontend- functionality for operating frontend pages, hosted checkout pages (payment system provider's pages). -
test.ts- declarations of project related test fixtures. -
other project related functionality, like helpers, APIs, urls.
-
-
.env,playwright.config.ts,package.json- see below.
Setup @inpsyde/playwright-utils as a node package
-
Remove
"workspaces": [ "playwright-utils" ]frompackage.json. -
In the root of the tests (which is qa) run following command:
npm run setup:tests
Setup @inpsyde/playwright-utils for local development
-
Add
"workspaces": [ "playwright-utils" ]topackage.json. -
Delete
@inpsyde/playwright-utilsfrom/node_modules. -
In the root of the project (which is qa in this case) run following command:
git clone https://github.com/inpsyde/playwright-utils.git@inpsyde/playwright-utilsrepository should be cloned asplaywright-utilsright inside the root directory of project. -
Restart VSCode editor. This will create
playwright-utilsinstance in the source control tab of VSCode editor. -
Run following command:
npm run setup:utils -
@inpsyde/playwright-utilsshould reappear in node_modules. Following message (coming fromtsc-watch) should be displayed in the terminal:10:00:00 - Found 0 errors. Watching for file changes. -
If you plan to make changes in
playwright-utilskeep current terminal window opened and create another instance of terminal.
Project configuration
Project requires a working WordPress website with WooCommmerce, .env file and configured Playwright.
-
SSE setup - will be deprecated in Q1 of 2025.
-
Tested user with Administrator role should be created
-
In the Dashboard navigate to Settings -> Permalinks and select
Post namein Permalink structure for correct format of REST path. -
Install Storefront theme.
-
Install WooCommerce plugin.
-
In WooCommerce -> Settings -> Advanced -> REST API create Consumer Key and Secret with Read/Write permissions and store them in
.env. -
To avoid conflicts make sure any other payment plugins like are deleted.
-
Configure
.envfile following these steps. See also/tests/qa/.env.example. -
Configure
playwright.config.tsof the project following these steps. -
Reporting to Xray in Jira is configured this way.
Run tests
To execute tests, in the terminal, navigate to the qa directory of the project (e.g. cd tests/qa) and run following command:
npx playwright test
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 --% "WOL-123^|WOL-124^|WOL-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 --% "WOL-123^|WOL-124^|WOL-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".
-
Link release ticket (via
tests: WOL-234). -
Set Test Execution ticket status
In progress. -
Add/update test execution ticket key in
.envfile of the project (TEST_EXEC_KEY). -
Download tested plugin
.zippackage (usually attached to release ticket) and add it to/project/<project-name>/resources/files. You may need to remove version number from the file name. -
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 (e.g. all, Critical, etc.). You should see
Test execution Jira key: WOL-234in the terminal. -
When finished test results should be exported to the specified test execution ticket in Jira.
-
Analyze failed tests (if any). Restart execution for failed tests, possibly in debug mode:
npx playwright test --grep --% "WOL-123^|WOL-124^|WOL-125" --debug -
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