Merge pull request #24532 from woocommerce/new/wp-admin-new-order-coupon-e2e-test
Add 2 new Puppeteer e2e tests: new coupon & new order
This commit is contained in:
commit
c7d81903ba
|
@ -0,0 +1,46 @@
|
||||||
|
/**
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External dependencies
|
||||||
|
*/
|
||||||
|
import { activatePlugin } from '@wordpress/e2e-test-utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal dependencies
|
||||||
|
*/
|
||||||
|
import { StoreOwnerFlow } from '../../utils/flows';
|
||||||
|
import { clickTab, verifyPublishAndTrash } from "../../utils";
|
||||||
|
|
||||||
|
describe( 'Add New Coupon Page', () => {
|
||||||
|
beforeAll( async () => {
|
||||||
|
await activatePlugin( 'woocommerce' );
|
||||||
|
} );
|
||||||
|
|
||||||
|
it( 'can create new coupon', async () => {
|
||||||
|
// Go to "add coupon" page
|
||||||
|
await StoreOwnerFlow.openNewCoupon();
|
||||||
|
|
||||||
|
// Make sure we're on the add coupon page
|
||||||
|
await expect( page.title() ).resolves.toMatch( 'Add new coupon' );
|
||||||
|
|
||||||
|
// Fill in coupon code and description
|
||||||
|
await expect( page ).toFill( '#title', 'code-' + new Date().getTime().toString() );
|
||||||
|
await expect( page ).toFill( '#woocommerce-coupon-description', 'test coupon' );
|
||||||
|
|
||||||
|
// Set general coupon data
|
||||||
|
await clickTab( 'General' );
|
||||||
|
await expect( page ).toSelect( '#discount_type', 'Fixed cart discount' );
|
||||||
|
await expect( page ).toFill( '#coupon_amount', '100' );
|
||||||
|
|
||||||
|
// Publish coupon, verify that it was published. Trash coupon, verify that it was trashed.
|
||||||
|
await verifyPublishAndTrash(
|
||||||
|
'#publish',
|
||||||
|
'#message',
|
||||||
|
'Coupon updated.',
|
||||||
|
'1 coupon moved to the Trash.'
|
||||||
|
);
|
||||||
|
|
||||||
|
} );
|
||||||
|
} );
|
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External dependencies
|
||||||
|
*/
|
||||||
|
import { activatePlugin } from '@wordpress/e2e-test-utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal dependencies
|
||||||
|
*/
|
||||||
|
import { StoreOwnerFlow } from '../../utils/flows';
|
||||||
|
import { verifyPublishAndTrash } from "../../utils";
|
||||||
|
|
||||||
|
describe( 'Add New Order Page', () => {
|
||||||
|
beforeAll( async () => {
|
||||||
|
await activatePlugin( 'woocommerce' );
|
||||||
|
} );
|
||||||
|
|
||||||
|
it( 'can create new order', async () => {
|
||||||
|
// Go to "add order" page
|
||||||
|
await StoreOwnerFlow.openNewOrder();
|
||||||
|
|
||||||
|
// Make sure we're on the add order page
|
||||||
|
await expect( page.title() ).resolves.toMatch( 'Add new order' );
|
||||||
|
|
||||||
|
// Set order data
|
||||||
|
await expect( page ).toSelect( '#order_status', 'Processing' );
|
||||||
|
await expect( page ).toFill( 'input[name=order_date]', '2018-12-13' );
|
||||||
|
await expect( page ).toFill( 'input[name=order_date_hour]', '18' );
|
||||||
|
await expect( page ).toFill( 'input[name=order_date_minute]', '55' );
|
||||||
|
|
||||||
|
// Create order, verify that it was created. Trash order, verify that it was trashed.
|
||||||
|
await verifyPublishAndTrash(
|
||||||
|
'.order_actions li .save_order',
|
||||||
|
'#message',
|
||||||
|
'Order updated.',
|
||||||
|
'1 order moved to the Trash.'
|
||||||
|
);
|
||||||
|
} );
|
||||||
|
} );
|
|
@ -51,7 +51,14 @@ describe( 'Add New Product Page', () => {
|
||||||
await clickTab( 'General' );
|
await clickTab( 'General' );
|
||||||
await expect( page ).toFill( '#_regular_price', '9.99' );
|
await expect( page ).toFill( '#_regular_price', '9.99' );
|
||||||
|
|
||||||
await verifyPublishAndTrash();
|
// Publish product, verify that it was published. Trash product, verify that it was trashed.
|
||||||
|
await verifyPublishAndTrash(
|
||||||
|
'#publish',
|
||||||
|
'.updated.notice',
|
||||||
|
'Product published.',
|
||||||
|
'Move to Trash',
|
||||||
|
'1 product moved to the Trash.'
|
||||||
|
);
|
||||||
} );
|
} );
|
||||||
|
|
||||||
it( 'can create product with variations', async () => {
|
it( 'can create product with variations', async () => {
|
||||||
|
@ -170,6 +177,13 @@ describe( 'Add New Product Page', () => {
|
||||||
await page.focus( 'button.save-variation-changes' );
|
await page.focus( 'button.save-variation-changes' );
|
||||||
await expect( page ).toClick( 'button.save-variation-changes', { text: 'Save changes' } );
|
await expect( page ).toClick( 'button.save-variation-changes', { text: 'Save changes' } );
|
||||||
|
|
||||||
await verifyPublishAndTrash();
|
// Publish product, verify that it was published. Trash product, verify that it was trashed.
|
||||||
|
await verifyPublishAndTrash(
|
||||||
|
'#publish',
|
||||||
|
'.updated.notice',
|
||||||
|
'Product published.',
|
||||||
|
'Move to Trash',
|
||||||
|
'1 product moved to the Trash.'
|
||||||
|
);
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -4,10 +4,24 @@
|
||||||
|
|
||||||
const baseUrl = process.env.WP_BASE_URL;
|
const baseUrl = process.env.WP_BASE_URL;
|
||||||
|
|
||||||
|
const WP_ADMIN_NEW_COUPON = baseUrl + '/wp-admin/post-new.php?post_type=shop_coupon';
|
||||||
|
const WP_ADMIN_NEW_ORDER = baseUrl + '/wp-admin/post-new.php?post_type=shop_order';
|
||||||
const WP_ADMIN_NEW_PRODUCT = baseUrl + '/wp-admin/post-new.php?post_type=product';
|
const WP_ADMIN_NEW_PRODUCT = baseUrl + '/wp-admin/post-new.php?post_type=product';
|
||||||
const WP_ADMIN_WC_SETTINGS = baseUrl + '/wp-admin/admin.php?page=wc-settings&tab=';
|
const WP_ADMIN_WC_SETTINGS = baseUrl + '/wp-admin/admin.php?page=wc-settings&tab=';
|
||||||
|
|
||||||
const StoreOwnerFlow = {
|
const StoreOwnerFlow = {
|
||||||
|
openNewCoupon: async () => {
|
||||||
|
await page.goto( WP_ADMIN_NEW_COUPON, {
|
||||||
|
waitUntil: 'networkidle0',
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
openNewOrder: async () => {
|
||||||
|
await page.goto( WP_ADMIN_NEW_ORDER, {
|
||||||
|
waitUntil: 'networkidle0',
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
openNewProduct: async () => {
|
openNewProduct: async () => {
|
||||||
await page.goto( WP_ADMIN_NEW_PRODUCT, {
|
await page.goto( WP_ADMIN_NEW_PRODUCT, {
|
||||||
waitUntil: 'networkidle0',
|
waitUntil: 'networkidle0',
|
||||||
|
|
|
@ -23,7 +23,7 @@ const clearAndFillInput = async ( selector, value ) => {
|
||||||
/**
|
/**
|
||||||
* Click a tab (on post type edit screen).
|
* Click a tab (on post type edit screen).
|
||||||
*
|
*
|
||||||
* @param {string} tabName Tab label.
|
* @param {string} tabName Tab label
|
||||||
*/
|
*/
|
||||||
const clickTab = async ( tabName ) => {
|
const clickTab = async ( tabName ) => {
|
||||||
await expect( page ).toClick( '.wc-tabs > li > a', { text: tabName } );
|
await expect( page ).toClick( '.wc-tabs > li > a', { text: tabName } );
|
||||||
|
@ -75,6 +75,42 @@ const uiUnblocked = async () => {
|
||||||
await page.waitForFunction( () => ! Boolean( document.querySelector( '.blockUI' ) ) );
|
await page.waitForFunction( () => ! Boolean( document.querySelector( '.blockUI' ) ) );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Publish, verify that item was published. Trash, verify that item was trashed.
|
||||||
|
*
|
||||||
|
* @param {string} button (Publish)
|
||||||
|
* @param {string} publishNotice
|
||||||
|
* @param {string} publishVerification
|
||||||
|
* @param {string} trashVerification
|
||||||
|
*/
|
||||||
|
const verifyPublishAndTrash = async ( button, publishNotice, publishVerification, trashVerification ) => {
|
||||||
|
// Wait for auto save
|
||||||
|
await page.waitFor( 2000 );
|
||||||
|
|
||||||
|
// Publish
|
||||||
|
await expect( page ).toClick( button );
|
||||||
|
await page.waitForSelector( publishNotice );
|
||||||
|
|
||||||
|
// Verify
|
||||||
|
await expect( page ).toMatchElement( publishNotice, { text: publishVerification } );
|
||||||
|
if ( button === '.order_actions li .save_order' ) {
|
||||||
|
await expect( page ).toMatchElement( '#select2-order_status-container', { text: 'Processing' } );
|
||||||
|
await expect( page ).toMatchElement(
|
||||||
|
'#woocommerce-order-notes .note_content',
|
||||||
|
{
|
||||||
|
text: 'Order status changed from Pending payment to Processing.',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trash
|
||||||
|
await expect( page ).toClick( 'a', { text: "Move to Trash" } );
|
||||||
|
await page.waitForSelector( '#message' );
|
||||||
|
|
||||||
|
// Verify
|
||||||
|
await expect( page ).toMatchElement( publishNotice, { text: trashVerification } );
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify that checkbox is set.
|
* Verify that checkbox is set.
|
||||||
*
|
*
|
||||||
|
@ -120,6 +156,7 @@ module.exports = {
|
||||||
setCheckbox,
|
setCheckbox,
|
||||||
unsetCheckbox,
|
unsetCheckbox,
|
||||||
uiUnblocked,
|
uiUnblocked,
|
||||||
|
verifyPublishAndTrash,
|
||||||
verifyCheckboxIsSet,
|
verifyCheckboxIsSet,
|
||||||
verifyCheckboxIsUnset,
|
verifyCheckboxIsUnset,
|
||||||
verifyValueOfInputField,
|
verifyValueOfInputField,
|
||||||
|
|
Loading…
Reference in New Issue