61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
/**
|
|
* @format
|
|
*/
|
|
|
|
/**
|
|
* External dependencies
|
|
*/
|
|
import { activatePlugin, switchUserToTest } from '@wordpress/e2e-test-utils';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { createSimpleProduct, createVariableProduct } from "../../utils/components";
|
|
import { CustomerFlow } from "../../utils/flows";
|
|
import { uiUnblocked } from '../../utils';
|
|
|
|
describe( 'Single Product Page', () => {
|
|
beforeAll( async () => {
|
|
await activatePlugin( 'woocommerce' );
|
|
await createSimpleProduct();
|
|
await createVariableProduct();
|
|
await switchUserToTest();
|
|
} );
|
|
|
|
it( 'should be able to add simple products to the cart', async () => {
|
|
// Add 5 simple products to cart
|
|
await CustomerFlow.goToProduct( 'simple-product' );
|
|
await expect( page ).toFill( 'div.quantity input.qty', '5' );
|
|
await CustomerFlow.addToCart();
|
|
await expect( page ).toMatchElement( '.woocommerce-message', { text: 'have been added to your cart.' } );
|
|
|
|
// Verify cart contents
|
|
await CustomerFlow.goToCart();
|
|
await CustomerFlow.productIsInCart( 'Simple product', 5 );
|
|
|
|
// Remove items from cart
|
|
await CustomerFlow.removeFromCart( 'Simple product' );
|
|
await uiUnblocked();
|
|
await expect( page ).toMatchElement( '.cart-empty', { text: 'Your cart is currently empty.' } );
|
|
} );
|
|
|
|
it( 'should be able to add variation products to the cart', async () => {
|
|
// Add a product with one set of variations to cart
|
|
await CustomerFlow.goToProduct( 'variable-product-with-two-variations' );
|
|
await expect( page ).toSelect( '#attr-1', 'val1' );
|
|
await expect( page ).toSelect( '#attr-2', 'val1' );
|
|
await expect( page ).toSelect( '#attr-3', 'val1' );
|
|
await CustomerFlow.addToCart();
|
|
await expect( page ).toMatchElement( '.woocommerce-message', { text: 'has been added to your cart.' } );
|
|
|
|
// Verify cart contents
|
|
await CustomerFlow.goToCart();
|
|
await CustomerFlow.productIsInCart( 'Variable Product with Two Variations' );
|
|
|
|
// Remove items from cart
|
|
await CustomerFlow.removeFromCart( 'Variable Product with Two Variations' );
|
|
await uiUnblocked();
|
|
await expect( page ).toMatchElement( '.cart-empty', { text: 'Your cart is currently empty.' } );
|
|
} );
|
|
} );
|