e1a3be4945 | ||
---|---|---|
.. | ||
specs | ||
CHANGELOG.md | ||
README.md | ||
index.js | ||
package.json |
README.md
WooCommerce Core End to End Test Suite
This package contains the automated end-to-end tests for WooCommerce.
Table of contents
Pre-requisites
Setting up the test environment
Follow E2E setup instructions.
Setting up core tests
- Create the folder
tests/e2e/specs
in your repository if it does not exist. - To add a core test to your test suite, create a new
.test.js
file withintests/e2e/specs
. Example code to run all the shopper tests:
const { runShopperTests } = require( '@woocommerce/e2e-core-tests' );
runShopperTests();
Test functions
The functions to access the core tests are:
Activation and setup
runSetupOnboardingTests
- Run all setup and onboarding testsrunActivationTest
- Merchant can activate WooCommercerunOnboardingFlowTest
- Merchant can complete onboarding flowrunTaskListTest
- Merchant can complete onboarding task listrunInitialStoreSettingsTest
- Merchant can complete initial settings
Merchant
runMerchantTests
- Run all merchant testsrunAddNewShippingZoneTest
- Merchant can create shipping zones and let shopper test themrunAddSimpleProductTest
- Merchant can create a simple productrunAddVariableProductTest
- Merchant can create a variable productrunCreateCouponTest
- Merchant can create couponrunCreateOrderTest
- Merchant can create orderrunMerchantOrdersCustomerPaymentPage
- Merchant can visit the customer payment pagerunMerchantOrderEmailsTest
- Merchant can receive order emails and resend emails by Order ActionsrunOrderStatusFilterTest
- Merchant can filter orders by order statusrunOrderRefundTest
- Merchant can refund an orderrunOrderApplyCouponTest
- Merchant can apply a coupon to an orderrunOrderSearchingTest
- Merchant can search for order via different termsrunProductEditDetailsTest
- Merchant can edit an existing productrunProductSearchTest
- Merchant can search for a product and view itrunProductSettingsTest
- Merchant can update product settingsrunTaxSettingsTest
- Merchant can update tax settingsrunUpdateGeneralSettingsTest
- Merchant can update general settingsrunMerchantOrderEmailsTest
- Merchant can receive order emails and resend emails by Order ActionsrunAnalyticsPageLoadsTest
- Merchant can load and see all pages in Analytics
Shopper
runShopperTests
- Run all shopper testsrunCartApplyCouponsTest
- Shopper can use coupons on cartrunCartPageTest
- Shopper can view and update cartrunCheckoutApplyCouponsTest
- Shopper can use coupons on checkoutrunCheckoutPageTest
- Shopper can complete checkoutrunMyAccountPageTest
- Shopper can access my account pagerunMyAccountPayOrderTest
- Shopper can pay for their order in My AccountrunProductBrowseSearchSortTest
- Shopper can browse, search & sort productsrunSingleProductPageTest
- Shopper can view single product page in many variations (simple, variable, grouped)runVariableProductUpdateTest
- Shopper can view and update variations on a variable product
REST API
runApiTests
- Run all API testsrunExternalProductAPITest
- Can create, read, and delete an external productrunGroupedProductAPITest
- Can create, read, and delete a grouped productrunVariableProductAPITest
- Can create, read, and delete a variable product and its variationsrunCouponApiTest
- Can create, read, and delete a coupon
Contributing a new test
- In your branch create a new
example-test-name.test.js
under thetests/e2e/core-tests/specs
folder. - Jest does not allow its global functions to be accessed outside the jest environment. To allow the test code to be published in a package import any jest global functions used in your test
const {
it,
describe,
beforeAll,
} = require( '@jest/globals' );
- Wrap your test in a function and export it
const runExampleTestName = () => {
describe('Example test', () => {
beforeAll(async () => {
// ...
});
it('do some example action', async () => {
// ...
});
// ...
});
});
module.exports = runExampleTestName;
- Add your test to
tests/e2e/core-tests/specs/index.js
const runExampleTestName = require( './grouping/example-test-name.test' );
// ...
module.exports = {
// ...
runExampleTestName,
}