/** * @format */ /** * External dependencies */ import { activatePlugin } from '@wordpress/e2e-test-utils'; /** * Internal dependencies */ import { createSimpleProduct } from '../../utils/components'; import { CustomerFlow, StoreOwnerFlow } from '../../utils/flows'; import { uiUnblocked } from '../../utils'; describe( 'Cart page', () => { beforeAll( async () => { await activatePlugin( 'woocommerce' ); await createSimpleProduct(); await StoreOwnerFlow.logout(); } ); it( 'should displays no item in the cart', async () => { await CustomerFlow.goToCart(); await expect( page ).toMatchElement( '.cart-empty', { text: 'Your cart is currently empty.' } ); } ); it( 'should adds the product to the cart when "Add to cart" is clicked', async () => { await CustomerFlow.goToShop(); await CustomerFlow.addToCartFromShopPage( 'Simple product' ); await CustomerFlow.goToCart(); await CustomerFlow.productIsInCart( 'Simple product' ); } ); it( 'should increases item qty when "Add to cart" of the same product is clicked', async () => { await CustomerFlow.goToShop(); await CustomerFlow.addToCartFromShopPage( 'Simple product' ); await CustomerFlow.goToCart(); await CustomerFlow.productIsInCart( 'Simple product', 2 ); } ); it( 'should updates qty when updated via qty input', async () => { await CustomerFlow.goToCart(); await CustomerFlow.setCartQuantity( 'Simple product', 4 ); await expect( page ).toClick( 'button', { text: 'Update cart' } ); await uiUnblocked(); await CustomerFlow.productIsInCart( 'Simple product', 4 ); } ); it( 'should remove the item from the cart when remove is clicked', async () => { await CustomerFlow.goToCart(); await CustomerFlow.removeFromCart( 'Simple product' ); await uiUnblocked(); await expect( page ).toMatchElement( '.cart-empty', { text: 'Your cart is currently empty.' } ); } ); it( 'should update subtotal in cart totals when adding product to the cart', async () => { await CustomerFlow.goToShop(); await CustomerFlow.addToCartFromShopPage( 'Simple product' ); await CustomerFlow.goToCart(); await CustomerFlow.productIsInCart( 'Simple product', 1 ); await expect( page ).toMatchElement( '.cart-subtotal .amount', { text: '$9.99' } ); await CustomerFlow.setCartQuantity( 'Simple product', 2 ); await expect( page ).toClick( 'button', { text: 'Update cart' } ); await uiUnblocked(); await expect( page ).toMatchElement( '.cart-subtotal .amount', { text: '$19.98' } ); } ); it( 'should go to the checkout page when "Proceed to Checkout" is clicked', async () => { await CustomerFlow.goToCart(); await Promise.all( [ page.waitForNavigation( { waitUntil: 'networkidle0' } ), expect( page ).toClick( '.checkout-button', { text: 'Proceed to checkout' } ), ] ); await expect( page ).toMatchElement( '#order_review' ); } ); } );