2021-04-14 14:50:27 +00:00
|
|
|
/**
|
|
|
|
* External dependencies
|
|
|
|
*/
|
2022-03-01 11:25:13 +00:00
|
|
|
import {
|
|
|
|
shopper as wcShopper,
|
|
|
|
uiUnblocked,
|
|
|
|
SHOP_CART_PAGE,
|
|
|
|
} from '@woocommerce/e2e-utils';
|
2021-04-14 14:50:27 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Internal dependencies
|
|
|
|
*/
|
|
|
|
import { getBlockPagePermalink } from './get-block-page-permalink';
|
2022-02-25 09:44:16 +00:00
|
|
|
import { SHOP_CART_BLOCK_PAGE, SHOP_CHECKOUT_BLOCK_PAGE } from './constants';
|
2021-04-14 14:50:27 +00:00
|
|
|
|
|
|
|
export const shopper = {
|
|
|
|
...wcShopper,
|
|
|
|
|
|
|
|
goToCheckoutBlock: async () => {
|
2022-02-25 09:44:16 +00:00
|
|
|
await page.goto( SHOP_CHECKOUT_BLOCK_PAGE, {
|
|
|
|
waitUntil: 'networkidle0',
|
|
|
|
} );
|
|
|
|
},
|
2021-04-14 14:50:27 +00:00
|
|
|
|
2022-02-25 09:44:16 +00:00
|
|
|
goToCartBlock: async () => {
|
|
|
|
await page.goto( SHOP_CART_BLOCK_PAGE, {
|
2021-04-14 14:50:27 +00:00
|
|
|
waitUntil: 'networkidle0',
|
|
|
|
} );
|
|
|
|
},
|
|
|
|
|
|
|
|
productIsInCheckoutBlock: async ( productTitle, quantity, total ) => {
|
2021-05-18 13:09:30 +00:00
|
|
|
// Make sure Order summary is expanded
|
|
|
|
const [ button ] = await page.$x(
|
|
|
|
`//button[contains(@aria-expanded, 'false')]//span[contains(text(), 'Order summary')]`
|
2021-04-14 14:50:27 +00:00
|
|
|
);
|
2021-05-18 13:09:30 +00:00
|
|
|
if ( button ) {
|
|
|
|
await button.click();
|
|
|
|
}
|
2022-02-24 11:31:26 +00:00
|
|
|
await expect( page ).toMatchElement( 'span', {
|
2021-05-18 13:09:30 +00:00
|
|
|
text: productTitle,
|
|
|
|
} );
|
2022-02-24 11:31:26 +00:00
|
|
|
await expect( page ).toMatchElement(
|
2021-05-18 13:09:30 +00:00
|
|
|
'div.wc-block-components-order-summary-item__quantity',
|
2021-04-14 14:50:27 +00:00
|
|
|
{
|
|
|
|
text: quantity,
|
|
|
|
}
|
|
|
|
);
|
2022-02-24 11:31:26 +00:00
|
|
|
await expect( page ).toMatchElement(
|
2021-05-18 13:09:30 +00:00
|
|
|
'span.wc-block-components-product-price__value',
|
2021-04-14 14:50:27 +00:00
|
|
|
{
|
|
|
|
text: total,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
2022-02-22 02:50:59 +00:00
|
|
|
|
|
|
|
goToBlockPage: async ( title ) => {
|
2022-02-22 04:34:51 +00:00
|
|
|
await page.goto( await getBlockPagePermalink( title ), {
|
|
|
|
waitUntil: 'networkidle0',
|
|
|
|
} );
|
2022-02-22 02:50:59 +00:00
|
|
|
|
|
|
|
await expect( page ).toMatchElement( 'h1', { text: title } );
|
|
|
|
},
|
2022-03-01 11:25:13 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Override the @woocommerce/e2e-utils `emptyCart` method to fix the
|
|
|
|
* ReferenceError issue and remove the cart items.
|
|
|
|
*
|
|
|
|
* @todo Remove shopper.emptyCart overload once the upstream is fixed
|
|
|
|
*/
|
|
|
|
emptyCart: async () => {
|
|
|
|
await page.goto( SHOP_CART_PAGE, {
|
|
|
|
waitUntil: 'networkidle0',
|
|
|
|
} );
|
|
|
|
|
|
|
|
// Remove products if they exist
|
|
|
|
if ( ( await page.$( '.remove' ) ) !== null ) {
|
|
|
|
let products = await page.$$( '.remove' );
|
|
|
|
while ( products && products.length > 0 ) {
|
|
|
|
await page.click( '.remove' );
|
|
|
|
await uiUnblocked();
|
|
|
|
products = await page.$$( '.remove' );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Remove coupons if they exist
|
|
|
|
if ( ( await page.$( '.woocommerce-remove-coupon' ) ) !== null ) {
|
|
|
|
await page.click( '.woocommerce-remove-coupon' );
|
|
|
|
await uiUnblocked();
|
|
|
|
}
|
|
|
|
|
|
|
|
await page.waitForSelector( '.woocommerce-info' );
|
|
|
|
// eslint-disable-next-line jest/no-standalone-expect
|
|
|
|
await expect( page ).toMatchElement( '.woocommerce-info', {
|
|
|
|
text: 'Your cart is currently empty.',
|
|
|
|
} );
|
|
|
|
},
|
2021-04-14 14:50:27 +00:00
|
|
|
};
|