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
Version 0.2.0 or newer
Version 0.2.0 added a test installer that will populate the tests/e2e/specs folder with test scripts for all the current core test suite. It also creates sample configuration files including all the configuration data needed to run the core tests.
- Install the e2e-environment
npm install @woocommerce/e2e-environment --save-dev
- Run the installer
npx wc-e2e install @woocommerce/e2e-core-tests
- Merge the sample configuration files:
tests/e2e/docker/woocommerce.e2e-core-tests.sh => initialize.sh
tests/e2e/config/default-woocommerce.e2e-core-tests.json => default.json
Version 0.1.X or other test runner
- 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 within tests/e2e/specs . Example code to run all the shopper tests:
const { runShopperTests } = require( '@woocommerce/e2e-core-tests' );
runShopperTests();
Retrying/Re-running tests
On a new site, the setup and activation tests prepare the site for the remainder of the tests. To retry/rerun the test suite on a site where setup/onboarding test have already run use the environment variable E2E_RETEST=1.
Test functions
The functions to access the core tests are:
Activation and setup
runSetupOnboardingTests - Run all setup and onboarding tests
runActivationTest - Merchant can activate WooCommerce
runOnboardingFlowTest - Merchant can complete onboarding flow
runTaskListTest - Merchant can complete onboarding task list
runInitialStoreSettingsTest - Merchant can complete initial settings
Merchant
runMerchantTests - Run all merchant tests
runAddShippingClassesTest - Merchant can create shipping classes and let shopper test them
runAddNewShippingZoneTest - Merchant can create shipping zones and let shopper test them
runAddSimpleProductTest - Merchant can create a simple product
runAddVariableProductTest - Merchant can create a variable product
runCreateCouponTest - Merchant can create coupon
runCreateOrderTest - Merchant can create order
runMerchantOrdersCustomerPaymentPage - Merchant can visit the customer payment page
runMerchantOrderEmailsTest - Merchant can receive order emails and resend emails by Order Actions
runEditOrderTest - Merchant can edit an order in the dashboard
runOrderStatusFilterTest - Merchant can filter orders by order status
runOrderRefundTest - Merchant can refund an order
runOrderApplyCouponTest - Merchant can apply a coupon to an order
runOrderSearchingTest - Merchant can search for order via different terms
runProductEditDetailsTest - Merchant can edit an existing product
runProductSearchTest - Merchant can search for a product and view it
runProductSettingsTest - Merchant can update product settings
runTaxSettingsTest - Merchant can update tax settings
runUpdateGeneralSettingsTest - Merchant can update general settings
runMerchantOrderEmailsTest - Merchant can receive order emails and resend emails by Order Actions
runAnalyticsPageLoadsTest - Merchant can load and see all pages in Analytics
runImportProductsTest - Merchant can import products via CSV file
runInitiateWccomConnectionTest - Merchant can initiate connection to WooCommerce.com
runAdminPageLoadTests - Merchant can load pages from the WP Admin sidebar
Shopper
runShopperTests - Run all shopper tests
runCartApplyCouponsTest - Shopper can use coupons on cart
runCartPageTest - Shopper can view and update cart
runCheckoutApplyCouponsTest - Shopper can use coupons on checkout
runCheckoutPageTest - Shopper can complete checkout
runMyAccountPageTest - Shopper can access my account page
runMyAccountPayOrderTest - Shopper can pay for their order in My Account
runProductBrowseSearchSortTest - Shopper can browse, search & sort products
runSingleProductPageTest - Shopper can view single product page in many variations (simple, variable, grouped)
runVariableProductUpdateTest - Shopper can view and update variations on a variable product
runCheckoutCreateAccountTest - Shopper can create an account during checkout
runCheckoutLoginAccountTest - Shopper can login to an account during checkout
runMyAccountCreateAccountTest - Shopper can create an account via my account page
runCartCalculateShippingTest - Shopper can calculate shipping in the cart
runCartRedirectionTest - Shopper is redirected to the cart page after adding to cart
runOrderEmailReceivingTest - Shopper can receive an email for his order
REST API
runApiTests - Run all API tests
runExternalProductAPITest - Can create, read, and delete an external product
runGroupedProductAPITest - Can create, read, and delete a grouped product
runVariableProductAPITest - Can create, read, and delete a variable product and its variations
runCouponApiTest - Can create, read, and delete a coupon
runOrderApiTest - Can create, read, and delete an order
Contributing a new test
- In your branch create a new
example-test-name.test.js under the appropriate folder in the specs directory.
- 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;
const runExampleTestName = require( './grouping/example-test-name.test' );
module.exports = {
runExampleTestName,
}