Update CI to use wp-env for api, e2e and performance tests (#34311)
* Renamed e2e to e2e-legacy * Moved e2e folder to tests/e2e * Updated gitignore * Updted init script to work with wp-env * Updated readme * Updated commands to match new test structure * Updated workflow to work with new test structure * Added changelog * turned off alternate wp cron in test * Fixed path to playwright config * Renamed e2e to e2e-pw * Renamed e2e-legacy to e2e * Updated e2e-pw path * Fixed workflow * Fixed csv test * Updated .gitignore * Removed puppeteer specific step
This commit is contained in:
parent
7021d442bd
commit
40dbc1f924
|
@ -7,9 +7,6 @@ concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
env:
|
|
||||||
E2E_PLAYWRIGHT: true
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
e2e-tests-run:
|
e2e-tests-run:
|
||||||
name: Runs E2E tests.
|
name: Runs E2E tests.
|
||||||
|
@ -31,50 +28,24 @@ jobs:
|
||||||
|
|
||||||
- name: Load docker images and start containers.
|
- name: Load docker images and start containers.
|
||||||
working-directory: plugins/woocommerce
|
working-directory: plugins/woocommerce
|
||||||
run: pnpm exec wc-e2e docker:up
|
run: pnpm env:test --filter=woocommerce
|
||||||
|
|
||||||
- name: Run Puppeteer E2E tests.
|
|
||||||
if: fromJSON(env.E2E_PLAYWRIGHT) != true
|
|
||||||
id: run-puppeteer-e2e-tests
|
|
||||||
working-directory: plugins/woocommerce
|
|
||||||
env:
|
|
||||||
WC_E2E_SCREENSHOTS: 1
|
|
||||||
E2E_SLACK_TOKEN: ${{ secrets.E2E_SLACK_TOKEN }}
|
|
||||||
E2E_SLACK_CHANNEL: ${{ secrets.E2E_SLACK_CHANNEL }}
|
|
||||||
run: pnpm exec wc-e2e test:e2e
|
|
||||||
|
|
||||||
- name: Archive Puppeteer E2E test results
|
|
||||||
if: |
|
|
||||||
always() &&
|
|
||||||
fromJSON(env.E2E_PLAYWRIGHT) != true &&
|
|
||||||
(
|
|
||||||
steps.run-puppeteer-e2e-tests.conclusion != 'cancelled' ||
|
|
||||||
steps.run-puppeteer-e2e-tests.conclusion != 'skipped'
|
|
||||||
)
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: pptr-e2e-test-results
|
|
||||||
path: plugins/woocommerce/tests/e2e/test-results.json
|
|
||||||
if-no-files-found: ignore
|
|
||||||
retention-days: 5
|
|
||||||
|
|
||||||
- name: Download and install Chromium browser.
|
- name: Download and install Chromium browser.
|
||||||
if: fromJSON(env.E2E_PLAYWRIGHT)
|
|
||||||
working-directory: plugins/woocommerce
|
working-directory: plugins/woocommerce
|
||||||
run: pnpx playwright install chromium
|
run: pnpx playwright install chromium
|
||||||
|
|
||||||
- name: Run Playwright E2E tests.
|
- name: Run Playwright E2E tests.
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
id: run_playwright_e2e_tests
|
id: run_playwright_e2e_tests
|
||||||
if: fromJSON(env.E2E_PLAYWRIGHT)
|
env:
|
||||||
|
USE_WP_ENV: 1
|
||||||
working-directory: plugins/woocommerce
|
working-directory: plugins/woocommerce
|
||||||
run: pnpx playwright test --config=e2e/playwright.config.js
|
run: pnpx playwright test --config=tests/e2e-pw/playwright.config.js
|
||||||
|
|
||||||
- name: Generate Playwright E2E Test report.
|
- name: Generate Playwright E2E Test report.
|
||||||
id: generate_e2e_report
|
id: generate_e2e_report
|
||||||
if: |
|
if: |
|
||||||
always() &&
|
always() &&
|
||||||
fromJSON(env.E2E_PLAYWRIGHT) &&
|
|
||||||
(
|
(
|
||||||
steps.run_playwright_e2e_tests.conclusion != 'cancelled' ||
|
steps.run_playwright_e2e_tests.conclusion != 'cancelled' ||
|
||||||
steps.run_playwright_e2e_tests.conclusion != 'skipped'
|
steps.run_playwright_e2e_tests.conclusion != 'skipped'
|
||||||
|
@ -85,7 +56,6 @@ jobs:
|
||||||
- name: Archive Playwright E2E test report
|
- name: Archive Playwright E2E test report
|
||||||
if: |
|
if: |
|
||||||
always() &&
|
always() &&
|
||||||
fromJSON(env.E2E_PLAYWRIGHT) &&
|
|
||||||
steps.generate_e2e_report.conclusion == 'success'
|
steps.generate_e2e_report.conclusion == 'success'
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
|
@ -96,19 +66,6 @@ jobs:
|
||||||
if-no-files-found: ignore
|
if-no-files-found: ignore
|
||||||
retention-days: 5
|
retention-days: 5
|
||||||
|
|
||||||
- name: Archive Puppeteer E2E test screenshots
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
if: |
|
|
||||||
always() &&
|
|
||||||
(
|
|
||||||
fromJSON(env.E2E_PLAYWRIGHT) != true
|
|
||||||
)
|
|
||||||
with:
|
|
||||||
name: E2E Screenshots
|
|
||||||
path: plugins/woocommerce/tests/e2e/screenshots
|
|
||||||
if-no-files-found: ignore
|
|
||||||
retention-days: 5
|
|
||||||
|
|
||||||
api-tests-run:
|
api-tests-run:
|
||||||
name: Runs API tests.
|
name: Runs API tests.
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
|
@ -131,7 +88,7 @@ jobs:
|
||||||
|
|
||||||
- name: Load docker images and start containers.
|
- name: Load docker images and start containers.
|
||||||
working-directory: plugins/woocommerce
|
working-directory: plugins/woocommerce
|
||||||
run: pnpm exec wc-e2e docker:up
|
run: pnpm env:test --filter=woocommerce
|
||||||
|
|
||||||
- name: Run tests command.
|
- name: Run tests command.
|
||||||
working-directory: plugins/woocommerce
|
working-directory: plugins/woocommerce
|
||||||
|
@ -169,14 +126,11 @@ jobs:
|
||||||
- name: Install and Build
|
- name: Install and Build
|
||||||
uses: ./.github/actions/install-build
|
uses: ./.github/actions/install-build
|
||||||
|
|
||||||
- name: Workaround to use initialization file with prepopulated data.
|
|
||||||
working-directory: plugins/woocommerce/tests/e2e/docker
|
|
||||||
run: |
|
|
||||||
cp init-sample-products.sh initialize.sh
|
|
||||||
|
|
||||||
- name: Load docker images and start containers.
|
- name: Load docker images and start containers.
|
||||||
working-directory: plugins/woocommerce
|
working-directory: plugins/woocommerce
|
||||||
run: pnpm exec wc-e2e docker:up
|
run: |
|
||||||
|
pnpm env:dev --filter=woocommerce
|
||||||
|
pnpm env:performance-init --filter=woocommerce
|
||||||
|
|
||||||
- name: Install k6
|
- name: Install k6
|
||||||
run: |
|
run: |
|
||||||
|
@ -217,19 +171,11 @@ jobs:
|
||||||
path: artifacts/api
|
path: artifacts/api
|
||||||
|
|
||||||
- name: Download Playwright E2E test report artifact
|
- name: Download Playwright E2E test report artifact
|
||||||
if: fromJSON(env.E2E_PLAYWRIGHT)
|
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: e2e-test-report---pr-${{ github.event.number }}
|
name: e2e-test-report---pr-${{ github.event.number }}
|
||||||
path: artifacts/e2e
|
path: artifacts/e2e
|
||||||
|
|
||||||
- name: Download Puppeteer E2E test report artifact
|
|
||||||
if: fromJSON(env.E2E_PLAYWRIGHT) != true
|
|
||||||
uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
name: pptr-e2e-test-results
|
|
||||||
path: artifacts/e2e
|
|
||||||
|
|
||||||
- name: Prepare test summary
|
- name: Prepare test summary
|
||||||
id: prepare-test-summary
|
id: prepare-test-summary
|
||||||
uses: actions/github-script@v6
|
uses: actions/github-script@v6
|
||||||
|
@ -278,22 +224,7 @@ jobs:
|
||||||
RUN_ID: ${{ github.run_id }}
|
RUN_ID: ${{ github.run_id }}
|
||||||
COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
|
||||||
steps:
|
steps:
|
||||||
- name: Publish API test report
|
|
||||||
if: fromJSON(env.E2E_PLAYWRIGHT) != true
|
|
||||||
env:
|
|
||||||
ARTIFACT_NAME: api-test-report---pr-${{ github.event.number }}
|
|
||||||
run: |
|
|
||||||
gh workflow run publish-report.yml \
|
|
||||||
-f test_workflow=pr \
|
|
||||||
-f test_type=api \
|
|
||||||
-f run_id=$RUN_ID \
|
|
||||||
-f artifact_name=$ARTIFACT_NAME \
|
|
||||||
-f pr_number=$PR_NUMBER \
|
|
||||||
-f commit_sha=$COMMIT_SHA \
|
|
||||||
--repo woocommerce/woocommerce-test-reports
|
|
||||||
|
|
||||||
- name: Publish test reports
|
- name: Publish test reports
|
||||||
if: fromJSON(env.E2E_PLAYWRIGHT)
|
|
||||||
env:
|
env:
|
||||||
API_ARTIFACT: api-test-report---pr-${{ github.event.number }}
|
API_ARTIFACT: api-test-report---pr-${{ github.event.number }}
|
||||||
E2E_ARTIFACT: e2e-test-report---pr-${{ github.event.number }}
|
E2E_ARTIFACT: e2e-test-report---pr-${{ github.event.number }}
|
||||||
|
|
|
@ -89,10 +89,10 @@ allure-results
|
||||||
changes.json
|
changes.json
|
||||||
|
|
||||||
# Playwright output & working files
|
# Playwright output & working files
|
||||||
/plugins/woocommerce/e2e/output
|
/plugins/woocommerce/tests/e2e-pw/output
|
||||||
/plugins/woocommerce/e2e/report
|
/plugins/woocommerce/tests/e2e-pw/report
|
||||||
/plugins/woocommerce/e2e/storage
|
/plugins/woocommerce/tests/e2e-pw/storage
|
||||||
/plugins/woocommerce/e2e/test-results.json
|
/plugins/woocommerce/tests/e2e-pw/test-results.json
|
||||||
|
|
||||||
# Turborepo
|
# Turborepo
|
||||||
.turbo
|
.turbo
|
||||||
|
|
|
@ -28,13 +28,13 @@ module.exports = {
|
||||||
},
|
},
|
||||||
overrides: [
|
overrides: [
|
||||||
{
|
{
|
||||||
files: ["e2e/tests/**/*.spec.js", "e2e/*.js"],
|
files: ["tests/e2e-pw/**/*.spec.js", "tests/e2e/**/*.spec.js"],
|
||||||
rules: {
|
rules: {
|
||||||
"jest/no-test-callback": "off",
|
"jest/no-test-callback": "off",
|
||||||
"@wordpress/no-unsafe-wp-apis": "off",
|
"@wordpress/no-unsafe-wp-apis": "off",
|
||||||
"import/no-extraneous-dependencies": "off",
|
"import/no-extraneous-dependencies": "off",
|
||||||
"import/no-unresolved": "off"
|
"import/no-unresolved": "off"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
|
@ -18,8 +18,6 @@ tests/cli/vendor
|
||||||
/tests/bin/tmp
|
/tests/bin/tmp
|
||||||
/tests/e2e/config/local-*.json
|
/tests/e2e/config/local-*.json
|
||||||
/tests/e2e/config/local.json
|
/tests/e2e/config/local.json
|
||||||
/tests/e2e/config/default.json
|
|
||||||
/tests/e2e/docker
|
|
||||||
/tests/e2e/screenshots
|
/tests/e2e/screenshots
|
||||||
/tests/e2e/plugins
|
/tests/e2e/plugins
|
||||||
.phpunit.result.cache
|
.phpunit.result.cache
|
||||||
|
|
|
@ -11,7 +11,10 @@
|
||||||
"env": {
|
"env": {
|
||||||
"development": {},
|
"development": {},
|
||||||
"tests": {
|
"tests": {
|
||||||
"port": 8086
|
"port": 8086,
|
||||||
|
"config": {
|
||||||
|
"ALTERNATE_WP_CRON": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
Significance: patch
|
||||||
|
Type: dev
|
||||||
|
|
||||||
|
Updating e2e, api and performance tests against a wp-env environment
|
|
@ -33,8 +33,8 @@
|
||||||
"docker:ssh": "pnpm exec wc-e2e docker:ssh",
|
"docker:ssh": "pnpm exec wc-e2e docker:ssh",
|
||||||
"docker:up": "pnpm exec wc-e2e docker:up",
|
"docker:up": "pnpm exec wc-e2e docker:up",
|
||||||
"env:dev": "pnpm wp-env start",
|
"env:dev": "pnpm wp-env start",
|
||||||
"env:init-test": "./e2e/bin/env-setup.sh",
|
"env:test": "pnpm run env:dev && ./tests/e2e-pw/bin/test-env-setup.sh",
|
||||||
"env:test": "pnpm run env:dev && ./e2e/bin/test-env-setup.sh",
|
"env:performance-init": "./tests/performance/bin/init-sample-products.sh",
|
||||||
"env:down": "pnpm wp-env stop",
|
"env:down": "pnpm wp-env stop",
|
||||||
"env:destroy": "pnpm wp-env destroy",
|
"env:destroy": "pnpm wp-env destroy",
|
||||||
"test:api": "API_TEST_REPORT_DIR=\"$PWD/tests/api\" pnpm exec wc-api-tests test api",
|
"test:api": "API_TEST_REPORT_DIR=\"$PWD/tests/api\" pnpm exec wc-api-tests test api",
|
||||||
|
|
|
@ -44,9 +44,9 @@ To run the test again, re-create the environment to start with a fresh state:
|
||||||
Other ways of running tests:
|
Other ways of running tests:
|
||||||
|
|
||||||
- `pnpm env:test --filter=woocommerce` (headless)
|
- `pnpm env:test --filter=woocommerce` (headless)
|
||||||
- `cd plugin/woocommerce && USE_WP_ENV=1 pnpm playwright test --config=e2e/playwright.config.js --headed` (headed)
|
- `cd plugin/woocommerce && USE_WP_ENV=1 pnpm playwright test --config=tests/e2e-pw/playwright.config.js --headed` (headed)
|
||||||
- `cd plugins/woocommerce && USE_WP_ENV=1 pnpm playwright test --config=e2e/playwright.config.js --debug` (debug)
|
- `cd plugins/woocommerce && USE_WP_ENV=1 pnpm playwright test --config=tests/e2e-pw/playwright.config.js --debug` (debug)
|
||||||
- `cd plugins/woocommerce && USE_WP_ENV=1 pnpm playwright test --config=e2e/playwright.config.js ./e2e/tests/activate-and-setup/basic-setup.spec.js` (running a single test)
|
- `cd plugins/woocommerce && USE_WP_ENV=1 pnpm playwright test --config=tests/e2e-pw/playwright.config.js ./tests/e2e-pw/tests/activate-and-setup/basic-setup.spec.js` (running a single test)
|
||||||
|
|
||||||
To see all options, run `cd plugins/woocommerce && pnpm playwright test --help`
|
To see all options, run `cd plugins/woocommerce && pnpm playwright test --help`
|
||||||
|
|
||||||
|
@ -85,11 +85,11 @@ The test environment uses the following test variables:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you need to modify the port for your local test environment (eg. port is already in use) or use, edit [playwright.config.js](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/e2e/playwright.config.js). Depending on what environment tool you are using, you will need to also edit the respective `.json` file.
|
If you need to modify the port for your local test environment (eg. port is already in use) or use, edit [playwright.config.js](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/tests/e2e/playwright.config.js). Depending on what environment tool you are using, you will need to also edit the respective `.json` file.
|
||||||
|
|
||||||
**Modiify the port wp-env**
|
**Modiify the port wp-env**
|
||||||
|
|
||||||
Edit [.wp-env.json](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/.wp-env.json) and [playwright.config.js](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/e2e/playwright.config.js).
|
Edit [.wp-env.json](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/.wp-env.json) and [playwright.config.js](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/tests/e2e/playwright.config.js).
|
||||||
|
|
||||||
**Modiify port for e2e-environment**
|
**Modiify port for e2e-environment**
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
{
|
||||||
|
"cookies": [
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wordpress_dc5025de8b60c0a511df7c07d81ead97",
|
||||||
|
"value": "admin%7C1660405922%7CjsNIRwmbjFh7KIGlSHy50rSs6X0L0zISppmBqgh0u0u%7C8ac4ff905331544a3cbcf0c58840ebfc3f492d4511dd17f48dbed18f5662a2c6",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/wp-content/plugins",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": true,
|
||||||
|
"secure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wordpress_dc5025de8b60c0a511df7c07d81ead97",
|
||||||
|
"value": "admin%7C1660405922%7CjsNIRwmbjFh7KIGlSHy50rSs6X0L0zISppmBqgh0u0u%7C8ac4ff905331544a3cbcf0c58840ebfc3f492d4511dd17f48dbed18f5662a2c6",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/wp-admin",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": true,
|
||||||
|
"secure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wordpress_test_cookie",
|
||||||
|
"value": "WP%20Cookie%20check",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": false,
|
||||||
|
"secure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wordpress_logged_in_dc5025de8b60c0a511df7c07d81ead97",
|
||||||
|
"value": "admin%7C1660405922%7CjsNIRwmbjFh7KIGlSHy50rSs6X0L0zISppmBqgh0u0u%7C6de27e0d8393de7715c07e144424d90733d53e65b8665c8a7db1ad94798c369c",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": true,
|
||||||
|
"secure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "tk_ai",
|
||||||
|
"value": "woo%3AT9QFbJmpuSGWcjApaONaBtSB",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": false,
|
||||||
|
"secure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wp-settings-time-1",
|
||||||
|
"value": "1660233126",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/",
|
||||||
|
"expires": 1691769126.937059,
|
||||||
|
"httpOnly": false,
|
||||||
|
"secure": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"origins": []
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"cookies": [
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wordpress_dc5025de8b60c0a511df7c07d81ead97",
|
||||||
|
"value": "customer%7C1660405929%7CL0OCLRBBMubq8iKqOeQU1NqOzTWFd7ppECd1n100GKG%7Cccb6b6b9e1190e94ef751360fded6ec026c89350f9f4695e9bf900ca09d72a84",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/wp-content/plugins",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": true,
|
||||||
|
"secure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wordpress_dc5025de8b60c0a511df7c07d81ead97",
|
||||||
|
"value": "customer%7C1660405929%7CL0OCLRBBMubq8iKqOeQU1NqOzTWFd7ppECd1n100GKG%7Cccb6b6b9e1190e94ef751360fded6ec026c89350f9f4695e9bf900ca09d72a84",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/wp-admin",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": true,
|
||||||
|
"secure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wordpress_test_cookie",
|
||||||
|
"value": "WP%20Cookie%20check",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": false,
|
||||||
|
"secure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sameSite": "Lax",
|
||||||
|
"name": "wordpress_logged_in_dc5025de8b60c0a511df7c07d81ead97",
|
||||||
|
"value": "customer%7C1660405929%7CL0OCLRBBMubq8iKqOeQU1NqOzTWFd7ppECd1n100GKG%7C869a28fa8ef17799b6d097d84c8155c7d0dd18cd9967f7a18e3f49f41dd71226",
|
||||||
|
"domain": "localhost",
|
||||||
|
"path": "/",
|
||||||
|
"expires": -1,
|
||||||
|
"httpOnly": true,
|
||||||
|
"secure": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"origins": []
|
||||||
|
}
|
|
@ -1,9 +1,9 @@
|
||||||
const { test, expect } = require( '@playwright/test' );
|
const { test, expect } = require( '@playwright/test' );
|
||||||
const wcApi = require( '@woocommerce/woocommerce-rest-api' ).default;
|
const wcApi = require( '@woocommerce/woocommerce-rest-api' ).default;
|
||||||
const path = require( 'path' );
|
const path = require( 'path' );
|
||||||
const filePath = path.resolve( 'e2e/test-data/sample_products.csv' );
|
const filePath = path.resolve( 'tests/e2e-pw/test-data/sample_products.csv' );
|
||||||
const filePathOverride = path.resolve(
|
const filePathOverride = path.resolve(
|
||||||
'e2e/test-data/sample_products_override.csv'
|
'tests/e2e-pw/test-data/sample_products_override.csv'
|
||||||
);
|
);
|
||||||
|
|
||||||
const productIds = [];
|
const productIds = [];
|
|
@ -1,6 +1,7 @@
|
||||||
const path = require( 'path' );
|
const path = require( 'path' );
|
||||||
const { useE2EJestConfig, getAppRoot } = require( '@woocommerce/e2e-environment' );
|
const { useE2EJestConfig } = require( '@woocommerce/e2e-environment' );
|
||||||
|
|
||||||
|
// eslint-disable-next-line
|
||||||
const jestConfig = useE2EJestConfig( {
|
const jestConfig = useE2EJestConfig( {
|
||||||
roots: [ path.resolve( __dirname, '../specs' ) ],
|
roots: [ path.resolve( __dirname, '../specs' ) ],
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -1,47 +1,58 @@
|
||||||
|
/* global page */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External dependencies
|
||||||
|
*/
|
||||||
import {
|
import {
|
||||||
clearLocalStorage,
|
clearLocalStorage,
|
||||||
setBrowserViewport,
|
setBrowserViewport,
|
||||||
withRestApi,
|
withRestApi,
|
||||||
WP_ADMIN_LOGIN
|
WP_ADMIN_LOGIN,
|
||||||
} from '@woocommerce/e2e-utils';
|
} from '@woocommerce/e2e-utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal dependencies
|
||||||
|
*/
|
||||||
const config = require( 'config' );
|
const config = require( 'config' );
|
||||||
const { HTTPClientFactory } = require( '@woocommerce/api' );
|
const { HTTPClientFactory } = require( '@woocommerce/api' );
|
||||||
const { addConsoleSuppression, updateReadyPageStatus, setupJestRetries } = require( '@woocommerce/e2e-environment' );
|
const {
|
||||||
|
addConsoleSuppression,
|
||||||
|
updateReadyPageStatus,
|
||||||
|
setupJestRetries,
|
||||||
|
} = require( '@woocommerce/e2e-environment' );
|
||||||
const { DEFAULT_TIMEOUT_OVERRIDE } = process.env;
|
const { DEFAULT_TIMEOUT_OVERRIDE } = process.env;
|
||||||
|
|
||||||
// @todo: remove this once https://github.com/woocommerce/woocommerce-admin/issues/6992 has been addressed
|
// @todo: remove this once https://github.com/woocommerce/woocommerce-admin/issues/6992 has been addressed
|
||||||
addConsoleSuppression('woocommerce_shared_settings', false);
|
addConsoleSuppression( 'woocommerce_shared_settings', false );
|
||||||
// @todo: remove this once https://github.com/woocommerce/woocommerce/issues/31867 has been addressed
|
// @todo: remove this once https://github.com/woocommerce/woocommerce/issues/31867 has been addressed
|
||||||
addConsoleSuppression('wp.compose.withState', false);
|
addConsoleSuppression( 'wp.compose.withState', false );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uses the WordPress API to delete all existing posts
|
* Uses the WordPress API to delete all existing posts
|
||||||
*/
|
*/
|
||||||
async function trashExistingPosts() {
|
async function trashExistingPosts() {
|
||||||
const apiUrl = config.get('url');
|
const apiUrl = config.get( 'url' );
|
||||||
const wpPostsEndpoint = '/wp/v2/posts';
|
const wpPostsEndpoint = '/wp/v2/posts';
|
||||||
const adminUsername = config.get('users.admin.username');
|
const adminUsername = config.get( 'users.admin.username' );
|
||||||
const adminPassword = config.get('users.admin.password');
|
const adminPassword = config.get( 'users.admin.password' );
|
||||||
const client = HTTPClientFactory.build(apiUrl)
|
const client = HTTPClientFactory.build( apiUrl )
|
||||||
.withBasicAuth(adminUsername, adminPassword)
|
.withBasicAuth( adminUsername, adminPassword )
|
||||||
.create();
|
.create();
|
||||||
|
|
||||||
// List all existing posts
|
// List all existing posts
|
||||||
const response = await client.get(wpPostsEndpoint);
|
const response = await client.get( wpPostsEndpoint );
|
||||||
const posts = response.data;
|
const posts = response.data;
|
||||||
|
|
||||||
// Delete each post
|
// Delete each post
|
||||||
for (const post of posts) {
|
for ( const post of posts ) {
|
||||||
await client.delete(`${wpPostsEndpoint}/${post.id}`);
|
await client.delete( `${ wpPostsEndpoint }/${ post.id }` );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Before every test suite run, delete all content created by the test. This ensures
|
// Before every test suite run, delete all content created by the test. This ensures
|
||||||
// other posts/comments/etc. aren't dirtying tests and tests don't depend on
|
// other posts/comments/etc. aren't dirtying tests and tests don't depend on
|
||||||
// each other's side-effects.
|
// each other's side-effects.
|
||||||
beforeAll(async () => {
|
beforeAll( async () => {
|
||||||
|
|
||||||
setupJestRetries( 2 );
|
setupJestRetries( 2 );
|
||||||
|
|
||||||
if ( DEFAULT_TIMEOUT_OVERRIDE ) {
|
if ( DEFAULT_TIMEOUT_OVERRIDE ) {
|
||||||
|
@ -51,7 +62,7 @@ beforeAll(async () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Update the ready page to prevent concurrent test runs
|
// Update the ready page to prevent concurrent test runs
|
||||||
await updateReadyPageStatus('draft');
|
await updateReadyPageStatus( 'draft' );
|
||||||
await trashExistingPosts();
|
await trashExistingPosts();
|
||||||
await withRestApi.deleteAllProducts();
|
await withRestApi.deleteAllProducts();
|
||||||
await withRestApi.deleteAllCoupons();
|
await withRestApi.deleteAllCoupons();
|
||||||
|
@ -60,25 +71,25 @@ beforeAll(async () => {
|
||||||
// Prevent an error here causing tests to fail.
|
// Prevent an error here causing tests to fail.
|
||||||
}
|
}
|
||||||
|
|
||||||
await page.goto(WP_ADMIN_LOGIN);
|
await page.goto( WP_ADMIN_LOGIN );
|
||||||
await clearLocalStorage();
|
await clearLocalStorage();
|
||||||
await setBrowserViewport( {
|
await setBrowserViewport( {
|
||||||
width: 1280,
|
width: 1280,
|
||||||
height: 800,
|
height: 800,
|
||||||
});
|
} );
|
||||||
});
|
} );
|
||||||
|
|
||||||
// Clear browser cookies and cache using DevTools.
|
// Clear browser cookies and cache using DevTools.
|
||||||
// This is to ensure that each test ends with no user logged in.
|
// This is to ensure that each test ends with no user logged in.
|
||||||
afterAll(async () => {
|
afterAll( async () => {
|
||||||
// Reset the ready page to published to allow future test runs
|
// Reset the ready page to published to allow future test runs
|
||||||
try {
|
try {
|
||||||
await updateReadyPageStatus('publish');
|
await updateReadyPageStatus( 'publish' );
|
||||||
} catch ( error ) {
|
} catch ( error ) {
|
||||||
// Prevent an error here causing tests to fail.
|
// Prevent an error here causing tests to fail.
|
||||||
}
|
}
|
||||||
|
|
||||||
const client = await page.target().createCDPSession();
|
const client = await page.target().createCDPSession();
|
||||||
await client.send('Network.clearBrowserCookies');
|
await client.send( 'Network.clearBrowserCookies' );
|
||||||
await client.send('Network.clearBrowserCache');
|
await client.send( 'Network.clearBrowserCache' );
|
||||||
});
|
} );
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runActivationTest, runInitialStoreSettingsTest, runSetupOnboardingTests } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runActivationTest,
|
||||||
|
runInitialStoreSettingsTest,
|
||||||
|
runSetupOnboardingTests,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runActivationTest();
|
runActivationTest();
|
||||||
runInitialStoreSettingsTest();
|
runInitialStoreSettingsTest();
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
const { testAdminAnalyticsOverview } = require( '@woocommerce/admin-e2e-tests' );
|
const {
|
||||||
|
testAdminAnalyticsOverview,
|
||||||
|
} = require( '@woocommerce/admin-e2e-tests' );
|
||||||
|
|
||||||
testAdminAnalyticsOverview();
|
testAdminAnalyticsOverview();
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
const { testAdminHomescreenActivityPanel } = require( '@woocommerce/admin-e2e-tests' );
|
const {
|
||||||
|
testAdminHomescreenActivityPanel,
|
||||||
|
} = require( '@woocommerce/admin-e2e-tests' );
|
||||||
|
|
||||||
testAdminHomescreenActivityPanel();
|
testAdminHomescreenActivityPanel();
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
const { testAdminHomescreenTasklist } = require( '@woocommerce/admin-e2e-tests' );
|
const {
|
||||||
|
testAdminHomescreenTasklist,
|
||||||
|
} = require( '@woocommerce/admin-e2e-tests' );
|
||||||
|
|
||||||
testAdminHomescreenTasklist();
|
testAdminHomescreenTasklist();
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
const { testAdminPurchaseSetupTask } = require( '@woocommerce/admin-e2e-tests' );
|
const {
|
||||||
|
testAdminPurchaseSetupTask,
|
||||||
|
} = require( '@woocommerce/admin-e2e-tests' );
|
||||||
|
|
||||||
testAdminPurchaseSetupTask();
|
testAdminPurchaseSetupTask();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runCartCalculateShippingTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runCartCalculateShippingTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runCartCalculateShippingTest();
|
runCartCalculateShippingTest();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runCheckoutApplyCouponsTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runCheckoutApplyCouponsTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runCheckoutApplyCouponsTest();
|
runCheckoutApplyCouponsTest();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runCheckoutCreateAccountTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runCheckoutCreateAccountTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runCheckoutCreateAccountTest();
|
runCheckoutCreateAccountTest();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runCheckoutLoginAccountTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runCheckoutLoginAccountTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runCheckoutLoginAccountTest();
|
runCheckoutLoginAccountTest();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runMyAccountCreateAccountTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runMyAccountCreateAccountTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runMyAccountCreateAccountTest();
|
runMyAccountCreateAccountTest();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runProductBrowseSearchSortTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runProductBrowseSearchSortTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runProductBrowseSearchSortTest();
|
runProductBrowseSearchSortTest();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runVariableProductUpdateTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runVariableProductUpdateTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runVariableProductUpdateTest();
|
runVariableProductUpdateTest();
|
||||||
|
|
|
@ -3,15 +3,16 @@
|
||||||
*/
|
*/
|
||||||
const { merchant, utils } = require( '@woocommerce/e2e-utils' );
|
const { merchant, utils } = require( '@woocommerce/e2e-utils' );
|
||||||
|
|
||||||
const { getRemotePluginZip, getLatestReleaseZipUrl, deleteDownloadedPluginFiles } = require( '@woocommerce/e2e-environment' );
|
const {
|
||||||
|
getRemotePluginZip,
|
||||||
|
getLatestReleaseZipUrl,
|
||||||
|
deleteDownloadedPluginFiles,
|
||||||
|
} = require( '@woocommerce/e2e-environment' );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* External dependencies
|
* External dependencies
|
||||||
*/
|
*/
|
||||||
const {
|
const { it, beforeAll } = require( '@jest/globals' );
|
||||||
it,
|
|
||||||
beforeAll,
|
|
||||||
} = require( '@jest/globals' );
|
|
||||||
|
|
||||||
const { UPDATE_WC, TEST_RELEASE } = process.env;
|
const { UPDATE_WC, TEST_RELEASE } = process.env;
|
||||||
|
|
||||||
|
@ -20,35 +21,39 @@ const pluginName = 'WooCommerce';
|
||||||
|
|
||||||
let pluginPath;
|
let pluginPath;
|
||||||
|
|
||||||
utils.describeIf( UPDATE_WC )( 'WooCommerce plugin can be uploaded and activated', () => {
|
utils.describeIf( UPDATE_WC )(
|
||||||
beforeAll( async () => {
|
'WooCommerce plugin can be uploaded and activated',
|
||||||
|
() => {
|
||||||
|
beforeAll( async () => {
|
||||||
|
if ( TEST_RELEASE ) {
|
||||||
|
zipUrl = await getLatestReleaseZipUrl(
|
||||||
|
'woocommerce/woocommerce'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
zipUrl =
|
||||||
|
'https://github.com/woocommerce/woocommerce/releases/download/nightly/woocommerce-trunk-nightly.zip';
|
||||||
|
}
|
||||||
|
|
||||||
if ( TEST_RELEASE ) {
|
pluginPath = await getRemotePluginZip( zipUrl );
|
||||||
zipUrl = await getLatestReleaseZipUrl( 'woocommerce/woocommerce' );
|
await merchant.login();
|
||||||
} else {
|
} );
|
||||||
zipUrl = 'https://github.com/woocommerce/woocommerce/releases/download/nightly/woocommerce-trunk-nightly.zip';
|
|
||||||
}
|
|
||||||
|
|
||||||
pluginPath = await getRemotePluginZip( zipUrl );
|
afterAll( async () => {
|
||||||
await merchant.login();
|
await merchant.logout();
|
||||||
});
|
await deleteDownloadedPluginFiles();
|
||||||
|
} );
|
||||||
|
|
||||||
afterAll( async () => {
|
it( 'can upload and activate the WooCommerce plugin', async () => {
|
||||||
await merchant.logout();
|
await merchant.uploadAndActivatePlugin( pluginPath, pluginName );
|
||||||
await deleteDownloadedPluginFiles();
|
} );
|
||||||
});
|
|
||||||
|
|
||||||
it( 'can upload and activate the WooCommerce plugin', async () => {
|
it( 'can run the database update', async () => {
|
||||||
await merchant.uploadAndActivatePlugin( pluginPath, pluginName );
|
// Check for, and run, the database upgrade if needed
|
||||||
});
|
await merchant.runDatabaseUpdate();
|
||||||
|
} );
|
||||||
|
|
||||||
it( 'can run the database update', async () => {
|
it( 'can remove downloaded plugin zip', async () => {
|
||||||
// Check for, and run, the database upgrade if needed
|
await deleteDownloadedPluginFiles();
|
||||||
await merchant.runDatabaseUpdate();
|
} );
|
||||||
});
|
}
|
||||||
|
);
|
||||||
it( 'can remove downloaded plugin zip', async () => {
|
|
||||||
await deleteDownloadedPluginFiles();
|
|
||||||
} );
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
|
@ -3,17 +3,19 @@
|
||||||
*/
|
*/
|
||||||
const { merchant, utils } = require( '@woocommerce/e2e-utils' );
|
const { merchant, utils } = require( '@woocommerce/e2e-utils' );
|
||||||
|
|
||||||
const { getRemotePluginZip, getLatestReleaseZipUrl, deleteDownloadedPluginFiles } = require( '@woocommerce/e2e-environment' );
|
const {
|
||||||
|
getRemotePluginZip,
|
||||||
|
getLatestReleaseZipUrl,
|
||||||
|
deleteDownloadedPluginFiles,
|
||||||
|
} = require( '@woocommerce/e2e-environment' );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* External dependencies
|
* External dependencies
|
||||||
*/
|
*/
|
||||||
const {
|
const { it, beforeAll } = require( '@jest/globals' );
|
||||||
it,
|
|
||||||
beforeAll,
|
|
||||||
} = require( '@jest/globals' );
|
|
||||||
|
|
||||||
const { GITHUB_REPOSITORY, PLUGIN_NAME, GITHUB_TOKEN, PLUGIN_REPOSITORY } = process.env;
|
const { GITHUB_REPOSITORY, PLUGIN_NAME, GITHUB_TOKEN, PLUGIN_REPOSITORY } =
|
||||||
|
process.env;
|
||||||
|
|
||||||
// allows us to upload plugins from different repositories.
|
// allows us to upload plugins from different repositories.
|
||||||
const pluginName = PLUGIN_NAME ? PLUGIN_NAME : 'WooCommerce';
|
const pluginName = PLUGIN_NAME ? PLUGIN_NAME : 'WooCommerce';
|
||||||
|
@ -37,10 +39,12 @@ utils.describeIf( repository )(
|
||||||
await merchant.logout();
|
await merchant.logout();
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
/* eslint-disable jest/expect-expect */
|
||||||
it( 'can upload and activate the provided plugin', async () => {
|
it( 'can upload and activate the provided plugin', async () => {
|
||||||
await merchant.uploadAndActivatePlugin( pluginPath, PLUGIN_NAME );
|
await merchant.uploadAndActivatePlugin( pluginPath, PLUGIN_NAME );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
/* eslint-disable jest/expect-expect */
|
||||||
it( 'can remove downloaded plugin zip', async () => {
|
it( 'can remove downloaded plugin zip', async () => {
|
||||||
await deleteDownloadedPluginFiles();
|
await deleteDownloadedPluginFiles();
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runMerchantOrdersCustomerPaymentPage } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runMerchantOrdersCustomerPaymentPage,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runMerchantOrdersCustomerPaymentPage();
|
runMerchantOrdersCustomerPaymentPage();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runUpdateGeneralSettingsTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runUpdateGeneralSettingsTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runUpdateGeneralSettingsTest();
|
runUpdateGeneralSettingsTest();
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const { runInitiateWccomConnectionTest } = require( '@woocommerce/e2e-core-tests' );
|
const {
|
||||||
|
runInitiateWccomConnectionTest,
|
||||||
|
} = require( '@woocommerce/e2e-core-tests' );
|
||||||
|
|
||||||
runInitiateWccomConnectionTest();
|
runInitiateWccomConnectionTest();
|
||||||
|
|
|
@ -54,9 +54,12 @@ Alternatively the k6 docker image can be used to execute tests.
|
||||||
|
|
||||||
Before using the tests a test environment is needed to run against.
|
Before using the tests a test environment is needed to run against.
|
||||||
|
|
||||||
In the WooCommerce e2e tests there is a Docker Initialization Script [`init-sample-products.sh`](https://github.com/woocommerce/woocommerce/tree/trunk/plugins/woocommerce/tests/e2e/docker/init-sample-products.sh) that will set up a shop with sample products imported and the shop settings (payment method, permalinks, address etc) needed for the tests already set. It is recommended using this to just see the tests in action.
|
We first spin up an environment using `wp-env` and configure that environment with the necessary plugins and data using the Initialization Script [`init-sample-products.sh`](https://github.com/woocommerce/woocommerce/tree/trunk/plugins/woocommerce/tests/performance/bin/init-sample-products.sh) that will set up a shop with sample products imported and the shop settings (payment method, permalinks, address etc) needed for the tests already set. It is recommended using this to just see the tests in action.
|
||||||
|
|
||||||
`npx wc-e2e docker:up ./tests/e2e/docker/init-sample-products.sh`
|
```sh
|
||||||
|
pnpm run env:dev --filter=woocommerce
|
||||||
|
pnpm run env:performance-init --filter=woocommerce
|
||||||
|
```
|
||||||
|
|
||||||
If using a different environment the details can be changed in `config.js`.
|
If using a different environment the details can be changed in `config.js`.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Initializing WooCommerce E2E"
|
||||||
|
|
||||||
|
wp-env run tests-cli "wp plugin activate woocommerce"
|
||||||
|
|
||||||
|
wp-env run tests-cli "wp user create customer customer@woocommercecoree2etestsuite.com --user_pass=password --role=subscriber --path=/var/www/html"
|
||||||
|
|
||||||
|
# we cannot create API keys for the API, so we using basic auth, this plugin allows that.
|
||||||
|
wp-env run tests-cli "wp plugin install https://github.com/WP-API/Basic-Auth/archive/master.zip --activate"
|
||||||
|
|
||||||
|
# update permalinks to `pretty` to make it easier for testing APIs with k6
|
||||||
|
wp-env run tests-cli "wp option update permalink_structure /%postname%/"
|
||||||
|
|
||||||
|
# install the WP Mail Logging plugin to test emails
|
||||||
|
wp-env run tests-cli "wp plugin install wp-mail-logging --activate"
|
||||||
|
|
||||||
|
# Installing and activating the WordPress Importer plugin to import sample products"
|
||||||
|
wp-env run tests-cli "wp plugin install wordpress-importer --activate"
|
||||||
|
|
||||||
|
# Adding basic WooCommerce settings"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_store_address 'Example Address Line 1'"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_store_address_2 'Example Address Line 2'"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_store_city 'Example City'"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_default_country 'US:CA'"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_store_postcode '94110'"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_currency 'USD'"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_product_type 'both'"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_allow_tracking 'no'"
|
||||||
|
wp-env run tests-cli "wp option set woocommerce_enable_checkout_login_reminder 'yes'"
|
||||||
|
wp-env run tests-cli "wp option set --format=json woocommerce_cod_settings '{\"enabled\":\"yes\"}'"
|
||||||
|
|
||||||
|
# WooCommerce shop pages
|
||||||
|
wp-env run tests-cli "wp wc --user=admin tool run install_pages"
|
||||||
|
|
||||||
|
# Importing WooCommerce sample products"
|
||||||
|
wp-env run tests-cli "wp import wp-content/plugins/woocommerce/sample-data/sample_products.xml --authors=skip"
|
||||||
|
|
||||||
|
# install Storefront
|
||||||
|
wp-env run tests-cli "wp theme install storefront --activate"
|
||||||
|
|
||||||
|
echo "Success! Your E2E Test Environment is now ready."
|
Loading…
Reference in New Issue