diff --git a/tests/e2e/core-tests/CHANGELOG.md b/tests/e2e/core-tests/CHANGELOG.md index 12363b5ad98..ccd4894ec80 100644 --- a/tests/e2e/core-tests/CHANGELOG.md +++ b/tests/e2e/core-tests/CHANGELOG.md @@ -4,6 +4,7 @@ - Merchant Order Status Filter tests - Merchant Order Refund tests - Merchant Apply Coupon tests +- Added new config variable for Simple Product price to `tests/e2e/env/config/default.json`. Defaults to 9.99 ## Fixed diff --git a/tests/e2e/core-tests/specs/merchant/wp-admin-order-apply-coupon.test.js b/tests/e2e/core-tests/specs/merchant/wp-admin-order-apply-coupon.test.js index 4319e8606cb..01635b1fc34 100644 --- a/tests/e2e/core-tests/specs/merchant/wp-admin-order-apply-coupon.test.js +++ b/tests/e2e/core-tests/specs/merchant/wp-admin-order-apply-coupon.test.js @@ -1,4 +1,4 @@ -/* eslint-disable jest/no-export */ +/* eslint-disable jest/no-export, jest/no-standalone-expect */ /** * Internal dependencies @@ -14,6 +14,8 @@ const { const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); +const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const discountedPrice = simpleProductPrice - 5.00; const couponDialogMessage = 'Enter a coupon code to apply. Discounts are applied to line totals, before taxes.'; @@ -33,6 +35,9 @@ const runOrderApplyCouponTest = () => { // We need to remove any listeners on the `dialog` event otherwise we can't catch the dialog below page.removeAllListeners('dialog'), ]); + + // Make sure the simple product price is greater than the coupon amount + await expect(Number(simpleProductPrice)).toBeGreaterThan(5.00); } ); it('can apply a coupon', async () => { @@ -54,7 +59,7 @@ const runOrderApplyCouponTest = () => { // Check that the coupon has been applied await expect(page).toMatchElement('.wc-order-item-discount', { text: '5.00' }); - await expect(page).toMatchElement('.line_cost > .view > .woocommerce-Price-amount', { text: '4.99' }); + await expect(page).toMatchElement('.line_cost > .view > .woocommerce-Price-amount', { text: discountedPrice }); }); it('can remove a coupon', async () => { @@ -71,10 +76,10 @@ const runOrderApplyCouponTest = () => { // Verify the coupon pricing has been removed await expect(page).not.toMatchElement('.wc_coupon_list li.code.editable', { text: couponCode }); await expect(page).not.toMatchElement('.wc-order-item-discount', { text: '5.00' }); - await expect(page).not.toMatchElement('.line-cost .view .woocommerce-Price-amount', { text: '4.99' }); + await expect(page).not.toMatchElement('.line-cost .view .woocommerce-Price-amount', { text: discountedPrice }); // Verify the original price is the order total - await expect(page).toMatchElement('.line_cost > .view > .woocommerce-Price-amount', { text: '9.99' }); + await expect(page).toMatchElement('.line_cost > .view > .woocommerce-Price-amount', { text: simpleProductPrice }); }); }); diff --git a/tests/e2e/core-tests/specs/merchant/wp-admin-order-refund.test.js b/tests/e2e/core-tests/specs/merchant/wp-admin-order-refund.test.js index 749d486a764..2936c280ab8 100644 --- a/tests/e2e/core-tests/specs/merchant/wp-admin-order-refund.test.js +++ b/tests/e2e/core-tests/specs/merchant/wp-admin-order-refund.test.js @@ -15,6 +15,7 @@ const { const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); +const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; let orderId; let currencySymbol; @@ -49,9 +50,9 @@ const runRefundOrderTest = () => { await expect(page).toFill('#refund_reason', 'No longer wanted'); await Promise.all([ - verifyValueOfInputField('.refund_line_total', '9.99'), - verifyValueOfInputField('#refund_amount', '9.99'), - expect(page).toMatchElement('.do-manual-refund', { text: `Refund ${currencySymbol}9.99 manually` }), + verifyValueOfInputField('.refund_line_total', simpleProductPrice), + verifyValueOfInputField('#refund_amount', simpleProductPrice), + expect(page).toMatchElement('.do-manual-refund', { text: `Refund ${currencySymbol + simpleProductPrice} manually` }), ]); await expect(page).toClick('.do-manual-refund'); @@ -61,11 +62,11 @@ const runRefundOrderTest = () => { await Promise.all([ // Verify the product line item shows the refunded quantity and amount expect(page).toMatchElement('.quantity .refunded', { text: '-1' }), - expect(page).toMatchElement('.line_cost .refunded', { text: `-${currencySymbol}9.99` }), + expect(page).toMatchElement('.line_cost .refunded', { text: `-${currencySymbol + simpleProductPrice}` }), // Verify the refund shows in the list with the amount expect(page).toMatchElement('.refund .description', { text: 'No longer wanted' }), - expect(page).toMatchElement('.refund > .line_cost', { text: `-${currencySymbol}9.99` }), + expect(page).toMatchElement('.refund > .line_cost', { text: `-${currencySymbol + simpleProductPrice}` }), // Verify system note was added expect(page).toMatchElement('.system-note', { text: 'Order status changed from Completed to Refunded.' }), @@ -86,11 +87,11 @@ const runRefundOrderTest = () => { await Promise.all([ // Verify the product line item shows the refunded quantity and amount expect(page).not.toMatchElement('.quantity .refunded', { text: '-1' }), - expect(page).not.toMatchElement('.line_cost .refunded', { text: `-${currencySymbol}9.99` }), + expect(page).not.toMatchElement('.line_cost .refunded', { text: `-${currencySymbol + simpleProductPrice}` }), // Verify the refund shows in the list with the amount expect(page).not.toMatchElement('.refund .description', { text: 'No longer wanted' }), - expect(page).not.toMatchElement('.refund > .line_cost', { text: `-${currencySymbol}9.99` }), + expect(page).not.toMatchElement('.refund > .line_cost', { text: `-${currencySymbol + simpleProductPrice}` }), ]); }); diff --git a/tests/e2e/core-tests/specs/merchant/wp-admin-product-new.test.js b/tests/e2e/core-tests/specs/merchant/wp-admin-product-new.test.js index dca3fc8129a..cdadd2458c4 100644 --- a/tests/e2e/core-tests/specs/merchant/wp-admin-product-new.test.js +++ b/tests/e2e/core-tests/specs/merchant/wp-admin-product-new.test.js @@ -19,6 +19,7 @@ const { const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); +const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; const verifyPublishAndTrash = async () => { // Wait for auto save @@ -57,7 +58,7 @@ const runAddSimpleProductTest = () => { await expect(page).toFill('#title', simpleProductName); await expect(page).toClick('#_virtual'); await clickTab('General'); - await expect(page).toFill('#_regular_price', '9.99'); + await expect(page).toFill('#_regular_price', simpleProductPrice); // Publish product, verify that it was published. Trash product, verify that it was trashed. await verifyPublishAndTrash( diff --git a/tests/e2e/core-tests/specs/shopper/front-end-cart.test.js b/tests/e2e/core-tests/specs/shopper/front-end-cart.test.js index 97a824f5b78..2497d0a40f7 100644 --- a/tests/e2e/core-tests/specs/shopper/front-end-cart.test.js +++ b/tests/e2e/core-tests/specs/shopper/front-end-cart.test.js @@ -18,6 +18,11 @@ const { beforeAll, } = require( '@jest/globals' ); +const config = require( 'config' ); +const simpleProductName = config.get( 'products.simple.name' ); +const singleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const twoProductPrice = singleProductPrice * 2; + const runCartPageTest = () => { describe('Cart page', () => { beforeAll(async () => { @@ -33,32 +38,32 @@ const runCartPageTest = () => { it('should add the product to the cart when "Add to cart" is clicked', async () => { await shopper.goToShop(); - await shopper.addToCartFromShopPage('Simple product'); + await shopper.addToCartFromShopPage(simpleProductName); await shopper.goToCart(); - await shopper.productIsInCart('Simple product'); + await shopper.productIsInCart(simpleProductName); }); it('should increase item qty when "Add to cart" of the same product is clicked', async () => { await shopper.goToShop(); - await shopper.addToCartFromShopPage('Simple product'); + await shopper.addToCartFromShopPage(simpleProductName); await shopper.goToCart(); - await shopper.productIsInCart('Simple product', 2); + await shopper.productIsInCart(simpleProductName, 2); }); it('should update qty when updated via qty input', async () => { await shopper.goToCart(); - await shopper.setCartQuantity('Simple product', 4); + await shopper.setCartQuantity(simpleProductName, 4); await expect(page).toClick('button', {text: 'Update cart'}); await uiUnblocked(); - await shopper.productIsInCart('Simple product', 4); + await shopper.productIsInCart(simpleProductName, 4); }); it('should remove the item from the cart when remove is clicked', async () => { await shopper.goToCart(); - await shopper.removeFromCart('Simple product'); + await shopper.removeFromCart(simpleProductName); await uiUnblocked(); await expect(page).toMatchElement('.cart-empty', {text: 'Your cart is currently empty.'}); @@ -66,17 +71,17 @@ const runCartPageTest = () => { it('should update subtotal in cart totals when adding product to the cart', async () => { await shopper.goToShop(); - await shopper.addToCartFromShopPage('Simple product'); + await shopper.addToCartFromShopPage(simpleProductName); await shopper.goToCart(); - await shopper.productIsInCart('Simple product', 1); - await expect(page).toMatchElement('.cart-subtotal .amount', {text: '$9.99'}); + await shopper.productIsInCart(simpleProductName, 1); + await expect(page).toMatchElement('.cart-subtotal .amount', {text: `$${ singleProductPrice }`}); - await shopper.setCartQuantity('Simple product', 2); + await shopper.setCartQuantity(simpleProductName, 2); await expect(page).toClick('button', {text: 'Update cart'}); await uiUnblocked(); - await expect(page).toMatchElement('.cart-subtotal .amount', {text: '$19.98'}); + await expect(page).toMatchElement('.cart-subtotal .amount', {text: `$${ twoProductPrice }`}); }); it('should go to the checkout page when "Proceed to Checkout" is clicked', async () => { diff --git a/tests/e2e/core-tests/specs/shopper/front-end-checkout.test.js b/tests/e2e/core-tests/specs/shopper/front-end-checkout.test.js index 2f2bee22b43..2928b6e38ec 100644 --- a/tests/e2e/core-tests/specs/shopper/front-end-checkout.test.js +++ b/tests/e2e/core-tests/specs/shopper/front-end-checkout.test.js @@ -14,6 +14,12 @@ const { const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); +const singleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const twoProductPrice = singleProductPrice * 2; +const threeProductPrice = singleProductPrice * 3; +const fourProductPrice = singleProductPrice * 4; +const fiveProductPrice = singleProductPrice * 5; + let orderId; const runCheckoutPageTest = () => { @@ -74,14 +80,14 @@ const runCheckoutPageTest = () => { await shopper.goToShop(); await shopper.addToCartFromShopPage(simpleProductName); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `1`, `9.99`, `9.99`); + await shopper.productIsInCheckout(simpleProductName, `1`, singleProductPrice, singleProductPrice); }); it('allows customer to choose available payment methods', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage(simpleProductName); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `2`, `19.98`, `19.98`); + await shopper.productIsInCheckout(simpleProductName, `2`, twoProductPrice, twoProductPrice); await expect(page).toClick('.wc_payment_method label', {text: 'PayPal'}); await expect(page).toClick('.wc_payment_method label', {text: 'Direct bank transfer'}); @@ -92,7 +98,7 @@ const runCheckoutPageTest = () => { await shopper.goToShop(); await shopper.addToCartFromShopPage(simpleProductName); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `3`, `29.97`, `29.97`); + await shopper.productIsInCheckout(simpleProductName, `3`, threeProductPrice, threeProductPrice); await shopper.fillBillingDetails(config.get('addresses.customer.billing')); }); @@ -100,7 +106,7 @@ const runCheckoutPageTest = () => { await shopper.goToShop(); await shopper.addToCartFromShopPage(simpleProductName); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `4`, `39.96`, `39.96`); + await shopper.productIsInCheckout(simpleProductName, `4`, fourProductPrice, fourProductPrice); // Select checkbox to ship to a different address await page.evaluate(() => { @@ -115,7 +121,7 @@ const runCheckoutPageTest = () => { await shopper.goToShop(); await shopper.addToCartFromShopPage(simpleProductName); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `5`, `49.95`, `49.95`); + await shopper.productIsInCheckout(simpleProductName, `5`, fiveProductPrice, fiveProductPrice); await shopper.fillBillingDetails(config.get('addresses.customer.billing')); await uiUnblocked(); @@ -151,13 +157,13 @@ const runCheckoutPageTest = () => { await expect(page).toMatchElement('.wc-order-item-name', {text: simpleProductName}); // Verify product cost - await expect(page).toMatchElement('.woocommerce-Price-amount.amount', {text: '9.99'}); + await expect(page).toMatchElement('.woocommerce-Price-amount.amount', {text: singleProductPrice}); // Verify product quantity await expect(page).toMatchElement('.quantity', {text: '5'}); // Verify total order amount without shipping - await expect(page).toMatchElement('.line_cost', {text: '49.95'}); + await expect(page).toMatchElement('.line_cost', {text: fiveProductPrice}); }); }); }; diff --git a/tests/e2e/env/config/default.json b/tests/e2e/env/config/default.json index 19693eece88..9dd72fb0f9c 100644 --- a/tests/e2e/env/config/default.json +++ b/tests/e2e/env/config/default.json @@ -12,7 +12,8 @@ }, "products": { "simple": { - "name": "Simple product" + "name": "Simple product", + "price": "9.99" }, "variable": { "name": "Variable Product with Three Variations" diff --git a/tests/e2e/utils/src/components.js b/tests/e2e/utils/src/components.js index 09d467011d5..eb338423a90 100644 --- a/tests/e2e/utils/src/components.js +++ b/tests/e2e/utils/src/components.js @@ -11,6 +11,7 @@ import factories from './factories'; const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); +const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; const verifyAndPublish = async () => { // Wait for auto save @@ -208,7 +209,7 @@ const completeOnboardingWizard = async () => { const createSimpleProduct = async () => { const product = await factories.products.simple.create( { name: simpleProductName, - regularPrice: '9.99' + regularPrice: simpleProductPrice } ); return product.id; } ;