Add HPOS specific k6 test suite (#37665)

* Add HPOS specific k6 test suite

* revert unintntional partial revert of #37719

---------

Co-authored-by: Ron Rennick <ronald.rennick@automattic.com>
This commit is contained in:
Ron Rennick 2023-05-12 16:25:51 -03:00 committed by GitHub
parent 8e9ff0d7f5
commit f6b5913d32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 1203 additions and 487 deletions

View File

@ -0,0 +1,4 @@
Significance: minor
Type: add
Add HPOS specific k6 test suite

View File

@ -74,7 +74,7 @@ if ( cot_status === true ) {
const date = new Date();
const order_date = date.toJSON().slice( 0, 10 );
export function addOrder() {
export function addOrder( includeTests = {} ) {
let response;
let ajax_nonce_add_meta;
let wpnonce;
@ -87,6 +87,15 @@ export function addOrder() {
let api_x_wp_nonce;
let apiNonceHeader;
let heartbeat_nonce;
let includedTests = Object.assign( {
create: true,
heartbeat: true,
open: true,
other: true,
update: true,
},
includeTests
);
group( 'Add Order', function () {
const requestHeaders = Object.assign(
@ -170,75 +179,430 @@ export function addOrder() {
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
group( 'All Orders - Other Requests', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
if ( includedTests.other ) {
group( 'All Orders - Other Requests', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-admin/onboarding/tasks?_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-admin/onboarding/tasks?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
response = http.get(
`${ base_url }/wp-json/wc-admin/onboarding/tasks?_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-admin/onboarding/tasks?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
response = http.get(
`${ base_url }/wp-json/wc-analytics/admin/notes?page=1&per_page=25&` +
`type=error%2Cupdate&status=unactioned&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/admin/notes?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
response = http.get(
`${ base_url }/wp-json/wc-admin/options?options=woocommerce_ces_tracks_queue&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
}
if ( includedTests.heartbeat ) {
group( 'WP Admin Heartbeat', function () {
const requestHeaders = Object.assign(
{},
jsonRequestHeader,
commonRequestHeaders,
contentTypeRequestHeader,
commonPostRequestHeaders,
commonNonStandardHeaders
);
response = http.post(
`${ base_url }/wp-admin/admin-ajax.php`,
`_nonce=${ heartbeat_nonce }&action=heartbeat&has_focus=true&interval=15&screen_id=shop_order`,
{
headers: requestHeaders,
tags: { name: 'Merchant - action=heartbeat' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
response = http.get(
`${ base_url }/wp-json/wc-analytics/admin/notes?page=1&per_page=25&` +
`type=error%2Cupdate&status=unactioned&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/admin/notes?' },
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}
if ( includedTests.create ) {
group( 'Create New Order', function () {
const requestHeaders = Object.assign(
{},
htmlRequestHeader,
commonRequestHeaders,
commonGetRequestHeaders,
contentTypeRequestHeader,
commonNonStandardHeaders
);
const date = new Date();
const order_date = date.toJSON().slice( 0, 10 );
const orderParams = new URLSearchParams( [
[ '_ajax_nonce-add-meta', `${ ajax_nonce_add_meta }` ],
[ '_billing_address_1', `${ addresses_guest_billing_address_1 }` ],
[ '_billing_address_2', `${ addresses_guest_billing_address_2 }` ],
[ '_billing_city', `${ addresses_guest_billing_city }` ],
[ '_billing_company', `${ addresses_guest_billing_company }` ],
[ '_billing_country', `${ addresses_guest_billing_country }` ],
[ '_billing_email', `${ addresses_guest_billing_email }` ],
[
'_billing_first_name',
`${ addresses_guest_billing_first_name }`,
],
[ '_billing_last_name', `${ addresses_guest_billing_last_name }` ],
[ '_billing_phone', `${ addresses_guest_billing_phone }` ],
[ '_billing_postcode', `${ addresses_guest_billing_postcode }` ],
[ '_billing_state', `${ addresses_guest_billing_state }` ],
[ '_shipping_address_1', `${ addresses_guest_billing_address_1 }` ],
[ '_shipping_address_2', `${ addresses_guest_billing_address_2 }` ],
[ '_shipping_city', `${ addresses_guest_billing_city }` ],
[ '_shipping_company', `${ addresses_guest_billing_company }` ],
[ '_shipping_country', `${ addresses_guest_billing_country }` ],
[
'_shipping_first_name',
`${ addresses_guest_billing_first_name }`,
],
[ '_shipping_last_name', `${ addresses_guest_billing_last_name }` ],
[ '_shipping_phone', `${ addresses_guest_billing_phone }` ],
[ '_shipping_postcode', `${ addresses_guest_billing_postcode }` ],
[ '_shipping_state', `${ addresses_guest_billing_state }` ],
[ '_payment_method', `${ payment_method }` ],
[ '_transaction_id', '' ],
[ '_wp_http_referer', '' ],
[ '_wp_original_http_referer', '' ],
[ '_wpnonce', `${ wpnonce }` ],
[ 'action', 'editpost' ],
[ 'auto_draft', '1' ], //no
[ 'closedpostboxesnonce', `${ closed_postboxes_nonce }` ],
[ 'customer_user', '' ],
[ 'excerpt', '' ],
[ 'meta-box-order-nonce', `${ meta_box_order_nonce }` ],
[ 'metakeyinput', '' ],
[ 'metakeyselect', '%23NONE%23' ],
[ 'metavalue', '' ],
[ 'order_date', `${ order_date }` ],
[ 'order_date_hour', '01' ],
[ 'order_date_minute', '01' ],
[ 'order_date_second', '01' ],
[ 'order_note', '' ],
[ 'order_note_type', '' ],
[ 'order_status', 'wc-pending' ],
[ 'original_post_status', 'auto-draft' ],
[ 'original_post_title', '' ],
[ 'originalaction', 'editpost' ],
[ 'post_ID', `${ post_id }` ],
[ 'post_author', '1' ],
[ 'post_status', 'auto-draft' ],
[ 'post_title', '%2COrder' ],
[ 'post_type', 'shop_order' ],
[ 'referredby', '' ],
[ 'samplepermalinknonce', `${ sample_permalink_nonce }` ],
[ 'save', 'Create' ],
[ 'user_ID', '1' ],
[ 'wc_order_action', '' ],
[ 'woocommerce_meta_nonce', `${ woocommerce_meta_nonce }` ],
] );
const cotOrderParams = new URLSearchParams( [
[ '_ajax_nonce-add-meta', `${ ajax_nonce_add_meta }` ],
[ '_billing_address_1', `${ addresses_guest_billing_address_1 }` ],
[ '_billing_address_2', `${ addresses_guest_billing_address_2 }` ],
[ '_billing_city', `${ addresses_guest_billing_city }` ],
[ '_billing_company', `${ addresses_guest_billing_company }` ],
[ '_billing_country', `${ addresses_guest_billing_country }` ],
[ '_billing_email', `${ addresses_guest_billing_email }` ],
[
'_billing_first_name',
`${ addresses_guest_billing_first_name }`,
],
[ '_billing_last_name', `${ addresses_guest_billing_last_name }` ],
[ '_billing_phone', `${ addresses_guest_billing_phone }` ],
[ '_billing_postcode', `${ addresses_guest_billing_postcode }` ],
[ '_billing_state', `${ addresses_guest_billing_state }` ],
[ '_shipping_address_1', `${ addresses_guest_billing_address_1 }` ],
[ '_shipping_address_2', `${ addresses_guest_billing_address_2 }` ],
[ '_shipping_city', `${ addresses_guest_billing_city }` ],
[ '_shipping_company', `${ addresses_guest_billing_company }` ],
[ '_shipping_country', `${ addresses_guest_billing_country }` ],
[
'_shipping_first_name',
`${ addresses_guest_billing_first_name }`,
],
[ '_shipping_last_name', `${ addresses_guest_billing_last_name }` ],
[ '_shipping_phone', `${ addresses_guest_billing_phone }` ],
[ '_shipping_postcode', `${ addresses_guest_billing_postcode }` ],
[ '_shipping_state', `${ addresses_guest_billing_state }` ],
[ '_payment_method', `${ payment_method }` ],
[ '_transaction_id', '' ],
[ '_wp_http_referer', '' ],
[ '_wpnonce', `${ wpnonce }` ],
[ 'action', 'edit_order' ],
[ 'customer_user', '' ],
[ 'excerpt', '' ],
[ 'metakeyinput', '' ],
[ 'metavalue', '' ],
[ 'order_date', `${ order_date }` ],
[ 'order_date_hour', '01' ],
[ 'order_date_minute', '01' ],
[ 'order_date_second', '01' ],
[ 'order_note', '' ],
[ 'order_note_type', '' ],
[ 'order_status', 'wc-pending' ],
[ 'original_order_status', 'auto-draft' ],
[ 'post_status', 'auto-draft' ],
[ 'post_title', 'Order' ],
[ 'referredby', '' ],
[ 'save', 'Create' ],
[ 'wc_order_action', '' ],
[ 'woocommerce_meta_nonce', `${ woocommerce_meta_nonce }` ],
] );
if ( cot_status === true ) {
admin_update_order = `${ admin_update_order_base }&id=${ hpos_post_id }`;
admin_update_order_params = cotOrderParams.toString();
} else {
admin_update_order = admin_update_order_base;
admin_update_order_params = orderParams.toString();
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
response = http.post(
`${ base_url }/wp-admin/${ admin_update_order }`,
admin_update_order_params.toString(),
{
headers: requestHeaders,
tags: { name: 'Merchant - Create New Order' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Edit order' header": ( response ) =>
response.body.includes( `${ admin_open_order_assert }` ),
"body contains: 'Order updated' confirmation": ( response ) =>
response.body.includes( `${ admin_created_order_assert }` ),
} );
} );
response = http.get(
`${ base_url }/wp-json/wc-admin/options?options=woocommerce_ces_tracks_queue&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}
group( 'WP Admin Heartbeat', function () {
const requestHeaders = Object.assign(
{},
jsonRequestHeader,
commonRequestHeaders,
contentTypeRequestHeader,
commonPostRequestHeaders,
commonNonStandardHeaders
);
if ( includedTests.open ) {
group( 'Open Order', function () {
const requestHeaders = Object.assign(
{},
htmlRequestHeader,
commonRequestHeaders,
commonGetRequestHeaders,
commonNonStandardHeaders
);
response = http.post(
`${ base_url }/wp-admin/admin-ajax.php`,
`_nonce=${ heartbeat_nonce }&action=heartbeat&has_focus=true&interval=15&screen_id=shop_order`,
{
headers: requestHeaders,
tags: { name: 'Merchant - action=heartbeat' },
if ( cot_status === true ) {
admin_open_order_base = `${ admin_update_order_base }&id=${ hpos_post_id }`;
} else {
admin_open_order_base = `${ admin_update_order_base }?post=${ post_id }`;
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
response = http.get(
`${ base_url }/wp-admin/${ admin_open_order_base }&action=edit`,
{
headers: requestHeaders,
tags: { name: 'Merchant - Open Order' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Edit order' header": ( response ) =>
response.body.includes( `${ admin_open_order_assert }` ),
} );
} );
} );
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}
if ( includedTests.update ) {
group( 'Update Order', function () {
const requestHeaders = Object.assign(
{},
htmlRequestHeader,
commonRequestHeaders,
commonGetRequestHeaders,
contentTypeRequestHeader,
commonNonStandardHeaders
);
const orderParams = new URLSearchParams( [
[ '_ajax_nonce-add-meta', `${ ajax_nonce_add_meta }` ],
[ '_billing_address_1', `${ addresses_guest_billing_address_1 }` ],
[ '_billing_address_2', `${ addresses_guest_billing_address_2 }` ],
[ '_billing_city', `${ addresses_guest_billing_city }` ],
[ '_billing_company', `${ addresses_guest_billing_company }` ],
[ '_billing_country', `${ addresses_guest_billing_country }` ],
[ '_billing_email', `${ addresses_guest_billing_email }` ],
[
'_billing_first_name',
`${ addresses_guest_billing_first_name }`,
],
[ '_billing_last_name', `${ addresses_guest_billing_last_name }` ],
[ '_billing_phone', `${ addresses_guest_billing_phone }` ],
[ '_billing_postcode', `${ addresses_guest_billing_postcode }` ],
[ '_billing_state', `${ addresses_guest_billing_state }` ],
[ '_shipping_address_1', `${ addresses_guest_billing_address_1 }` ],
[ '_shipping_address_2', `${ addresses_guest_billing_address_2 }` ],
[ '_shipping_city', `${ addresses_guest_billing_city }` ],
[ '_shipping_company', `${ addresses_guest_billing_company }` ],
[ '_shipping_country', `${ addresses_guest_billing_country }` ],
[
'_shipping_first_name',
`${ addresses_guest_billing_first_name }`,
],
[ '_shipping_last_name', `${ addresses_guest_billing_last_name }` ],
[ '_shipping_phone', `${ addresses_guest_billing_phone }` ],
[ '_shipping_postcode', `${ addresses_guest_billing_postcode }` ],
[ '_shipping_state', `${ addresses_guest_billing_state }` ],
[ '_payment_method', `${ payment_method }` ],
[ '_transaction_id', '' ],
[ '_wp_http_referer', '' ],
[ '_wp_original_http_referer', '' ],
[ '_wpnonce', `${ wpnonce }` ],
[ 'action', 'editpost' ],
[ 'closedpostboxesnonce', `${ closed_postboxes_nonce }` ],
[ 'customer_user', '' ],
[ 'excerpt', '' ],
[ 'meta-box-order-nonce', `${ meta_box_order_nonce }` ],
[ 'metakeyinput', '' ],
[ 'metakeyselect', '%23NONE%23' ],
[ 'metavalue', '' ],
[ 'order_date', `${ order_date }` ],
[ 'order_date_hour', '01' ],
[ 'order_date_minute', '01' ],
[ 'order_date_second', '01' ],
[ 'order_note', '' ],
[ 'order_note_type', '' ],
[ 'order_status', 'wc-completed' ],
[ 'original_post_status', 'wc-pending' ],
[ 'original_post_title', '' ],
[ 'originalaction', 'editpost' ],
[ 'post_ID', `${ post_id }` ],
[ 'post_author', '1' ],
[ 'post_status', 'pending' ],
[ 'post_title', '%2COrder' ],
[ 'post_type', 'shop_order' ],
[ 'referredby', '' ],
[ 'samplepermalinknonce', `${ sample_permalink_nonce }` ],
[ 'save', 'Update' ],
[ 'user_ID', '1' ],
[ 'wc_order_action', '' ],
[ 'woocommerce_meta_nonce', `${ woocommerce_meta_nonce }` ],
] );
const cotOrderParams = new URLSearchParams( [
[ '_ajax_nonce-add-meta', `${ ajax_nonce_add_meta }` ],
[ '_billing_address_1', `${ addresses_guest_billing_address_1 }` ],
[ '_billing_address_2', `${ addresses_guest_billing_address_2 }` ],
[ '_billing_city', `${ addresses_guest_billing_city }` ],
[ '_billing_company', `${ addresses_guest_billing_company }` ],
[ '_billing_country', `${ addresses_guest_billing_country }` ],
[ '_billing_email', `${ addresses_guest_billing_email }` ],
[
'_billing_first_name',
`${ addresses_guest_billing_first_name }`,
],
[ '_billing_last_name', `${ addresses_guest_billing_last_name }` ],
[ '_billing_phone', `${ addresses_guest_billing_phone }` ],
[ '_billing_postcode', `${ addresses_guest_billing_postcode }` ],
[ '_billing_state', `${ addresses_guest_billing_state }` ],
[ '_shipping_address_1', `${ addresses_guest_billing_address_1 }` ],
[ '_shipping_address_2', `${ addresses_guest_billing_address_2 }` ],
[ '_shipping_city', `${ addresses_guest_billing_city }` ],
[ '_shipping_company', `${ addresses_guest_billing_company }` ],
[ '_shipping_country', `${ addresses_guest_billing_country }` ],
[
'_shipping_first_name',
`${ addresses_guest_billing_first_name }`,
],
[ '_shipping_last_name', `${ addresses_guest_billing_last_name }` ],
[ '_shipping_phone', `${ addresses_guest_billing_phone }` ],
[ '_shipping_postcode', `${ addresses_guest_billing_postcode }` ],
[ '_shipping_state', `${ addresses_guest_billing_state }` ],
[ '_payment_method', `${ payment_method }` ],
[ '_transaction_id', '' ],
[ '_wp_http_referer', '' ],
[ '_wpnonce', `${ wpnonce }` ],
[ 'action', 'edit_order' ],
[ 'customer_user', '' ],
[ 'excerpt', '' ],
[ 'metakeyinput', '' ],
[ 'metavalue', '' ],
[ 'order_date', `${ order_date }` ],
[ 'order_date_hour', '01' ],
[ 'order_date_minute', '01' ],
[ 'order_date_second', '01' ],
[ 'order_note', '' ],
[ 'order_note_type', '' ],
[ 'order_status', 'wc-completed' ],
[ 'original_order_status', 'pending' ],
[ 'post_status', 'pending' ],
[ 'post_title', 'Order' ],
[ 'referredby', '' ],
[ 'save', 'Save' ],
[ 'wc_order_action', '' ],
[ 'woocommerce_meta_nonce', `${ woocommerce_meta_nonce }` ],
] );
if ( cot_status === true ) {
admin_update_order_id = `${ admin_update_order_base }&id=${ hpos_post_id }`;
admin_update_order_params = cotOrderParams.toString();
} else {
admin_update_order_params = orderParams.toString();
admin_update_order_id = `${ admin_open_order_base }`;
}
response = http.post(
`${ base_url }/wp-admin/${ admin_update_order_id }`,
admin_update_order_params.toString(),
{
headers: requestHeaders,
tags: { name: 'Merchant - Update Existing Order Status' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Order updated' confirmation": ( response ) =>
response.body.includes( `${ admin_update_order_assert }` ),
} );
} );
}
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
@ -584,7 +948,7 @@ export function addOrder() {
response.body.includes( `${ admin_update_order_assert }` ),
} );
} );
}
};
export default function () {
addOrder();

View File

@ -33,7 +33,7 @@ import {
allRequestHeader,
} from '../../headers.js';
export function addProduct() {
export function addProduct( includeTests = {} ) {
let response;
let heartbeat_nonce;
let ajax_nonce_add_meta;
@ -46,6 +46,14 @@ export function addProduct() {
let post_id;
let api_x_wp_nonce;
let apiNonceHeader;
let includedTests = Object.assign( {
heartbeat: true,
other: true,
permalink: true,
update: true,
},
includeTests
);
group( 'Add New Product', function () {
const requestHeaders = Object.assign(
@ -130,242 +138,250 @@ export function addProduct() {
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
group( 'Add New Product - Other Requests', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
if ( includedTests.other ) {
group( 'Add New Product - Other Requests', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-admin/onboarding/tasks?_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-admin/onboarding/tasks?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
response = http.get(
`${ base_url }/wp-json/wc-admin/onboarding/tasks?_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-admin/onboarding/tasks?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
response = http.get(
`${ base_url }/wp-json/wc-analytics/admin/notes?page=1&per_page=25&` +
`type=error%2Cupdate&status=unactioned&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/admin/notes?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
response = http.get(
`${ base_url }/wp-json/wc-admin/options?options=woocommerce_ces_tracks_queue&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
response = http.get(
`${ base_url }/wp-json/wc-analytics/admin/notes?page=1&per_page=25&` +
`type=error%2Cupdate&status=unactioned&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/admin/notes?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}
response = http.get(
`${ base_url }/wp-json/wc-admin/options?options=woocommerce_ces_tracks_queue&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue',
if ( includedTests.heartbeat ) {
group( 'Autosave heartbeat', function () {
const requestHeaders = Object.assign(
{},
commonNonStandardHeaders,
jsonAPIRequestHeader,
commonPostRequestHeaders,
commonRequestHeaders
);
response = http.post(
`${ base_url }/wp-admin/admin-ajax.php`,
{
_nonce: `${ heartbeat_nonce }`,
action: 'heartbeat',
'data%5Bwp-refresh-post-lock%5D%5Bpost_id%5D': `${ post_id }`,
'data%5Bwp_autosave%5D%5B_wpnonce%5D': `${ wpnonce }`,
'data%5Bwp_autosave%5D%5Bauto_draft%5D': '1',
'data%5Bwp_autosave%5D%5Bcatslist%5D': '',
'data%5Bwp_autosave%5D%5Bcomment_status%5D': 'open',
'data%5Bwp_autosave%5D%5Bcontent%5D': '',
'data%5Bwp_autosave%5D%5Bexcerpt%5D': '',
'data%5Bwp_autosave%5D%5Bpost_author%5D': '1',
'data%5Bwp_autosave%5D%5Bpost_id%5D': `${ post_id }`,
'data%5Bwp_autosave%5D%5Bpost_title%5D': `${ add_product_title }`,
'data%5Bwp_autosave%5D%5Bpost_type%5D': 'product',
has_focus: 'true',
interval: '15',
screen_id: 'product',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
{
headers: requestHeaders,
tags: { name: 'Merchant - action=heartbeat autosave' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
} );
}
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
if ( includedTests.permalink ) {
group( 'Sample Permalink', function () {
const requestHeaders = Object.assign(
{},
commonNonStandardHeaders,
allRequestHeader,
contentTypeRequestHeader,
commonPostRequestHeaders
);
group( 'Autosave heartbeat', function () {
const requestHeaders = Object.assign(
{},
commonNonStandardHeaders,
jsonAPIRequestHeader,
commonPostRequestHeaders,
commonRequestHeaders
);
response = http.post(
`${ base_url }/wp-admin/admin-ajax.php`,
{
_nonce: `${ heartbeat_nonce }`,
action: 'heartbeat',
'data%5Bwp-refresh-post-lock%5D%5Bpost_id%5D': `${ post_id }`,
'data%5Bwp_autosave%5D%5B_wpnonce%5D': `${ wpnonce }`,
'data%5Bwp_autosave%5D%5Bauto_draft%5D': '1',
'data%5Bwp_autosave%5D%5Bcatslist%5D': '',
'data%5Bwp_autosave%5D%5Bcomment_status%5D': 'open',
'data%5Bwp_autosave%5D%5Bcontent%5D': '',
'data%5Bwp_autosave%5D%5Bexcerpt%5D': '',
'data%5Bwp_autosave%5D%5Bpost_author%5D': '1',
'data%5Bwp_autosave%5D%5Bpost_id%5D': `${ post_id }`,
'data%5Bwp_autosave%5D%5Bpost_title%5D': `${ add_product_title }`,
'data%5Bwp_autosave%5D%5Bpost_type%5D': 'product',
has_focus: 'true',
interval: '15',
screen_id: 'product',
},
{
headers: requestHeaders,
tags: { name: 'Merchant - action=heartbeat autosave' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
response = http.post(
`${ base_url }/wp-admin/admin-ajax.php`,
{
action: 'sample-permalink',
new_title: `${ add_product_title }`,
post_id: `${ post_id }`,
samplepermalinknonce: `${ sample_permalink_nonce }`,
},
{
headers: requestHeaders,
tags: { name: 'Merchant - action=sample-permalink' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Permalink:'": ( response ) =>
response.body.includes( '<strong>Permalink:</strong>' ),
} );
} );
} );
group( 'Sample Permalink', function () {
const requestHeaders = Object.assign(
{},
commonNonStandardHeaders,
allRequestHeader,
contentTypeRequestHeader,
commonPostRequestHeaders
);
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}
response = http.post(
`${ base_url }/wp-admin/admin-ajax.php`,
{
action: 'sample-permalink',
new_title: `${ add_product_title }`,
post_id: `${ post_id }`,
samplepermalinknonce: `${ sample_permalink_nonce }`,
},
{
headers: requestHeaders,
tags: { name: 'Merchant - action=sample-permalink' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Permalink:'": ( response ) =>
response.body.includes( '<strong>Permalink:</strong>' ),
if ( includedTests.update ) {
group( 'Update New Product', function () {
const requestHeaders = Object.assign(
{},
htmlRequestHeader,
commonRequestHeaders,
commonGetRequestHeaders,
contentTypeRequestHeader,
commonNonStandardHeaders
);
const productParams = new URLSearchParams( [
[ '_ajax_nonce-add-meta', `${ ajax_nonce_add_meta }` ],
[
'_ajax_nonce-add-product_cat',
`${ ajax_nonce_add_product_cat }`,
],
[ '_backorders', 'no' ],
[ '_button_text', '' ],
[ '_download_expiry', '' ],
[ '_download_limit', '' ],
[ '_height', '' ],
[ '_length', '' ],
[ '_low_stock_amount', '' ],
[ '_original_stock', '0' ],
[ '_product_url', '' ],
[ '_purchase_note', '' ],
[ '_regular_price', `${ add_product_regular_price }` ],
[ '_sale_price', '' ],
[ '_sale_price_dates_from', '' ],
[ '_sale_price_dates_to', '' ],
[ '_sku', '' ],
[ '_stock', '0' ],
[ '_stock_status', 'instock' ],
[ '_thumbnail_id', '-1' ],
[ '_visibility', 'visible' ],
[ '_weight', '' ],
[ '_width', '' ],
[ '_wp_http_referer', '' ],
[ '_wp_original_http_referer', '' ],
[ '_wpnonce', `${ wpnonce }` ],
[ 'aa', '2021' ],
[ 'action', 'editpost' ],
[ 'attribute_taxonomy', '' ],
[ 'auto_draft', '' ],
[ 'closedpostboxesnonce', `${ closed_postboxes_nonce }` ],
[ 'comment_status', 'open' ],
[ 'content', '' ],
[ 'cur_aa', '2021' ],
[ 'cur_hh', '15' ],
[ 'cur_jj', '09' ],
[ 'cur_mm', '07' ],
[ 'cur_mn', '48' ],
[ 'current_featured', 'no' ],
[ 'current_visibility', 'visible' ],
[ 'excerpt', '' ],
[ 'hh', '15' ],
[ 'hidden_aa', '2021' ],
[ 'hidden_hh', '15' ],
[ 'hidden_jj', '09' ],
[ 'hidden_mm', '07' ],
[ 'hidden_mn', '48' ],
[ 'hidden_post_password', '' ],
[ 'hidden_post_status', 'draft' ],
[ 'hidden_post_visibility', 'public' ],
[ 'jj', '09' ],
[ 'menu_order', '0' ],
[ 'meta-box-order-nonce', `${ meta_box_order_nonce }` ],
[ 'metakeyinput', '' ],
[ 'metakeyselect', '%2523NONE%2523' ],
[ 'metavalue', '' ],
[ 'mm', '07' ],
[ 'mn', '48' ],
[ 'newproduct_cat', 'New%2520category%2520name' ],
[ 'newproduct_cat_parent', '-1' ],
[ 'newtag%255Bproduct_tag%255D', '' ],
[ 'original_post_status', 'auto-draft' ],
[ 'original_post_title', '' ],
[ 'original_publish', 'Publish' ],
[ 'originalaction', 'editpost' ],
[ 'post_ID', `${ post_id }` ],
[ 'post_author', '1' ],
[ 'post_name', '' ],
[ 'post_password', '' ],
[ 'post_status', 'draft' ],
[ 'post_title', `${ add_product_title }` ],
[ 'post_type', 'product' ],
[ 'product-type', 'simple' ],
[ 'product_image_gallery', '' ],
[ 'product_shipping_class', '-1' ],
[ 'publish', 'Publish' ],
[ 'referredby', '' ],
[ 'samplepermalinknonce', `${ sample_permalink_nonce }` ],
[ 'ss', '12' ],
[ 'tax_input%255Bproduct_cat%255D%255B%255D', '0' ],
[ 'tax_input%255Bproduct_tag%255D', '' ],
[ 'user_ID', '1' ],
[ 'visibility', 'public' ],
[ 'woocommerce_meta_nonce', `${ woocommerce_meta_nonce }` ],
[ 'wp-preview', '' ],
] );
response = http.post(
`${ base_url }/wp-admin/post.php`,
productParams.toString(),
{
headers: requestHeaders,
tags: { name: 'Merchant - Update New Product' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Edit product' header": ( response ) =>
response.body.includes( 'Edit product</h1>' ),
"body contains: 'Product published' confirmation": ( response ) =>
response.body.includes( 'Product published.' ),
} );
} );
} );
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
group( 'Update New Product', function () {
const requestHeaders = Object.assign(
{},
htmlRequestHeader,
commonRequestHeaders,
commonGetRequestHeaders,
contentTypeRequestHeader,
commonNonStandardHeaders
);
const productParams = new URLSearchParams( [
[ '_ajax_nonce-add-meta', `${ ajax_nonce_add_meta }` ],
[
'_ajax_nonce-add-product_cat',
`${ ajax_nonce_add_product_cat }`,
],
[ '_backorders', 'no' ],
[ '_button_text', '' ],
[ '_download_expiry', '' ],
[ '_download_limit', '' ],
[ '_height', '' ],
[ '_length', '' ],
[ '_low_stock_amount', '' ],
[ '_original_stock', '0' ],
[ '_product_url', '' ],
[ '_purchase_note', '' ],
[ '_regular_price', `${ add_product_regular_price }` ],
[ '_sale_price', '' ],
[ '_sale_price_dates_from', '' ],
[ '_sale_price_dates_to', '' ],
[ '_sku', '' ],
[ '_stock', '0' ],
[ '_stock_status', 'instock' ],
[ '_thumbnail_id', '-1' ],
[ '_visibility', 'visible' ],
[ '_weight', '' ],
[ '_width', '' ],
[ '_wp_http_referer', '' ],
[ '_wp_original_http_referer', '' ],
[ '_wpnonce', `${ wpnonce }` ],
[ 'aa', '2021' ],
[ 'action', 'editpost' ],
[ 'attribute_taxonomy', '' ],
[ 'auto_draft', '' ],
[ 'closedpostboxesnonce', `${ closed_postboxes_nonce }` ],
[ 'comment_status', 'open' ],
[ 'content', '' ],
[ 'cur_aa', '2021' ],
[ 'cur_hh', '15' ],
[ 'cur_jj', '09' ],
[ 'cur_mm', '07' ],
[ 'cur_mn', '48' ],
[ 'current_featured', 'no' ],
[ 'current_visibility', 'visible' ],
[ 'excerpt', '' ],
[ 'hh', '15' ],
[ 'hidden_aa', '2021' ],
[ 'hidden_hh', '15' ],
[ 'hidden_jj', '09' ],
[ 'hidden_mm', '07' ],
[ 'hidden_mn', '48' ],
[ 'hidden_post_password', '' ],
[ 'hidden_post_status', 'draft' ],
[ 'hidden_post_visibility', 'public' ],
[ 'jj', '09' ],
[ 'menu_order', '0' ],
[ 'meta-box-order-nonce', `${ meta_box_order_nonce }` ],
[ 'metakeyinput', '' ],
[ 'metakeyselect', '%2523NONE%2523' ],
[ 'metavalue', '' ],
[ 'mm', '07' ],
[ 'mn', '48' ],
[ 'newproduct_cat', 'New%2520category%2520name' ],
[ 'newproduct_cat_parent', '-1' ],
[ 'newtag%255Bproduct_tag%255D', '' ],
[ 'original_post_status', 'auto-draft' ],
[ 'original_post_title', '' ],
[ 'original_publish', 'Publish' ],
[ 'originalaction', 'editpost' ],
[ 'post_ID', `${ post_id }` ],
[ 'post_author', '1' ],
[ 'post_name', '' ],
[ 'post_password', '' ],
[ 'post_status', 'draft' ],
[ 'post_title', `${ add_product_title }` ],
[ 'post_type', 'product' ],
[ 'product-type', 'simple' ],
[ 'product_image_gallery', '' ],
[ 'product_shipping_class', '-1' ],
[ 'publish', 'Publish' ],
[ 'referredby', '' ],
[ 'samplepermalinknonce', `${ sample_permalink_nonce }` ],
[ 'ss', '12' ],
[ 'tax_input%255Bproduct_cat%255D%255B%255D', '0' ],
[ 'tax_input%255Bproduct_tag%255D', '' ],
[ 'user_ID', '1' ],
[ 'visibility', 'public' ],
[ 'woocommerce_meta_nonce', `${ woocommerce_meta_nonce }` ],
[ 'wp-preview', '' ],
] );
response = http.post(
`${ base_url }/wp-admin/post.php`,
productParams.toString(),
{
headers: requestHeaders,
tags: { name: 'Merchant - Update New Product' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Edit product' header": ( response ) =>
response.body.includes( 'Edit product</h1>' ),
"body contains: 'Product published' confirmation": ( response ) =>
response.body.includes( 'Product published.' ),
} );
} );
}
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}

View File

@ -23,10 +23,18 @@ import {
commonNonStandardHeaders,
} from '../../headers.js';
export function homeWCAdmin() {
export function homeWCAdmin( includeTests = {} ) {
let response;
let api_x_wp_nonce;
let apiNonceHeader;
let includedTests = Object.assign( {
orders: true,
other: true,
products: true,
reviews: true,
},
includeTests
);
group( 'WC Home Page', function () {
const requestHeaders = Object.assign(
@ -62,123 +70,131 @@ export function homeWCAdmin() {
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
group( 'WC Admin - Other Requests', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
if ( includedTests.other ) {
group( 'WC Admin - Other Requests', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-admin/onboarding/tasks?_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-admin/onboarding/tasks?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
response = http.get(
`${ base_url }/wp-json/wc-admin/onboarding/tasks?_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-admin/onboarding/tasks?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
response = http.get(
`${ base_url }/wp-json/wc-analytics/admin/notes?page=1&per_page=25&` +
`type=error%2Cupdate&status=unactioned&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/admin/notes?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
response = http.get(
`${ base_url }/wp-json/wc-admin/options?options=woocommerce_ces_tracks_queue&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
}
response = http.get(
`${ base_url }/wp-json/wc-analytics/admin/notes?page=1&per_page=25&` +
`type=error%2Cupdate&status=unactioned&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/admin/notes?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
if ( includedTests.orders ) {
group( 'Orders Activity', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-analytics/orders?page=1&per_page=1&status%5B0%5D=processing&` +
`status%5B1%5D=on-hold&_fields%5B0%5D=id&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/orders?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
}
response = http.get(
`${ base_url }/wp-json/wc-admin/options?options=woocommerce_ces_tracks_queue&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
if ( includedTests.reviews ) {
group( 'Reviews Activity', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-analytics/products/reviews?page=1&per_page=1&status=hold&` +
`_embed=1&_fields%5B0%5D=id&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/products/reviews?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
} );
}
group( 'Orders Activity', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
if ( includedTests.products ) {
group( 'Products Activity', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-analytics/orders?page=1&per_page=1&status%5B0%5D=processing&` +
`status%5B1%5D=on-hold&_fields%5B0%5D=id&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/orders?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
response = http.get(
`${ base_url }/wp-json/wc-analytics/products/low-in-stock?page=1&per_page=1&` +
`low_in_stock=true&status=publish&_fields%5B0%5D=id&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-analytics/products/low-in-stock?',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
} );
group( 'Reviews Activity', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-analytics/products/reviews?page=1&per_page=1&status=hold&` +
`_embed=1&_fields%5B0%5D=id&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/products/reviews?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
group( 'Products Activity', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-analytics/products/low-in-stock?page=1&per_page=1&` +
`low_in_stock=true&status=publish&_fields%5B0%5D=id&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-analytics/products/low-in-stock?',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
}
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}

View File

@ -44,11 +44,18 @@ if ( cot_status === true ) {
admin_orders_completed = 'post_status=wc-completed';
}
export function orders() {
export function orders( includeTests = {} ) {
let response;
let api_x_wp_nonce;
let apiNonceHeader;
let heartbeat_nonce;
let includedTests = Object.assign( {
completed: true,
heartbeat: true,
other: true,
},
includeTests
);
group( 'All Orders', function () {
const requestHeaders = Object.assign(
@ -89,102 +96,108 @@ export function orders() {
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
group( 'All Orders - Other Requests', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
if ( includedTests.other ) {
group( 'All Orders - Other Requests', function () {
const requestHeaders = Object.assign(
{},
jsonAPIRequestHeader,
commonRequestHeaders,
commonAPIGetRequestHeaders,
apiNonceHeader,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-json/wc-admin/onboarding/tasks?_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-admin/onboarding/tasks?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
response = http.get(
`${ base_url }/wp-json/wc-admin/onboarding/tasks?_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-admin/onboarding/tasks?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
response = http.get(
`${ base_url }/wp-json/wc-analytics/admin/notes?page=1&per_page=25&` +
`type=error%2Cupdate&status=unactioned&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/admin/notes?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
response = http.get(
`${ base_url }/wp-json/wc-admin/options?options=woocommerce_ces_tracks_queue&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
}
if ( includedTests.heartbeat ) {
group( 'WP Admin Heartbeat', function () {
const requestHeaders = Object.assign(
{},
jsonRequestHeader,
commonRequestHeaders,
contentTypeRequestHeader,
commonPostRequestHeaders,
commonNonStandardHeaders
);
response = http.post(
`${ base_url }/wp-admin/admin-ajax.php`,
`_nonce=${ heartbeat_nonce }&action=heartbeat&has_focus=true&interval=15&screen_id=shop_order`,
{
headers: requestHeaders,
tags: { name: 'Merchant - action=heartbeat' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
response = http.get(
`${ base_url }/wp-json/wc-analytics/admin/notes?page=1&per_page=25&` +
`type=error%2Cupdate&status=unactioned&_locale=user`,
{
headers: requestHeaders,
tags: { name: 'Merchant - wc-analytics/admin/notes?' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}
if ( includedTests.completed ) {
group( 'Completed Orders', function () {
const requestHeaders = Object.assign(
{},
htmlRequestHeader,
commonRequestHeaders,
commonGetRequestHeaders,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-admin/${ admin_orders_base }&${ admin_orders_completed }`,
{
headers: requestHeaders,
tags: { name: 'Merchant - Completed Orders' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Orders' header": ( response ) =>
response.body.includes( 'Orders</h1>' ),
} );
} );
response = http.get(
`${ base_url }/wp-json/wc-admin/options?options=woocommerce_ces_tracks_queue&_locale=user`,
{
headers: requestHeaders,
tags: {
name: 'Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue',
},
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
group( 'WP Admin Heartbeat', function () {
const requestHeaders = Object.assign(
{},
jsonRequestHeader,
commonRequestHeaders,
contentTypeRequestHeader,
commonPostRequestHeaders,
commonNonStandardHeaders
);
response = http.post(
`${ base_url }/wp-admin/admin-ajax.php`,
`_nonce=${ heartbeat_nonce }&action=heartbeat&has_focus=true&interval=15&screen_id=shop_order`,
{
headers: requestHeaders,
tags: { name: 'Merchant - action=heartbeat' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
} );
} );
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
group( 'Completed Orders', function () {
const requestHeaders = Object.assign(
{},
htmlRequestHeader,
commonRequestHeaders,
commonGetRequestHeaders,
commonNonStandardHeaders
);
response = http.get(
`${ base_url }/wp-admin/${ admin_orders_base }&${ admin_orders_completed }`,
{
headers: requestHeaders,
tags: { name: 'Merchant - Completed Orders' },
}
);
check( response, {
'is status 200': ( r ) => r.status === 200,
"body contains: 'Orders' header": ( response ) =>
response.body.includes( 'Orders</h1>' ),
} );
} );
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
sleep( randomIntBetween( `${ think_time_min }`, `${ think_time_max }` ) );
}
}
export default function () {

View File

@ -0,0 +1,303 @@
/* eslint-disable eqeqeq */
/* eslint-disable no-undef */
/**
* Internal dependencies
*/
import { homePage } from '../requests/shopper/home.js';
import { shopPage } from '../requests/shopper/shop-page.js';
import { searchProduct } from '../requests/shopper/search-product.js';
import { singleProduct } from '../requests/shopper/single-product.js';
import { cart } from '../requests/shopper/cart.js';
import { cartRemoveItem } from '../requests/shopper/cart-remove-item.js';
import { cartApplyCoupon } from '../requests/shopper/cart-apply-coupon.js';
import { checkoutGuest } from '../requests/shopper/checkout-guest.js';
import { checkoutCustomerLogin } from '../requests/shopper/checkout-customer-login.js';
import { myAccountOrders } from '../requests/shopper/my-account-orders.js';
import { categoryPage } from '../requests/shopper/category-page.js';
import { coupons } from '../requests/merchant/coupons.js';
import { addProduct } from '../requests/merchant/add-product.js';
import { orders } from '../requests/merchant/orders.js';
import { ordersSearch } from '../requests/merchant/orders-search.js';
import { ordersFilter } from '../requests/merchant/orders-filter.js';
import { addOrder } from '../requests/merchant/add-order.js';
import { homeWCAdmin } from '../requests/merchant/home-wc-admin.js';
import { myAccountMerchantLogin } from '../requests/merchant/my-account-merchant.js';
import { wpLogin } from '../requests/merchant/wp-login.js';
import { ordersAPI } from '../requests/api/orders.js';
import { admin_acc_login } from '../config.js';
const shopper_request_threshold = 'p(95)<100000';
const merchant_request_threshold = 'p(95)<100000';
const api_request_threshold = 'p(95)<100000';
export const options = {
scenarios: {
merchantOrders: {
executor: 'ramping-arrival-rate',
startRate: 2, // starting iterations per timeUnit
timeUnit: '10s',
preAllocatedVUs: 5,
maxVUs: 9,
stages: [
// target value is iterations per timeUnit
{ target: 2, duration: '60s' },
{ target: 5, duration: '500s' },
{ target: 1, duration: '60' },
],
exec: 'merchantOrderFlows',
},
merchantOther: {
executor: 'ramping-arrival-rate',
startRate: 2, // starting iterations per timeUnit
timeUnit: '10s',
preAllocatedVUs: 5,
maxVUs: 9,
stages: [
// target value is iterations per timeUnit
{ target: 2, duration: '60s' },
{ target: 5, duration: '500s' },
{ target: 1, duration: '60' },
],
exec: 'merchantOtherFlows',
},
shopperBrowsing: {
executor: 'ramping-arrival-rate',
startRate: 2, // starting iterations per timeUnit
timeUnit: '10s',
preAllocatedVUs: 5,
maxVUs: 9,
stages: [
// target value is iterations per timeUnit
{ target: 2, duration: '60s' },
{ target: 10, duration: '500s' },
{ target: 1, duration: '60' },
],
exec: 'shopperBrowsingFlows',
},
shopperGuestCheckouts: {
executor: 'ramping-arrival-rate',
startRate: 2, // starting iterations per timeUnit
timeUnit: '10s',
preAllocatedVUs: 5,
maxVUs: 9,
stages: [
// target value is iterations per timeUnit
{ target: 2, duration: '60s' },
{ target: 5, duration: '500s' },
{ target: 1, duration: '60' },
],
exec: 'checkoutGuestFlow',
},
shopperCustomerCheckouts: {
executor: 'ramping-arrival-rate',
startRate: 2, // starting iterations per timeUnit
timeUnit: '10s',
preAllocatedVUs: 5,
maxVUs: 9,
stages: [
// target value is iterations per timeUnit
{ target: 2, duration: '60s' },
{ target: 5, duration: '500s' },
{ target: 1, duration: '60' },
],
exec: 'checkoutCustomerLoginFlow',
},
apiBackground: {
executor: 'ramping-arrival-rate',
startRate: 1, // starting iterations per timeUnit
timeUnit: '10s',
preAllocatedVUs: 5,
maxVUs: 5,
stages: [
// target value is iterations per timeUnit
{ target: 1, duration: '60s' },
{ target: 5, duration: '500s' },
{ target: 1, duration: '60' },
],
exec: 'allAPIFlow',
},
},
thresholds: {
// Listing individual metrics due to https://github.com/grafana/k6/issues/1321
'http_req_duration{name:Shopper - Site Root}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Shop Page}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Search Products}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Category Page}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Product Page}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - wc-ajax=add_to_cart}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - View Cart}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Remove Item From Cart}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - wc-ajax=apply_coupon}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Update Cart}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - View Checkout}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - wc-ajax=update_order_review}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - wc-ajax=checkout}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Order Received}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - wc-ajax=get_refreshed_fragments}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Login to Checkout}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - My Account Login Page}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - Login to My Account}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - My Account}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - My Account Orders}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Shopper - My Account Open Order}': [
`${ shopper_request_threshold }`,
],
'http_req_duration{name:Merchant - WP Login Page}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Login to WP Admin}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - WC-Admin}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - wc-analytics/orders?}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - All Orders}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Completed Orders}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - New Order Page}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Create New Order}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Open Order}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Update Existing Order Status}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Search Orders By Product}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Search Orders By Customer Email}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Search Orders By Customer Address}':
[ `${ merchant_request_threshold }` ],
'http_req_duration{name:Merchant - Filter Orders By Month}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Filter Orders By Customer}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - All Products}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Add New Product}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:Merchant - Update New Product}': [
`${ merchant_request_threshold }`,
],
'http_req_duration{name:API - Create Order}': [
`${ api_request_threshold }`,
],
'http_req_duration{name:API - Retrieve Order}': [
`${ api_request_threshold }`,
],
'http_req_duration{name:API - Update Order (Status)}': [
`${ api_request_threshold }`,
],
'http_req_duration{name:API - Delete Order}': [
`${ api_request_threshold }`,
],
'http_req_duration{name:API - Batch Create Orders}': [
`${ api_request_threshold }`,
],
'http_req_duration{name:API - Batch Update (Status) Orders}': [
`${ api_request_threshold }`,
],
},
};
// Use myAccountMerchantLogin() instead of wpLogin() if having issues with login.
export function merchantOrderFlows() {
if ( admin_acc_login === true ) {
myAccountMerchantLogin();
} else {
wpLogin();
}
addOrder( { heartbeat: false, other: false } );
orders( { heartbeat: false, other: false } );
ordersSearch();
ordersFilter();
}
// Use myAccountMerchantLogin() instead of wpLogin() if having issues with login.
export function merchantOtherFlows() {
if ( admin_acc_login === true ) {
myAccountMerchantLogin();
} else {
wpLogin();
}
homeWCAdmin( { other: false, products: false, reviews: false } );
addProduct( { heartbeat: false, other: false, permalink: false, update: false } );
coupons();
}
export function shopperBrowsingFlows() {
homePage();
shopPage();
searchProduct();
singleProduct();
cartRemoveItem();
cartApplyCoupon();
categoryPage();
}
export function checkoutGuestFlow() {
cart();
checkoutGuest();
}
export function checkoutCustomerLoginFlow() {
cart();
checkoutCustomerLogin();
myAccountOrders();
}
export function allAPIFlow() {
ordersAPI();
}