- 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-foundation
and 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-utils
from/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-utils
repository should be cloned asplaywright-utils
right inside the root directory of project. -
Restart VSCode editor. This will create
playwright-utils
instance in the source control tab of VSCode editor. -
Run following command:
npm run setup:utils
-
@inpsyde/playwright-utils
should 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-utils
keep 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 name
in 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
.env
file following these steps. See also/tests/qa/.env.example
. -
Configure
playwright.config.ts
of 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.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 --% "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
.env
file of the project (TEST_EXEC_KEY
). -
Download tested plugin
.zip
package (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-234
in 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