Add k6 release regression test (#37146)
* Added test scenario for release regression testing
This commit is contained in:
parent
af24637439
commit
5019a344a1
|
@ -0,0 +1,5 @@
|
||||||
|
Significance: patch
|
||||||
|
Type: add
|
||||||
|
Comment: Perf test not included in release
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,330 @@
|
||||||
|
/* 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 { products } from '../requests/merchant/products.js';
|
||||||
|
import { addProduct } from '../requests/merchant/add-product.js';
|
||||||
|
import { coupons } from '../requests/merchant/coupons.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: '20s',
|
||||||
|
preAllocatedVUs: 5,
|
||||||
|
maxVUs: 9,
|
||||||
|
stages: [
|
||||||
|
// target value is iterations per timeUnit
|
||||||
|
{ target: 1, duration: '60s' },
|
||||||
|
{ target: 2, duration: '500s' },
|
||||||
|
{ target: 1, duration: '60' },
|
||||||
|
],
|
||||||
|
exec: 'merchantOrderFlows',
|
||||||
|
},
|
||||||
|
merchantOther: {
|
||||||
|
executor: 'ramping-arrival-rate',
|
||||||
|
startRate: 2, // starting iterations per timeUnit
|
||||||
|
timeUnit: '20s',
|
||||||
|
preAllocatedVUs: 5,
|
||||||
|
maxVUs: 9,
|
||||||
|
stages: [
|
||||||
|
// target value is iterations per timeUnit
|
||||||
|
{ target: 1, duration: '60s' },
|
||||||
|
{ target: 2, 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: '20s',
|
||||||
|
preAllocatedVUs: 5,
|
||||||
|
maxVUs: 9,
|
||||||
|
stages: [
|
||||||
|
// target value is iterations per timeUnit
|
||||||
|
{ target: 1, duration: '60s' },
|
||||||
|
{ target: 2, duration: '500s' },
|
||||||
|
{ target: 1, duration: '60' },
|
||||||
|
],
|
||||||
|
exec: 'checkoutGuestFlow',
|
||||||
|
},
|
||||||
|
shopperCustomerCheckouts: {
|
||||||
|
executor: 'ramping-arrival-rate',
|
||||||
|
startRate: 2, // starting iterations per timeUnit
|
||||||
|
timeUnit: '20s',
|
||||||
|
preAllocatedVUs: 5,
|
||||||
|
maxVUs: 9,
|
||||||
|
stages: [
|
||||||
|
// target value is iterations per timeUnit
|
||||||
|
{ target: 1, duration: '60s' },
|
||||||
|
{ target: 2, duration: '500s' },
|
||||||
|
{ target: 1, duration: '60' },
|
||||||
|
],
|
||||||
|
exec: 'checkoutCustomerLoginFlow',
|
||||||
|
},
|
||||||
|
apiBackground: {
|
||||||
|
executor: 'ramping-arrival-rate',
|
||||||
|
startRate: 1, // starting iterations per timeUnit
|
||||||
|
timeUnit: '30s',
|
||||||
|
preAllocatedVUs: 5,
|
||||||
|
maxVUs: 5,
|
||||||
|
stages: [
|
||||||
|
// target value is iterations per timeUnit
|
||||||
|
{ target: 1, duration: '60s' },
|
||||||
|
{ target: 2, 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 - wc-analytics/products/reviews?}': [
|
||||||
|
`${ merchant_request_threshold }`,
|
||||||
|
],
|
||||||
|
'http_req_duration{name:Merchant - wc-analytics/products/low-in-stock?}':
|
||||||
|
[ `${ 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 - action=sample-permalink}': [
|
||||||
|
`${ merchant_request_threshold }`,
|
||||||
|
],
|
||||||
|
'http_req_duration{name:Merchant - action=heartbeat autosave}': [
|
||||||
|
`${ merchant_request_threshold }`,
|
||||||
|
],
|
||||||
|
'http_req_duration{name:Merchant - Update New Product}': [
|
||||||
|
`${ merchant_request_threshold }`,
|
||||||
|
],
|
||||||
|
'http_req_duration{name:Merchant - Coupons}': [
|
||||||
|
`${ merchant_request_threshold }`,
|
||||||
|
],
|
||||||
|
'http_req_duration{name:Merchant - wc-admin/onboarding/tasks?}': [
|
||||||
|
`${ merchant_request_threshold }`,
|
||||||
|
],
|
||||||
|
'http_req_duration{name:Merchant - wc-analytics/admin/notes?}': [
|
||||||
|
`${ merchant_request_threshold }`,
|
||||||
|
],
|
||||||
|
'http_req_duration{name:Merchant - wc-admin/options?options=woocommerce_ces_tracks_queue}':
|
||||||
|
[ `${ merchant_request_threshold }` ],
|
||||||
|
'http_req_duration{name:Merchant - action=heartbeat}': [
|
||||||
|
`${ 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();
|
||||||
|
orders();
|
||||||
|
ordersSearch();
|
||||||
|
ordersFilter();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use myAccountMerchantLogin() instead of wpLogin() if having issues with login.
|
||||||
|
export function merchantOtherFlows() {
|
||||||
|
if ( admin_acc_login === true ) {
|
||||||
|
myAccountMerchantLogin();
|
||||||
|
} else {
|
||||||
|
wpLogin();
|
||||||
|
}
|
||||||
|
homeWCAdmin();
|
||||||
|
addProduct();
|
||||||
|
products();
|
||||||
|
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();
|
||||||
|
}
|
Loading…
Reference in New Issue