From 81b49b0803fc28487919515d07cdeac60ad7679d Mon Sep 17 00:00:00 2001 From: Alexandre Geffray Date: Mon, 3 Feb 2020 15:49:34 +0100 Subject: [PATCH 01/10] Update Collection.php --- .../Sales/Model/ResourceModel/Order/Customer/Collection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Sales/Model/ResourceModel/Order/Customer/Collection.php b/app/code/Magento/Sales/Model/ResourceModel/Order/Customer/Collection.php index 2cccb34fc349e..ae6d3e8e48475 100644 --- a/app/code/Magento/Sales/Model/ResourceModel/Order/Customer/Collection.php +++ b/app/code/Magento/Sales/Model/ResourceModel/Order/Customer/Collection.php @@ -38,7 +38,7 @@ protected function _initSelect() null, 'left' )->joinAttribute( - 'billing_regione', + 'billing_region', 'customer_address/region', 'default_billing', null, From 6185a0181efcdd05cef680b19433571116a327dd Mon Sep 17 00:00:00 2001 From: Alexandre Geffray Date: Mon, 3 Feb 2020 15:50:43 +0100 Subject: [PATCH 02/10] Update sales_order_create_customer_block.xml --- .../adminhtml/layout/sales_order_create_customer_block.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml index fe2cb7e01b727..59b7b0c146c29 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml @@ -67,10 +67,10 @@ country - + State/Province - billing_regione + billing_region From 4d7f6f4d9a200f0972f4c098478647e06339a967 Mon Sep 17 00:00:00 2001 From: alexandre Date: Mon, 3 Feb 2020 16:35:12 +0100 Subject: [PATCH 03/10] rename regione on benchmark.jmx --- setup/performance-toolkit/benchmark.jmx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup/performance-toolkit/benchmark.jmx b/setup/performance-toolkit/benchmark.jmx index 7db2b26e3c621..109d32ad05b4a 100644 --- a/setup/performance-toolkit/benchmark.jmx +++ b/setup/performance-toolkit/benchmark.jmx @@ -25113,9 +25113,9 @@ catch (java.lang.Exception e) { = true - + true - billing_regione + billing_region = true @@ -66040,9 +66040,9 @@ catch (java.lang.Exception e) { = true - + true - billing_regione + billing_region = true From d97a0039d218155a95e3de3b12647efba8ababb9 Mon Sep 17 00:00:00 2001 From: engcom-Echo Date: Mon, 13 Apr 2020 17:00:49 +0300 Subject: [PATCH 04/10] Add integration test --- .../Order/Customer/CollectionTest.php | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php diff --git a/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php b/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php new file mode 100644 index 0000000000000..9b113912e321e --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php @@ -0,0 +1,61 @@ +collection = $objectManager->get(Collection::class); + } + + /** + * Attribute presence test + * + * @magentoDataFixture Magento/Customer/_files/customer.php + * @magentoDataFixture Magento/Customer/_files/customer_address.php + * @dataProvider joinAttribute + * @param string $attribute + * @return void + */ + public function testAttributePresent($attribute): void + { + $customers = $this->collection->getItems(); + foreach ($customers as $customer) { + $this->assertNotEmpty($customer->getData($attribute), "Attribute '$attribute' does not present"); + } + } + + /** + * Attribute data provider + * + * @return array + */ + public function joinAttribute():array + { + return [ + ['billing_postcode'], + ['billing_city'], + ['billing_telephone'], + ['billing_region'], + ['billing_country_id'] + ]; + } +} From 48855f73a9296aea1efbcdd0ad499a3688883a2f Mon Sep 17 00:00:00 2001 From: engcom-Echo Date: Tue, 14 Apr 2020 08:28:22 +0300 Subject: [PATCH 05/10] Fix static --- .../Sales/Model/ResourceModel/Order/Customer/Collection.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/code/Magento/Sales/Model/ResourceModel/Order/Customer/Collection.php b/app/code/Magento/Sales/Model/ResourceModel/Order/Customer/Collection.php index ae6d3e8e48475..df65ab57e88d2 100644 --- a/app/code/Magento/Sales/Model/ResourceModel/Order/Customer/Collection.php +++ b/app/code/Magento/Sales/Model/ResourceModel/Order/Customer/Collection.php @@ -7,9 +7,14 @@ */ namespace Magento\Sales\Model\ResourceModel\Order\Customer; +/** + * Customer collection + */ class Collection extends \Magento\Customer\Model\ResourceModel\Customer\Collection { /** + * @inheritDoc + * * @return $this */ protected function _initSelect() From c76cbf7588ca5249a75b8ceacfcad92cec73fce3 Mon Sep 17 00:00:00 2001 From: Andrii Kalinich <51681435+engcom-Echo@users.noreply.github.com> Date: Mon, 4 May 2020 08:42:29 +0300 Subject: [PATCH 06/10] Update dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php Co-authored-by: Yaroslav Rogoza --- .../Sales/Model/ResourceModel/Order/Customer/CollectionTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php b/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php index 9b113912e321e..bc04e476b8543 100644 --- a/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php +++ b/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php @@ -39,7 +39,7 @@ public function testAttributePresent($attribute): void { $customers = $this->collection->getItems(); foreach ($customers as $customer) { - $this->assertNotEmpty($customer->getData($attribute), "Attribute '$attribute' does not present"); + $this->assertNotEmpty($customer->getData($attribute), "Attribute '$attribute' is not present"); } } From b214d8482aebb809d8316d79ce40055278c0c540 Mon Sep 17 00:00:00 2001 From: Vadim Malesh <51680850+engcom-Charlie@users.noreply.github.com> Date: Wed, 7 Oct 2020 10:45:07 +0300 Subject: [PATCH 07/10] fix requested changes Co-authored-by: Gabriel da Gama --- .../view/adminhtml/layout/sales_order_create_customer_block.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml index 59b7b0c146c29..c67fc7bbc151e 100644 --- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml +++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml @@ -67,7 +67,7 @@ country - + State/Province billing_region From 2f7ce98fd8ec5aee5c0b3d440449fb0b0377d0e7 Mon Sep 17 00:00:00 2001 From: Vadim Malesh <51680850+engcom-Charlie@users.noreply.github.com> Date: Fri, 9 Oct 2020 10:58:12 +0300 Subject: [PATCH 08/10] fix integration test --- .../Sales/Model/ResourceModel/Order/Customer/CollectionTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php b/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php index bc04e476b8543..ac13d38632e55 100644 --- a/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php +++ b/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php @@ -20,7 +20,7 @@ class CollectionTest extends TestCase /** * @inheritDoc */ - public function setUp() + public function setUp(): void { $objectManager = Bootstrap::getObjectManager(); $this->collection = $objectManager->get(Collection::class); From e4b3c8f0cee804d72e178fd9036fbca5f4b12155 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 20 Jun 2023 11:01:58 +0200 Subject: [PATCH 09/10] Fix conflict --- setup/performance-toolkit/benchmark.jmx | 71785 ---------------------- 1 file changed, 71785 deletions(-) delete mode 100644 setup/performance-toolkit/benchmark.jmx diff --git a/setup/performance-toolkit/benchmark.jmx b/setup/performance-toolkit/benchmark.jmx deleted file mode 100644 index f442e4e783efd..0000000000000 --- a/setup/performance-toolkit/benchmark.jmx +++ /dev/null @@ -1,71785 +0,0 @@ - - - - - - - false - false - - - - - host - ${__P(host,localhost)} - = - - - base_path - ${__P(base_path,/)} - = - - - files_folder - ${__P(files_folder,./files/)} - = - - - request_protocol - ${__P(request_protocol,http)} - = - - - graphql_port_number - ${__P(graphql_port_number,)} - = - - - admin_password - ${__P(admin_password,123123q)} - = - - - admin_path - ${__P(admin_path,admin)} - = - - - admin_user - ${__P(admin_user,admin)} - = - - - cache_hits_percentage - ${__P(cache_hits_percentage,100)} - = - - - seedForRandom - ${__P(seedForRandom,1)} - = - - - loops - ${__P(loops,1)} - = - - - frontendPoolUsers - ${__P(frontendPoolUsers,0)} - = - - - adminPoolUsers - ${__P(adminPoolUsers,0)} - = - - - csrPoolUsers - ${__P(csrPoolUsers,0)} - = - - - apiPoolUsers - ${__P(apiPoolUsers,0)} - = - - - oneThreadScenariosPoolUsers - ${__P(oneThreadScenariosPoolUsers,0)} - = - - - graphQLPoolUsers - ${__P(graphQLPoolUsers,0)} - = - - - combinedBenchmarkPoolUsers - ${__P(combinedBenchmarkPoolUsers,0)} - = - - - accountManagementPercentage - ${__P(accountManagementPercentage,0)} - = - - - addToCartByCustomerPercentage - ${__P(addToCartByCustomerPercentage,0)} - = - - - addToCartByGuestPercentage - ${__P(addToCartByGuestPercentage,0)} - = - - - addToWishlistPercentage - ${__P(addToWishlistPercentage,0)} - = - - - adminCMSManagementDelay - ${__P(adminCMSManagementDelay,0)} - = - - - adminCMSManagementPercentage - ${__P(adminCMSManagementPercentage,0)} - = - - - adminCategoryCount - ${__P(adminCategoryCount,0)} - = - - - adminCategoryManagementDelay - ${__P(adminCategoryManagementDelay,0)} - = - - - adminCategoryManagementPercentage - ${__P(adminCategoryManagementPercentage,0)} - = - - - adminCreateOrderPercentage - ${__P(adminCreateOrderPercentage,0)} - = - - - adminCreateProcessReturns - ${__P(adminCreateProcessReturns,0)} - = - - - adminCreateProcessReturnsDelay - ${__P(adminCreateProcessReturnsDelay,0)} - = - - - adminCustomerManagementDelay - ${__P(adminCustomerManagementDelay,0)} - = - - - adminCustomerManagementPercentage - ${__P(adminCustomerManagementPercentage,0)} - = - - - adminEditOrderPercentage - ${__P(adminEditOrderPercentage,0)} - = - - - adminImportCustomerBehavior - ${__P(adminImportCustomerBehavior,append)} - = - - - adminImportCustomerFilePath - ${__P(adminImportCustomerFilePath,import_customers/customer_import_addupdate.csv)} - = - - - adminImportProductBehavior - ${__P(adminImportProductBehavior,append)} - = - - - adminImportProductFilePath - ${__P(adminImportProductFilePath,import_products/product_import_append_1.csv)} - = - - - adminProductCreationPercentage - ${__P(adminProductCreationPercentage,0)} - = - - - adminProductEditingPercentage - ${__P(adminProductEditingPercentage,0)} - = - - - adminPromotionRulesPercentage - ${__P(adminPromotionRulesPercentage,0)} - = - - - adminPromotionsManagement - ${__P(adminPromotionsManagement,0)} - = - - - adminPromotionsManagementDelay - ${__P(adminPromotionsManagementDelay,0)} - = - - - adminReturnsManagementPercentage - ${__P(adminReturnsManagementPercentage,0)} - = - - - admin_browse_customer_filter_text - ${__P(admin_browse_customer_filter_text,Firstname)} - = - - - admin_browse_orders_filter_text - ${__P(admin_browse_orders_filter_text,pending)} - = - - - admin_browse_product_filter_text - ${__P(admin_browse_product_filter_text,Product)} - = - - - admin_users_distribution_per_admin_pool - ${__P(admin_users_distribution_per_admin_pool,1)} - = - - - apiBasePercentage - ${__P(apiBasePercentage,0)} - = - - - apiOrderInvoiceShipmentSync - ${__P(apiOrderInvoiceShipmentSync,0)} - = - - - apiProcessOrders - ${__P(apiProcessOrders,1)} - = - - - apiSinglePercentage - ${__P(apiSinglePercentage,0)} - = - - - bamboo_build_number - ${__P(bamboo_build_number,)} - = - - - browseCatalogByCustomerPercentage - ${__P(browseCatalogByCustomerPercentage,0)} - = - - - browseCatalogByGuestPercentage - ${__P(browseCatalogByGuestPercentage,0)} - = - - - browseCustomerGridPercentage - ${__P(browseCustomerGridPercentage,0)} - = - - - browseOrderGridPercentage - ${__P(browseOrderGridPercentage,0)} - = - - - browseProductGridPercentage - ${__P(browseProductGridPercentage,0)} - = - - - cAccountManagementPercentage - ${__P(cAccountManagementPercentage,1)} - = - - - cAddToCartByGuestPercentage - ${__P(cAddToCartByGuestPercentage,26)} - = - - - cAddToWishlistPercentage - ${__P(cAddToWishlistPercentage,1.5)} - = - - - cAdminBrowseCustomerGridPercentage - ${__P(cAdminBrowseCustomerGridPercentage,0.1)} - = - - - cAdminBrowseOrderGridPercentage - ${__P(cAdminBrowseOrderGridPercentage,0.2)} - = - - - cAdminBrowseProductGridPercentage - ${__P(cAdminBrowseProductGridPercentage,0.2)} - = - - - cAdminCMSManagementPercentage - ${__P(cAdminCMSManagementPercentage,0.35)} - = - - - cAdminCategoryManagementPercentage - ${__P(cAdminCategoryManagementPercentage,0.15)} - = - - - cAdminCreateOrderPercentage - ${__P(cAdminCreateOrderPercentage,0.5)} - = - - - cAdminCustomerManagementPercentage - ${__P(cAdminCustomerManagementPercentage,0.4)} - = - - - cAdminEditOrderPercentage - ${__P(cAdminEditOrderPercentage,1)} - = - - - cAdminProductCreationPercentage - ${__P(cAdminProductCreationPercentage,0.5)} - = - - - cAdminProductEditingPercentage - ${__P(cAdminProductEditingPercentage,0.65)} - = - - - cAdminPromotionRulesPercentage - ${__P(cAdminPromotionRulesPercentage,0.2)} - = - - - cAdminReturnsManagementPercentage - ${__P(cAdminReturnsManagementPercentage,0.75)} - = - - - cBrowseCatalogByGuestPercentage - ${__P(cBrowseCatalogByGuestPercentage,29)} - = - - - cCheckoutByCustomerPercentage - ${__P(cCheckoutByCustomerPercentage,3.5)} - = - - - cCheckoutByGuestPercentage - ${__P(cCheckoutByGuestPercentage,3.5)} - = - - - cCompareProductsPercentage - ${__P(cCompareProductsPercentage,1.5)} - = - - - cSiteSearchPercentage - ${__P(cSiteSearchPercentage,29)} - = - - - catalogGraphQLPercentage - ${__P(catalogGraphQLPercentage,0)} - = - - - categories_count - ${__P(categories_count,100)} - = - - - checkoutByCustomerPercentage - ${__P(checkoutByCustomerPercentage,0)} - = - - - checkoutByGuestPercentage - ${__P(checkoutByGuestPercentage,0)} - = - - - compareProductsPercentage - ${__P(compareProductsPercentage,0)} - = - - - configurable_products_count - ${__P(configurable_products_count,15)} - = - - - customer_checkout_percent - ${__P(customer_checkout_percent,100)} - = - - - customer_password - ${__P(customer_password,123123q)} - = - - - customers_page_size - ${__P(customers_page_size,100)} - = - - - dashboard_enabled - ${__P(dashboard_enabled,0)} - = - - - exportCustomersPercentage - ${__P(exportCustomersPercentage,0)} - = - - - exportProductsPercentage - ${__P(exportProductsPercentage,0)} - = - - - form_key - ${__P(form_key,uVEW54r8kKday8Wk)} - = - - - graphqlAddConfigurableProductToCartPercentage - ${__P(graphqlAddConfigurableProductToCartPercentage,0)} - = - - - graphqlAddSimpleProductToCartPercentage - ${__P(graphqlAddSimpleProductToCartPercentage,0)} - = - - - graphqlApplyCouponToCartPercentage - ${__P(graphqlApplyCouponToCartPercentage,0)} - = - - - graphqlCatalogBrowsingByGuestPercentage - ${__P(graphqlCatalogBrowsingByGuestPercentage,0)} - = - - - graphqlCheckoutByGuestPercentage - ${__P(graphqlCheckoutByGuestPercentage,0)} - = - - - graphqlCreateEmptyCartPercentage - ${__P(graphqlCreateEmptyCartPercentage,0)} - = - - - graphqlGetCategoryListByCategoryIdPercentage - ${__P(graphqlGetCategoryListByCategoryIdPercentage,0)} - = - - - graphqlGetCmsPageByIdPercentage - ${__P(graphqlGetCmsPageByIdPercentage,0)} - = - - - graphqlGetCmsPageWithPageBuilderProductListPercentage - ${__P(graphqlGetCmsPageWithPageBuilderProductListPercentage,0)} - = - - - graphqlGetConfigurableProductDetailsByNamePercentage - ${__P(graphqlGetConfigurableProductDetailsByNamePercentage,0)} - = - - - graphqlGetConfigurableProductDetailsByProductUrlKeyPercentage - ${__P(graphqlGetConfigurableProductDetailsByProductUrlKeyPercentage,0)} - = - - - graphqlGetEmptyCartPercentage - ${__P(graphqlGetEmptyCartPercentage,0)} - = - - - graphqlGetListOfProductsByCategoryIdPercentage - ${__P(graphqlGetListOfProductsByCategoryIdPercentage,0)} - = - - - graphqlGetNavigationMenuByCategoryIdPercentage - ${__P(graphqlGetNavigationMenuByCategoryIdPercentage,0)} - = - - - graphqlGetProductSearchByTextAndCategoryIdPercentage - ${__P(graphqlGetProductSearchByTextAndCategoryIdPercentage,0)} - = - - - graphqlGetSimpleProductDetailsByNamePercentage - ${__P(graphqlGetSimpleProductDetailsByNamePercentage,0)} - = - - - graphqlGetSimpleProductDetailsByProductUrlKeyPercentage - ${__P(graphqlGetSimpleProductDetailsByProductUrlKeyPercentage,0)} - = - - - graphqlRemoveConfigurableProductFromCartPercentage - ${__P(graphqlRemoveConfigurableProductFromCartPercentage,0)} - = - - - graphqlRemoveCouponFromCartPercentage - ${__P(graphqlRemoveCouponFromCartPercentage,0)} - = - - - graphqlRemoveSimpleProductFromCartPercentage - ${__P(graphqlRemoveSimpleProductFromCartPercentage,0)} - = - - - graphqlSetBillingAddressOnCartPercentage - ${__P(graphqlSetBillingAddressOnCartPercentage,0)} - = - - - graphqlSetShippingAddressOnCartPercentage - ${__P(graphqlSetShippingAddressOnCartPercentage,0)} - = - - - graphqlUpdateConfigurableProductQtyInCartPercentage - ${__P(graphqlUpdateConfigurableProductQtyInCartPercentage,0)} - = - - - graphqlUpdateConfigurableProductQtyInCartWithPricesPercentage - ${__P(graphqlUpdateConfigurableProductQtyInCartWithPricesPercentage,0)} - = - - - graphqlUpdateSimpleProductQtyInCartPercentage - ${__P(graphqlUpdateSimpleProductQtyInCartPercentage,0)} - = - - - graphqlUpdateSimpleProductQtyInCartWithPricesPercentage - ${__P(graphqlUpdateSimpleProductQtyInCartWithPricesPercentage,0)} - = - - - graphqlUrlInfoByUrlKeyPercentage - ${__P(graphqlUrlInfoByUrlKeyPercentage,0)} - = - - - guest_checkout_percent - ${__P(guest_checkout_percent,100)} - = - - - importCustomersPercentage - ${__P(importCustomersPercentage,0)} - = - - - importProductsPercentage - ${__P(importProductsPercentage,0)} - = - - - lineItemsAmount - ${__P(lineItemsAmount,10)} - = - - - orders_page_size - ${__P(orders_page_size,20)} - = - - - productCompareDelay - ${__P(productCompareDelay,0)} - = - - - productGridMassActionPercentage - ${__P(productGridMassActionPercentage,0)} - = - - - products_page_size - ${__P(products_page_size,20)} - = - - - ramp_period - ${__P(ramp_period,0)} - = - - - redis_host - ${__P(redis_host,)} - = - - - report_save_path - ${__P(report_save_path,./)} - = - - - response_time_file_name - ${__P(response_time_file_name,production.csv)} - = - - - reviewByCustomerPercentage - ${__P(reviewByCustomerPercentage,0)} - = - - - reviewDelay - ${__P(reviewDelay,0)} - = - - - scenario - ${__P(scenario,)} - = - - - searchAdvancedPercentage - ${__P(searchAdvancedPercentage,10)} - = - - - searchQuickFilterPercentage - ${__P(searchQuickFilterPercentage,30)} - = - - - searchQuickPercentage - ${__P(searchQuickPercentage,60)} - = - - - simple_products_count - ${__P(simple_products_count,30)} - = - - - siteSearchPercentage - ${__P(siteSearchPercentage,0)} - = - - - sprint_identifier - ${__P(sprint_identifier,)} - = - - - start_time - ${__P(start_time,${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)})} - = - - - starting_index - ${__P(starting_index,0)} - = - - - think_time_delay_offset - ${__P(think_time_delay_offset,2000)} - = - - - think_time_deviation - ${__P(think_time_deviation,1000)} - = - - - url_suffix - ${__P(url_suffix,.html)} - = - - - website_id - ${__P(website_id,1)} - = - - - wishlistDelay - ${__P(wishlistDelay,0)} - = - - - - - - - false - - - - true - true - true - - true - true - true - true - false - true - true - false - false - true - false - false - true - false - false - 0 - true - true - true - true - - - - mpaf/tool/fragments/ce/view_results_tree.jmx - - - - false - - saveConfig - - - true - true - true - - true - true - true - true - false - true - true - false - false - false - true - false - false - false - true - 0 - true - true - true - - - /tmp/aggregate-jmeter-results.jtl - mpaf/tool/fragments/ce/aggregate_report.jmx - - - - - - - ${host} - - 60000 - 200000 - ${request_protocol} - utf-8 - - Java - 4 - mpaf/tool/fragments/ce/http_request_default.jmx - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - application/json,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - mpaf/tool/fragments/ce/http_header_manager.jmx - - - - stoptest - - false - 1 - - 1 - 1 - 1384333221000 - 1384333221000 - false - - - mpaf/tool/fragments/ce/setup/setup.jmx - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - -props.remove("category_url_key"); -props.remove("category_url_keys_list"); -props.remove("category_name"); -props.remove("category_names_list"); -props.remove("simple_products_list"); -props.remove("simple_products_list_for_edit"); -props.remove("configurable_products_list"); -props.remove("configurable_products_list_for_edit"); -props.remove("users"); -props.remove("customer_emails_list"); -props.remove("categories"); -props.remove("cms_pages"); -props.remove("cms_blocks"); -props.remove("coupon_codes"); - -/* This is only used when admin is enabled. */ -props.put("activeAdminThread", ""); - -/* Set the environment - at this time '01' or '02' */ -String path = "${host}"; -String environment = path.substring(4, 6); -props.put("environment", environment); - - - false - mpaf/tool/fragments/ce/setup/initialize.jmx - - - - Boolean stopTestOnError (String error) { - log.error(error); - System.out.println(error); - SampleResult.setStopTest(true); - return false; -} - -if ("${host}" == "1") { - return stopTestOnError("\"host\" parameter is not defined. Please define host parameter as: \"-Jhost=example.com\""); -} - -String path = "${base_path}"; -String slash = "/"; -if (!slash.equals(path.substring(path.length() -1)) || !slash.equals(path.substring(0, 1))) { - return stopTestOnError("\"base_path\" parameter is invalid. It must start and end with \"/\""); -} - - - - false - mpaf/tool/fragments/ce/setup/validate_user_defined_variables.jmx - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path} - GET - true - false - true - false - false - - - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/setup/login.jmx - - - - - <title>Dashboard / Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - - - mpaf/tool/fragments/ce/setup/extract_admin_users.jmx - - - - - - - false - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/user/roleGrid/limit/200/?ajax=true&isAjax=true - POST - true - false - true - false - false - - - - - - - false - import java.util.regex.Pattern; - import java.util.regex.Matcher; - import java.util.LinkedList; - - LinkedList adminUserList = new LinkedList(); - String response = new String(data); - Pattern pattern = Pattern.compile("<td\\W*?data-column=.username[^>]*?>\\W*?(\\w+)\\W*?<"); - Matcher matcher = pattern.matcher(response); - - while (matcher.find()) { - adminUserList.add(matcher.group(1)); - } - - adminUserList.poll(); - props.put("adminUserList", adminUserList); - props.put("adminUserListIterator", adminUserList.descendingIterator()); - - - - - - - - mpaf/tool/fragments/ce/setup/extract_customers.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/customer/index/ - GET - true - false - true - false - false - - - - - - - true - import org.apache.jmeter.protocol.http.control.CookieManager; -import org.apache.jmeter.protocol.http.control.Cookie; -CookieManager manager = sampler.getCookieManager(); -Cookie cookie = new Cookie("adminhtml",vars.get("COOKIE_adminhtml"),vars.get("host"),"/",false,0); -manager.add(cookie); - - - - - Customers - <title>Customers / Customers / Magento Admin</title> - - Assertion.response_data - false - 2 - - - - - - - - true - customer_listing - = - true - namespace - - - true - entity_id - = - true - sorting[field] - - - true - asc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - true - customer_since[locale]=en_US - = - true - filters[placeholder] - - - true - 1 - = - true - filters[group_id] - - - true - 1 - = - true - filters[website_id] - - - true - ${customers_page_size} - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - entity_id - = - true - sorting[field] - - - true - asc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - $.totalRecords - 0 - true - false - true - true - - - - customer_emails - $.items[*].email - - - BODY - - - - customer_ids - $.items[*].entity_id - - - BODY - - - - false - - - import java.util.LinkedList; -LinkedList emailsList = new LinkedList(); -props.put("customer_emails_list", emailsList); - - - - - customer_emails - customer_email - true - - - - 1 - - 1 - email_counter - - false - - - - -try { - -props.get("customer_emails_list").add(vars.get("customer_email")); - -} catch (java.lang.Exception e) { - log.error("error…", e); - SampleResult.setStopThread(true); -} - - - - false - - - - - customer_ids - customer_id - true - - - - 1 - - 1 - id_counter - - false - - - - import java.util.ArrayList; - -// If it is first iteration of cycle then recreate idsList -if (1 == Integer.parseInt(vars.get("id_counter"))) { - idsList = new ArrayList(); - props.put("customer_ids_list", idsList); -} else { - idsList = props.get("customer_ids_list"); -} -idsList.add(vars.get("customer_id")); - - - false - - - - - - - mpaf/tool/fragments/ce/setup/extract_region_ids.jmx - - - - - - - false - US - = - true - parent - - - - - - - - ${request_protocol} - - ${base_path}${admin_path}/directory/json/countryRegion/ - GET - true - false - true - false - false - - - - - groovy - - - - import groovy.json.JsonSlurper -def jsonSlurper = new JsonSlurper(); -def regionResponse = jsonSlurper.parseText(prev.getResponseDataAsString()); - -regionResponse.each { region -> - if (region.label.toString() == "Alabama") { - props.put("alabama_region_id", region.value.toString()); - } else if (region.label.toString() == 'California') { - props.put("california_region_id", region.value.toString()); - } -} - - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - - Authorization - Bearer ${admin_token} - - - mpaf/tool/fragments/ce/api/header_manager.jmx - - - - - - - - - true - 1 - = - true - searchCriteria[current_page] - - - false - 20 - = - true - searchCriteria[page_size] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/cmsPage/search - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/get_cms_pages.jmx - - - - $.total_count - 0 - true - false - true - false - - - - javascript - - - - var data = JSON.parse(prev.getResponseDataAsString()); - -var cmsPages = []; - -for (var i in data.items) { - cmsPages.push({"id": data.items[i].id, "identifier": data.items[i].identifier}); - } - -props.put("cms_pages", cmsPages); - - - - - - - - mpaf/tool/fragments/ce/setup/extract_configurable_products.jmx - - - - - - - true - type_id - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - true - configurable - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - true - ${configurable_products_count} - = - true - searchCriteria[pageSize] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/products - GET - true - false - true - false - false - - - - - false - configurable_products_url_keys - url_key\",\"value\":\"(.*?)\" - $1$ - - -1 - - - - false - configurable_product_ids - \"id\":(\d+),\"sku\" - $1$ - - -1 - - - - false - configurable_product_names - name\":\"(.*?)\" - $1$ - - -1 - - - - false - configurable_product_skus - sku\":\"(.*?)\" - $1$ - - -1 - - - - - - configurable_product_ids - configurable_product_id - true - - - - 1 - - 1 - configurable_products_counter - - false - - - - import java.util.ArrayList; -import java.util.HashMap; -import org.apache.commons.codec.binary.Base64; -ArrayList productList; - -// If it is first iteration of cycle then recreate productList -if (1 == Integer.parseInt(vars.get("configurable_products_counter"))) { - productList = new ArrayList(); - props.put("configurable_products_list", productList); -} else { - productList = props.get("configurable_products_list"); -} - -String productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + vars.get("configurable_products_url_keys_" + vars.get("configurable_products_counter"))+ vars.get("url_suffix"); -encodedUrl = Base64.encodeBase64(productUrl.getBytes()); -// Create product map -Map productMap = new HashMap(); -productMap.put("id", vars.get("configurable_product_id")); -productMap.put("title", vars.get("configurable_product_names_" + vars.get("configurable_products_counter"))); -productMap.put("sku", vars.get("configurable_product_skus_" + vars.get("configurable_products_counter"))); -productMap.put("url_key", vars.get("configurable_products_url_keys_" + vars.get("configurable_products_counter"))); -productMap.put("uenc", new String(encodedUrl)); - -// Collect products map in products list -productList.add(productMap); - - - false - - - - - - mpaf/tool/fragments/ce/setup/extract_configurable_products_for_edit.jmx - - - - - - - true - type_id - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - true - configurable - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - true - ${configurable_products_count} - = - true - searchCriteria[pageSize] - - - true - 2 - = - true - searchCriteria[currentPage] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/products - GET - true - false - true - false - false - - - - - false - configurable_products_for_edit_url_keys - url_key\",\"value\":\"(.*?)\" - $1$ - - -1 - - - - false - configurable_product_for_edit_ids - \"id\":(\d+),\"sku\" - $1$ - - -1 - - - - false - configurable_product_for_edit_names - name\":\"(.*?)\" - $1$ - - -1 - - - - false - configurable_product_for_edit_skus - sku\":\"(.*?)\" - $1$ - - -1 - - - - - - configurable_product_for_edit_ids - configurable_product_for_edit_id - true - - - - 1 - - 1 - configurable_products_counter_for_edit - - false - - - - import java.util.ArrayList; -import java.util.HashMap; -import org.apache.commons.codec.binary.Base64; -ArrayList editProductList; - -if (1 == Integer.parseInt(vars.get("configurable_products_counter_for_edit"))) { - editProductList = new ArrayList(); - props.put("configurable_products_list_for_edit", editProductList); -} else { - editProductList = props.get("configurable_products_list_for_edit"); -} - -String productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + vars.get("configurable_products_for_edit_url_keys_" + vars.get("configurable_products_counter_for_edit"))+ vars.get("url_suffix"); -encodedUrl = Base64.encodeBase64(productUrl.getBytes()); -// Create product map -Map editProductMap = new HashMap(); -editProductMap.put("id", vars.get("configurable_product_for_edit_id")); -editProductMap.put("title", vars.get("configurable_product_for_edit_names_" + vars.get("configurable_products_counter_for_edit"))); -editProductMap.put("sku", vars.get("configurable_product_for_edit_skus_" + vars.get("configurable_products_counter_for_edit"))); -editProductMap.put("url_key", vars.get("configurable_products_for_edit_url_keys_" + vars.get("configurable_products_counter_for_edit"))); -editProductMap.put("uenc", new String(encodedUrl)); - -// Collect products map in products list -editProductList.add(editProductMap); - - - false - - - - - - mpaf/tool/fragments/ce/setup/extract_simple_products.jmx - - - - - - - true - type_id - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - true - simple - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - true - ${simple_products_count} - = - true - searchCriteria[pageSize] - - - true - attribute_set_id - != - true - searchCriteria[filterGroups][0][filters][1][field] - - - true - 4 - = - true - searchCriteria[filterGroups][0][filters][1][value] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/products - GET - true - false - true - false - false - - - - - false - simple_products_url_keys - url_key\",\"value\":\"(.*?)\" - $1$ - - -1 - - - - false - simple_product_ids - \"id\":(\d+),\"sku\" - $1$ - - -1 - - - - false - simple_product_names - name\":\"(.*?)\" - $1$ - - -1 - - - - false - simple_product_skus - sku\":\"(.*?)\" - $1$ - - -1 - - - - - - simple_product_ids - simple_product_id - true - - - - 1 - - 1 - simple_products_counter - - false - - - - import java.util.ArrayList; -import java.util.HashMap; -import org.apache.commons.codec.binary.Base64; -ArrayList productList; - -// If it is first iteration of cycle then recreate productList -if (1 == Integer.parseInt(vars.get("simple_products_counter"))) { - productList = new ArrayList(); - props.put("simple_products_list", productList); -} else { - productList = props.get("simple_products_list"); -} -String productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + vars.get("simple_products_url_keys_" + vars.get("simple_products_counter"))+ vars.get("url_suffix"); -encodedUrl = Base64.encodeBase64(productUrl.getBytes()); -// Create product map -Map productMap = new HashMap(); -productMap.put("id", vars.get("simple_product_id")); -productMap.put("title", vars.get("simple_product_names_" + vars.get("simple_products_counter"))); -productMap.put("sku", vars.get("simple_product_skus_" + vars.get("simple_products_counter"))); -productMap.put("url_key", vars.get("simple_products_url_keys_" + vars.get("simple_products_counter"))); -productMap.put("uenc", new String(encodedUrl)); - -// Collect products map in products list -productList.add(productMap); - - - false - - - - - - mpaf/tool/fragments/ce/setup/extract_simple_products_for_edit.jmx - - - - - - - true - type_id - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - true - simple - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - true - ${simple_products_count} - = - true - searchCriteria[pageSize] - - - true - 1 - = - true - searchCriteria[currentPage] - - - true - attribute_set_id - = - true - searchCriteria[filterGroups][1][filters][1][field] - - - true - 4 - = - true - searchCriteria[filterGroups][1][filters][1][value] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/products - GET - true - false - true - false - false - - - - - false - simple_products_for_edit_url_keys - url_key\",\"value\":\"(.*?)\" - $1$ - - -1 - - - - false - simple_product_for_edit_ids - \"id\":(\d+),\"sku\" - $1$ - - -1 - - - - false - simple_product_for_edit_names - name\":\"(.*?)\" - $1$ - - -1 - - - - false - simple_product_for_edit_skus - sku\":\"(.*?)\" - $1$ - - -1 - - - - - - simple_product_for_edit_ids - simple_product_for_edit_id - true - - - - 1 - - 1 - simple_products_counter_for_edit - - false - - - - import java.util.ArrayList; -import java.util.HashMap; -import org.apache.commons.codec.binary.Base64; -ArrayList editProductList; - -if (1 == Integer.parseInt(vars.get("simple_products_counter_for_edit"))) { - editProductList = new ArrayList(); - props.put("simple_products_list_for_edit", editProductList); -} else { - editProductList = props.get("simple_products_list_for_edit"); -} - -String productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + vars.get("simple_products_for_edit_url_keys_" + vars.get("simple_products_counter_for_edit"))+ vars.get("url_suffix"); -encodedUrl = Base64.encodeBase64(productUrl.getBytes()); -// Create product map -Map editProductMap = new HashMap(); -editProductMap.put("id", vars.get("simple_product_for_edit_id")); -editProductMap.put("title", vars.get("simple_product_for_edit_names_" + vars.get("simple_products_counter_for_edit"))); -editProductMap.put("sku", vars.get("simple_product_for_edit_skus_" + vars.get("simple_products_counter_for_edit"))); -editProductMap.put("url_key", vars.get("simple_products_for_edit_url_keys_" + vars.get("simple_products_counter_for_edit"))); -editProductMap.put("uenc", new String(encodedUrl)); - -// Collect products map in products list -editProductList.add(editProductMap); - - - false - - - - - - mpaf/tool/fragments/ce/setup/extract_categories.jmx - - - - - - - true - path - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - true - 1/2/% - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - true - like - = - true - searchCriteria[filterGroups][0][filters][0][conditionType] - - - true - level - = - true - searchCriteria[filterGroups][1][filters][0][field] - - - true - 2 - = - true - searchCriteria[filterGroups][1][filters][0][value] - - - true - ${categories_count} - = - true - searchCriteria[pageSize] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/categories/list - GET - true - false - false - false - false - - - - - javascript - - - - var data = JSON.parse(prev.getResponseDataAsString()); - -var categoryData = [], categoryNames = [], categoryUrls = []; - -for (var i in data.items) { - var cat = data.items[i], urlKey = getUrlKey(cat); - categoryData.push({"id": cat.id, "name": cat.name, "url_key": urlKey, "children": cat.children.split(",")}); - categoryNames.push(cat.name); - categoryUrls.push(urlKey); - } - -function getUrlKey(cat) { - for (var i in cat.custom_attributes) { - if (cat.custom_attributes[i].attribute_code == "url_key") { - return cat.custom_attributes[i].value; - } - } - return ""; -} - -props.put("categories", categoryData); -props.put("category_url_keys_list", categoryUrls); -props.put("category_names_list",categoryNames); - - - - - - - mpaf/tool/fragments/ce/setup/extract_categories_id_of_last_level.jmx - - - - props.remove("admin_category_ids_list"); - - - false - - - - - - - true - children_count - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - true - 0 - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - true - level - = - true - searchCriteria[filterGroups][1][filters][0][field] - - - true - 2 - = - true - searchCriteria[filterGroups][1][filters][0][value] - - - true - gt - = - true - searchCriteria[filterGroups][1][filters][0][conditionType] - - - true - ${adminCategoryCount} - = - true - searchCriteria[pageSize] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/categories/list - GET - true - false - true - false - false - - - - - false - category_list_id - \{\"id\":(\d+), - $1$ - - -1 - - - - - category_list_id - category_id - true - - - - import java.util.ArrayList; - -adminCategoryIdsList = props.get("admin_category_ids_list"); -// If it is first iteration of cycle then recreate categories ids list -if (adminCategoryIdsList == null) { - adminCategoryIdsList = new ArrayList(); - props.put("admin_category_ids_list", adminCategoryIdsList); -} -adminCategoryIdsList.add(vars.get("category_id")); - - - false - - - - - - - mpaf/tool/fragments/ce/setup/extract_coupon_codes.jmx - - - - - - - false - 10 - = - true - searchCriteria[pageSize] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/coupons/search - GET - true - false - true - false - false - - - - - javascript - - - - var data = JSON.parse(prev.getResponseDataAsString()); - -var couponCodes = []; - -for (var i in data.items) { - var coupon = data.items[i]; - couponCodes.push({"coupon_id":coupon.coupon_id, "rule_id":coupon.rule_id, "code": coupon.code}); - } - -props.put("coupon_codes", couponCodes); - - - - - - - - - Boolean stopTestOnError (String error) { - log.error(error); - System.out.println(error); - SampleResult.setStopTest(true); - return false; -} - -if (props.get("simple_products_list") == null) { - return stopTestOnError("Cannot find simple products. Test stopped."); -} -if (props.get("simple_products_list_for_edit") == null) { - return stopTestOnError("Cannot find simple products for edit. Test stopped."); -} -if (props.get("configurable_products_list") == null) { - return stopTestOnError("Cannot find configurable products. Test stopped."); -} -if (props.get("configurable_products_list_for_edit") == null) { - return stopTestOnError("Cannot find configurable products for edit. Test stopped."); -} -if (props.get("customer_emails_list") == null) { - return stopTestOnError("Cannot find customer emails. Test stopped."); -} -if (props.get("category_url_keys_list") == null) { - return stopTestOnError("Cannot find category url keys. Test stopped."); -} -if (props.get("category_names_list") == null) { - return stopTestOnError("Cannot find category names. Test stopped."); -} -if (props.get("cms_pages") == null) { - return stopTestOnError("Cannot find cms pages. Test stopped."); -} - - - - false - mpaf/tool/fragments/ce/setup/validate_properties.jmx - - - - - - - true - 1 - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/warmup_add_to_cart.jmx - - - - - continue - - false - ${loops} - - ${frontendPoolUsers} - ${ramp_period} - 1505803944000 - 1505803944000 - false - - - mpaf/tool/fragments/_system/thread_group.jmx - - - javascript - - - - var cacheHitPercent = vars.get("cache_hits_percentage"); - -if ( - cacheHitPercent < 100 && - sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - doCache(); -} - -function doCache(){ - var random = Math.random() * 100; - if (cacheHitPercent < random) { - sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13)); - } -} - - mpaf/tool/fragments/ce/common/cache_hit_miss.jmx - - - - 1 - false - 1 - ${browseCatalogByCustomerPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Catalog Browsing By Customer"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${browseCatalogByGuestPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Catalog Browsing By Guest"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - ${siteSearchPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Site Search"); - - true - - - - - ${files_folder}search_terms.csv - UTF-8 - - , - false - true - false - shareMode.thread - mpaf/tool/fragments/ce/search/search_terms.jmx - - - - javascript - - - - var cacheHitPercent = vars.get("cache_hits_percentage"); - -if ( - cacheHitPercent < 100 && - sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - doCache(); -} - -function doCache(){ - var random = Math.random() * 100; - if (cacheHitPercent < random) { - sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13)); - } -} - - mpaf/tool/fragments/ce/common/cache_hit_miss.jmx - - - - 1 - false - 1 - ${searchQuickPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Quick Search"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - q - ${searchTerm} - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalogsearch/result/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_quick.jmx - - - - Search results for: - <span class="toolbar-number">\d<\/span> Items|Items <span class="toolbar-number">1 - - Assertion.response_data - false - 2 - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="(?:http|https)://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - false - isPageCacheable - catalogsearch/searchTermsLog/save - $0$ - 0 - 1 - - - - - - "${isPageCacheable}" != "0" - false - mpaf/tool/fragments/ce/search/if_page_cacheable_controller.jmx - - - - - - true - q - ${searchTerm} - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalogsearch/searchTermsLog/save/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_terms_log_save.jmx - - - - - "success":true - - Assertion.response_data - false - 2 - - - - - - - -foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr")); - -if (foundProducts > 3) { - foundProducts = 3; -} - -vars.put("foundProducts", String.valueOf(foundProducts)); - - - - true - mpaf/tool/fragments/ce/search/set_found_items.jmx - - - - true - ${foundProducts} - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - mpaf/tool/fragments/ce/search/searched_products_setup.jmx - -number = vars.get("_counter"); -product = vars.get("product_url_keys_"+number); - -vars.put("product_url_key", product); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - ${searchQuickFilterPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Quick Search With Filtration"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - q - ${searchTerm} - = - true - - - - - - 60000 - 200000 - - - ${base_path}catalogsearch/result/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_quick_filter.jmx - - - - Search results for: - Items <span class="toolbar-number">1 - - Assertion.response_data - false - 2 - - - - 0 - attribute_1_options_count - count((//div[@class="filter-options-content"])[1]//li[@class="item"]) - false - true - false - - - - 0 - attribute_2_options_count - count((//div[@class="filter-options-content"])[2]//li[@class="item"]) - false - true - false - - - - - attribute_1_filter_url - ((//div[@class="filter-options-content"])[1]//li[@class="item"]//a)[1]/@href - false - true - false - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - false - isPageCacheable - catalogsearch/searchTermsLog/save - $0$ - 0 - 1 - - - - - - "${isPageCacheable}" != "0" - false - mpaf/tool/fragments/ce/search/if_page_cacheable_controller.jmx - - - - - - true - q - ${searchTerm} - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalogsearch/searchTermsLog/save/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_terms_log_save.jmx - - - - - "success":true - - Assertion.response_data - false - 2 - - - - - - - ${attribute_1_options_count} > 0 - false - mpaf/tool/fragments/ce/search/search_quick_filter-first-attribute.jmx - - - vars.put("search_url", vars.get("attribute_1_filter_url")); - - - false - - - - - - - - - 60000 - 200000 - - - ${attribute_1_filter_url} - GET - true - false - true - false - false - - - - - - Search results for: - <span class="toolbar-number">[1-9]+ - - Assertion.response_data - false - 2 - - - - 0 - attribute_2_options_count - count((//div[@class="filter-options-content"])[2]//li[@class="item"]) - false - true - false - - - - - attribute_2_filter_url - ((//div[@class="filter-options-content"])[2]//li[@class="item"]//a)[1]/@href - false - true - false - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - - - - ${attribute_2_options_count} > 0 - false - mpaf/tool/fragments/ce/search/search_quick_filter-second-attribute.jmx - - - vars.put("search_url", vars.get("attribute_2_filter_url")); - - - false - - - - - - - - - 60000 - 200000 - - - ${attribute_2_filter_url} - GET - true - false - true - false - false - - - - - - Search results for: - <span class="toolbar-number">[1-9]+ - - Assertion.response_data - false - 2 - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - - - - -foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr")); - -if (foundProducts > 3) { - foundProducts = 3; -} - -vars.put("foundProducts", String.valueOf(foundProducts)); - - - - true - mpaf/tool/fragments/ce/search/set_found_items.jmx - - - - true - ${foundProducts} - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - mpaf/tool/fragments/ce/search/searched_products_setup.jmx - -number = vars.get("_counter"); -product = vars.get("product_url_keys_"+number); - -vars.put("product_url_key", product); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - ${searchAdvancedPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Advanced Search"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - - - ${base_path}catalogsearch/advanced/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/open_advanced_search_page.jmx - - - - <title>Advanced Search</title> - - Assertion.response_data - false - 2 - - - - - attribute_name - (//select[@class="multiselect"])[last()]/@name - false - true - false - - - - 0 - attribute_options_count - count((//select[@class="multiselect"])[last()]/option) - false - true - false - - - - - attribute_value - ((//select[@class="multiselect"])[last()]/option)[1]/@value - false - true - false - - - - - - - - - - - true - name - - = - true - - - true - sku - - = - true - - - true - description - ${searchTerm} - = - true - - - true - short_description - - = - true - - - true - price%5Bfrom%5D - - = - true - - - true - price%5Bto%5D - ${priceTo} - = - true - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalogsearch/advanced/result/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_advanced.jmx - - - - items</strong> were found using the following search criteria - - Assertion.response_data - false - 2 - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="(?:http|https)://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - - - -foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr")); - -if (foundProducts > 3) { - foundProducts = 3; -} - -vars.put("foundProducts", String.valueOf(foundProducts)); - - - - true - mpaf/tool/fragments/ce/search/set_found_items.jmx - - - - true - ${foundProducts} - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - mpaf/tool/fragments/ce/search/searched_products_setup.jmx - -number = vars.get("_counter"); -product = vars.get("product_url_keys_"+number); - -vars.put("product_url_key", product); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - - - 1 - false - 1 - ${addToCartByGuestPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Add To Cart By Guest"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - true - 1 - mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${product_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx - - - false - - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]); - } - } catch (Exception e) { - log.error("eror…", e); - } - - mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - 1 - false - 1 - ${addToWishlistPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Add to Wishlist"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - true - 5 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - false - - - true - ${product_uenc} - = - true - uenc - - - true - ${product_id} - = - true - product - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist/index/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/wishlist/add_to_wishlist.jmx - - - - <title>My Wish List</title> - - Assertion.response_data - false - 16 - - - - false - wishListItems - data-post-remove='\{"action":"(.+)\/wishlist\\/index\\/remove\\/","data":\{"item":"([^"]+)" - $2$ - - -1 - - - - - - - - - true - wishlist,messages - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/wishlist/load_wishlist_section.jmx - - - - {"wishlist":{"counter":" - - Assertion.response_data - false - 16 - - - - ${wishlistDelay}*1000 - - - - - - - wishListItems - wishListItem - true - mpaf/tool/fragments/ce/wishlist/clear_wishlist.jmx - - - 1 - 5 - 1 - counter - - true - true - - - - - - - true - ${form_key} - = - true - form_key - true - - - true - ${wishListItem} - = - true - item - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist/index/remove/ - POST - true - false - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${compareProductsPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Compare Products"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - random_product_compare_id - catalog\\/product_compare\\/add\\/\",\"data\":\{\"product\":\"([0-9]+)\" - $1$ - - 1 - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - random_product_compare_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - ${form_key} - = - true - form_key - - - true - ${product_uenc} - = - true - uenc - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalog/product_compare/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/product_compare_add.jmx - - - - - - - true - compare-products,messages - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/customer_section_load_product_compare_add.jmx - - - - \"compare-products\":{\"count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - ${form_key} - = - true - form_key - - - true - ${product_uenc} - = - true - uenc - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalog/product_compare/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/product_compare_add.jmx - - - - - - - true - compare-products,messages - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/customer_section_load_product_compare_add.jmx - - - - \"compare-products\":{\"count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalog/product_compare/index/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/compare_products.jmx - - - - 1 - 0 - ${__javaScript(Math.round(${productCompareDelay}*1000))} - mpaf/tool/fragments/ce/product_compare/compare_products_pause.jmx - - - - - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalog/product_compare/clear - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/compare_products_clear.jmx - - - - - - 1 - false - 1 - ${checkoutByGuestPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Checkout By Guest"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - true - 1 - mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${product_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx - - - false - - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]); - } - } catch (Exception e) { - log.error("eror…", e); - } - - mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - javascript - - - - - vars.put("alabama_region_id", props.get("alabama_region_id")); - vars.put("california_region_id", props.get("california_region_id")); - - mpaf/tool/fragments/ce/common/get_region_data.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_start.jmx - - - - <title>Checkout</title> - - Assertion.response_data - false - 2 - - - - - <title>Shopping Cart</title> - - Assertion.response_data - false - 6 - - - - false - cart_id - "quoteData":{"entity_id":"([^'"]+)", - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - cart_id - - - - - - true - - - - false - {"customerEmail":"test@example.com"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/customers/isEmailAvailable - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_email_available.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - true - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"address":{"country_id":"US","postcode":"95630"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - "available":true - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - {"payment_methods": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_payment_info_place_order.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - "[0-9]+" - - Assertion.response_data - false - 2 - - - - order_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_id - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/onepage/success/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_success.jmx - - - - Thank you for your purchase! - Your order # is - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - ${checkoutByCustomerPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Checkout By Customer"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - true - 1 - mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${product_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx - - - false - - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]); - } - } catch (Exception e) { - log.error("eror…", e); - } - - mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - javascript - - - - - vars.put("alabama_region_id", props.get("alabama_region_id")); - vars.put("california_region_id", props.get("california_region_id")); - - mpaf/tool/fragments/ce/common/get_region_data.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_start.jmx - - - - <title>Checkout</title> - - Assertion.response_data - false - 2 - - - - - <title>Shopping Cart</title> - - Assertion.response_data - false - 6 - - - - false - cart_id - "quoteData":{"entity_id":"([^'"]+)", - $1$ - - 1 - - - - false - address_id - "default_billing":"([^'"]+)", - $1$ - - 1 - - - - false - customer_id - "customer_id":([^'",]+), - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - cart_id - - - - - [0-9]+$ - - Assertion.response_data - false - 1 - variable - address_id - - - - - [0-9]+$ - - Assertion.response_data - false - 1 - variable - customer_id - - - - - - true - - - - false - {"addressId":"${addressId}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts/mine/estimate-shipping-methods-by-address-id - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_estimate_shipping_methods.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - "available":true - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"addressInformation":{"shipping_address":{"customerAddressId":"${address_id}","countryId":"US","regionId":"${alabama_region_id}","regionCode":"AL","region":"Alabama","customerId":"${customer_id}","street":["123 Freedom Blvd. #123"],"telephone":"022-333-4455","postcode":"123123","city":"Fayetteville","firstname":"Anthony","lastname":"Nealy"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts/mine/shipping-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_billing_shipping_information.jmx - - - - - Referer - ${host}${base_path}checkout/onepage - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - {"payment_methods" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"cartId":"${cart_id}","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"customerAddressId":"${address_id}","countryId":"US","regionId":"${alabama_region_id}","regionCode":"AL","region":"Alabama","customerId":"${customer_id}","street":["123 Freedom Blvd. #123"],"telephone":"022-333-4455","postcode":"123123","city":"Fayetteville","firstname":"Anthony","lastname":"Nealy"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts/mine/payment-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_payment_info_place_order.jmx - - - - - Referer - ${host}${base_path}checkout/onepage - - - Content-Type - application/json; charset=UTF-8 - - - Accept - application/json - - - X-Requested-With - XMLHttpRequest - - - - - - - "[0-9]+" - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/onepage/success/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_success.jmx - - - - Thank you for your purchase! - Your order number is - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - curSampler = ctx.getCurrentSampler(); -if(curSampler.getName().contains("Checkout success")) { - manager = curSampler.getCookieManager(); - manager.clear(); -} - - mpaf/tool/fragments/ce/customer_checkout/checkout_clear_cookie.jmx - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${reviewByCustomerPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Product Review By Customer"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - 3 - = - true - ratings[1] - - - true - - = - true - validate_rating - - - true - FirstName - = - true - nickname - - - true - Some Review Title - = - true - title - - - true - Some Review Text - = - true - detail - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}review/product/post/id/${product_id} - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_review/product_review.jmx - - - - HTTP/1.1 200 OK - - Assertion.response_headers - false - 16 - - - - - - - - - true - review,messages - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_review/load_review.jmx - - - - 1 - 0 - ${__javaScript(Math.round(${reviewDelay}*1000))} - mpaf/tool/fragments/ce/product_review/product_review_pause.jmx - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${addToCartByCustomerPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Add To Cart By Customer"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - true - 1 - mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${product_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx - - - false - - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]); - } - } catch (Exception e) { - log.error("eror…", e); - } - - mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - - - 60000 - 200000 - - - ${base_path}checkout/cart/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/open_cart.jmx - - - - <title>Shopping Cart</title> - - Assertion.response_data - false - 2 - - - - false - cart_items_qty_inputs - name="cart\[([^\[\]]+)\]\[qty\]" - $1$ - - -1 - - - - - - true - ${cart_items_qty_inputs_matchNr} - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -id = vars.get("_counter"); -vars.put("uenc", vars.get("cart_items_uencs_" + id)); -vars.put("item_id", vars.get("cart_items_qty_inputs_" + id)); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/remove_item_from_cart_setup.jmx - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${uenc} - = - true - uenc - - - false - ${item_id} - = - true - id - - - - - - 60000 - 200000 - - - ${base_path}checkout/cart/delete/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/remove_item_from_cart.jmx - - - - - - - true - cart - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/check_cart_is_empty.jmx - - - - \"summary_count\":0 - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${accountManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Account management"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}sales/order/history/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/my_orders.jmx - - - - <title>My Orders</title> - - Assertion.response_data - false - 2 - - - - false - orderId - sales/order/view/order_id/(\d+)/ - $1$ - NOT_FOUND - 1 - - - - - - mpaf/tool/fragments/ce/account_management/if_orders.jmx - "${orderId}" != "NOT_FOUND" - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}sales/order/view/order_id/${orderId} - GET - true - false - true - false - false - - - - - - <title>Order # - - Assertion.response_data - false - 2 - - - - false - shipment_tab - sales/order/shipment/order_id/(\d+)..Order Shipments - $1$ - NOT_FOUND - 1 - - - - - May not have shipped - "${shipment_tab}" != "NOT_FOUND" - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}sales/order/shipment/order_id/${orderId} - GET - true - false - true - false - false - - - - - - Track this shipment - - Assertion.response_data - false - 2 - - - - false - popupLink - popupWindow": {"windowURL":"([^'"]+)", - $1$ - - 1 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${popupLink} - GET - true - false - true - false - false - - - - - - <title>Tracking Information</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}downloadable/customer/products - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/my_downloadable_products.jmx - - - - <title>My Downloadable Products</title> - - Assertion.response_data - false - 2 - - - - false - orderId - sales/order/view/order_id/(\d+)/ - $1$ - NOT_FOUND - 1 - - - - false - linkId - downloadable/download/link/id/(\d+)/ - $1$ - - 1 - - - - - - mpaf/tool/fragments/ce/account_management/if_downloadables.jmx - "${orderId}" != "NOT_FOUND" - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}sales/order/view/order_id/${orderId} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/view_downloadable_products.jmx - - - - <title>Order # - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}downloadable/download/link/id/${linkId} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/download_product.jmx - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist - GET - true - false - true - false - false - - - - - - <title>My Wish List</title> - - Assertion.response_data - false - 2 - - - - false - wishlistId - wishlist/index/update/wishlist_id/([^'"]+)/ - $1$ - - 1 - mpaf/tool/fragments/ce/account_management/my_wish_list.jmx - - - - false - buttonTitle - Update Wish List - FOUND - NOT_FOUND - 1 - - - - - - mpaf/tool/fragments/ce/account_management/if_wishlist.jmx - "${buttonTitle}" === "FOUND" - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist/index/share/wishlist_id/${wishlistId}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/share_wish_list.jmx - - - - <title>Wish List Sharing</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - true - - - true - ${customer_email} - = - true - emails - - - true - [TEST] See my wishlist!!! - = - true - message - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist/index/send/wishlist_id/${wishlistId}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/send_wish_list.jmx - - - - <title>My Wish List</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - - - continue - - false - ${loops} - - ${adminPoolUsers} - ${ramp_period} - 1505803944000 - 1505803944000 - false - - - mpaf/tool/fragments/_system/thread_group.jmx - - - 1 - false - 1 - ${adminCMSManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin CMS Management"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_cms_management/admin_cms_management.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/cms/page/ - GET - true - false - true - false - false - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/cms/page/new - GET - true - false - true - false - false - - - - - - - - true - <p>CMS Content ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - content - - - true - - = - true - content_heading - - - true - ${admin_form_key} - = - true - form_key - - - true - - = - true - identifier - - - true - 1 - = - true - is_active - - - true - - = - true - layout_update_xml - - - true - - = - true - meta_description - - - true - - = - true - meta_keywords - - - true - - = - true - meta_title - - - false - {} - = - true - nodes_data - - - true - - = - true - node_ids - - - true - - = - true - page_id - - - true - 1column - = - true - page_layout - - - true - 0 - = - true - store_id[0] - - - true - CMS Title ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - title - - - true - 0 - = - true - website_root - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/cms/page/save/ - POST - true - false - true - false - false - - - - - - You saved the page. - - Assertion.response_data - false - 16 - - - - - 1 - 0 - ${__javaScript(Math.round(${adminCMSManagementDelay}*1000))} - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${browseProductGridPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Browse Product Grid"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - - vars.put("gridEntityType" , "Product"); - - pagesCount = parseInt(vars.get("products_page_size")) || 20; - vars.put("grid_entity_page_size" , pagesCount); - vars.put("grid_namespace" , "product_listing"); - vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_product_filter_text")); - vars.put("grid_filter_field", "name"); - - // set sort fields and sort directions - vars.put("grid_sort_field_1", "name"); - vars.put("grid_sort_field_2", "price"); - vars.put("grid_sort_field_3", "attribute_set_id"); - vars.put("grid_sort_order_1", "asc"); - vars.put("grid_sort_order_2", "desc"); - - javascript - mpaf/tool/fragments/ce/admin_browse_products_grid/setup.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; - var totalsRecord = parseInt(vars.get("entity_total_records")); - var pageCount = Math.round(totalsRecord/pageSize); - - vars.put("grid_pages_count", pageCount); - - javascript - - - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - ${grid_admin_browse_filter_text} - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; -var totalsRecord = parseInt(vars.get("entity_total_records")); -var pageCount = Math.round(totalsRecord/pageSize); - -vars.put("grid_pages_count_filtered", pageCount); - - javascript - - - - - - 1 - ${grid_pages_count} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - ${page_number} - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - 1 - ${grid_pages_count_filtered} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx - - - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx - - - - grid_sort_field - grid_sort_field - true - 0 - 3 - - - - grid_sort_order - grid_sort_order - true - 0 - 2 - - - - - - - true - ${grid_namespace} - = - true - namespace - false - - - true - ${grid_admin_browse_filter_text} - = - true - filters[${grid_filter_field}] - false - - - true - true - = - true - filters[placeholder] - false - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - false - - - true - ${page_number} - = - true - paging[current] - false - - - true - ${grid_sort_field} - = - true - sorting[field] - false - - - true - ${grid_sort_order} - = - true - sorting[direction] - false - - - true - true - = - true - isAjax - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${browseOrderGridPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Browse Order Grid"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - - vars.put("gridEntityType" , "Order"); - - pagesCount = parseInt(vars.get("orders_page_size")) || 20; - vars.put("grid_entity_page_size" , pagesCount); - vars.put("grid_namespace" , "sales_order_grid"); - vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_orders_filter_text")); - vars.put("grid_filter_field", "status"); - - // set sort fields and sort directions - vars.put("grid_sort_field_1", "increment_id"); - vars.put("grid_sort_field_2", "created_at"); - vars.put("grid_sort_field_3", "billing_name"); - vars.put("grid_sort_order_1", "asc"); - vars.put("grid_sort_order_2", "desc"); - - javascript - mpaf/tool/fragments/ce/admin_browse_orders_grid/setup.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; - var totalsRecord = parseInt(vars.get("entity_total_records")); - var pageCount = Math.round(totalsRecord/pageSize); - - vars.put("grid_pages_count", pageCount); - - javascript - - - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - ${grid_admin_browse_filter_text} - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; -var totalsRecord = parseInt(vars.get("entity_total_records")); -var pageCount = Math.round(totalsRecord/pageSize); - -vars.put("grid_pages_count_filtered", pageCount); - - javascript - - - - - - 1 - ${grid_pages_count} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - ${page_number} - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - 1 - ${grid_pages_count_filtered} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx - - - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx - - - - grid_sort_field - grid_sort_field - true - 0 - 3 - - - - grid_sort_order - grid_sort_order - true - 0 - 2 - - - - - - - true - ${grid_namespace} - = - true - namespace - false - - - true - ${grid_admin_browse_filter_text} - = - true - filters[${grid_filter_field}] - false - - - true - true - = - true - filters[placeholder] - false - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - false - - - true - ${page_number} - = - true - paging[current] - false - - - true - ${grid_sort_field} - = - true - sorting[field] - false - - - true - ${grid_sort_order} - = - true - sorting[direction] - false - - - true - true - = - true - isAjax - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${adminProductCreationPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin Create Product"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/once_only_controller.jmx - - - - mpaf/tool/fragments/ce/admin_create_product/get_related_product_id.jmx - import org.apache.jmeter.samplers.SampleResult; -import java.util.Random; -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom}); -} -relatedIndex = random.nextInt(props.get("simple_products_list").size()); -vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id")); - - - true - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - - Authorization - Bearer ${admin_token} - - - mpaf/tool/fragments/ce/api/header_manager.jmx - - - - - - - false - mycolor - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - false - attribute_code - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - false - mysize - = - true - searchCriteria[filterGroups][0][filters][1][value] - - - false - attribute_code - = - true - searchCriteria[filterGroups][0][filters][1][field] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/get_product_attributes.jmx - - - product_attributes - $.items - - - BODY - - - - javascript - - - - -var attributesData = JSON.parse(vars.get("product_attributes")), -maxOptions = 2; - -attributes = []; -for (i in attributesData) { - if (i >= 2) { - break; - } - var data = attributesData[i], - attribute = { - "id": data.attribute_id, - "code": data.attribute_code, - "label": data.default_frontend_label, - "options": [] - }; - - var processedOptions = 0; - for (optionN in data.options) { - var option = data.options[optionN]; - if (parseInt(option.value) > 0 && processedOptions < maxOptions) { - processedOptions++; - attribute.options.push(option); - } - } - attributes.push(attribute); -} - -vars.putObject("product_attributes", attributes); - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product_set/index/filter/${attribute_set_filter} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/configurable_setup_attribute_set.jmx - - - - false - attribute_set_id - catalog&#x2F;product_set&#x2F;edit&#x2F;id&#x2F;([\d]+)&#x2F;"[\D\d]*Attribute Set 1 - $1$ - - 1 - - - - false - - - import org.apache.commons.codec.binary.Base64; - -byte[] encodedBytes = Base64.encodeBase64("set_name=Attribute Set 1".getBytes()); -vars.put("attribute_set_filter", new String(encodedBytes)); - - - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - import org.apache.jmeter.samplers.SampleResult; -import java.util.Random; -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom}); -} -number = random.nextInt(props.get("simple_products_list_for_edit").size()); -simpleList = props.get("simple_products_list_for_edit").get(number); -vars.put("simple_product_1_id", simpleList.get("id")); -vars.put("simple_product_1_name", simpleList.get("title")); - -do { - number1 = random.nextInt(props.get("simple_products_list_for_edit").size()); -} while(number == number1); -simpleList = props.get("simple_products_list_for_edit").get(number1); -vars.put("simple_product_2_id", simpleList.get("id")); -vars.put("simple_product_2_name", simpleList.get("title")); - -number2 = random.nextInt(props.get("configurable_products_list").size()); -configurableList = props.get("configurable_products_list").get(number2); -vars.put("configurable_product_1_id", configurableList.get("id")); -vars.put("configurable_product_1_url_key", configurableList.get("url_key")); -vars.put("configurable_product_1_name", configurableList.get("title")); - -//Additional category to be added -//int categoryId = Integer.parseInt(vars.get("simple_product_category_id")); -//vars.put("category_additional", (categoryId+1).toString()); -//New price -vars.put("price_new", "9999"); -//New special price -vars.put("special_price_new", "8888"); -//New quantity -vars.put("quantity_new", "100600"); -vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNum}-${__Random(1,1000000)}"); - - - - - true - mpaf/tool/fragments/ce/admin_create_product/setup.jmx - - - - mpaf/tool/fragments/ce/admin_create_product/create_bundle_product.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/ - GET - true - false - true - false - false - - - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 42 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[configurable_variations] - - - true - 1 - = - true - affect_configurable_product_attributes - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - new-variations-attribute-set-id - - - true - 0 - = - true - product[shipment_type] - - - true - option title one - = - true - bundle_options[bundle_options][0][title] - - - true - - = - true - bundle_options[bundle_options][0][option_id] - - - true - - = - true - bundle_options[bundle_options][0][delete] - - - true - select - = - true - bundle_options[bundle_options][0][type] - - - true - 1 - = - true - bundle_options[bundle_options][0][required] - - - true - 0 - = - true - bundle_options[bundle_options][0][position] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][option_id] - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][0][bundle_selections][0][product_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][delete] - - - true - 25 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_value] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_type] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty] - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][0][position] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][option_id] - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][0][bundle_selections][1][product_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][delete] - - - true - 10.99 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_value] - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_type] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][position] - - - true - option title two - = - true - bundle_options[bundle_options][1][title] - - - true - - = - true - bundle_options[bundle_options][1][option_id] - - - true - - = - true - bundle_options[bundle_options][1][delete] - - - true - select - = - true - bundle_options[bundle_options][1][type] - - - true - 1 - = - true - bundle_options[bundle_options][1][required] - - - true - 1 - = - true - bundle_options[bundle_options][1][position] - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][option_id] - true - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][1][bundle_selections][0][product_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][delete] - true - - - true - 5.00 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_value] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_type] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][position] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][option_id] - true - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][1][bundle_selections][1][product_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][delete] - true - - - true - 7.00 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_value] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_type] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][position] - true - - - true - 2 - = - true - affect_bundle_product_selections - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/4/ - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 42 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[configurable_variations] - - - true - 1 - = - true - affect_configurable_product_attributes - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - new-variations-attribute-set-id - - - true - 0 - = - true - product[shipment_type] - false - - - true - option title one - = - true - bundle_options[bundle_options][0][title] - false - - - true - - = - true - bundle_options[bundle_options][0][option_id] - false - - - true - - = - true - bundle_options[bundle_options][0][delete] - false - - - true - select - = - true - bundle_options[bundle_options][0][type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][required] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][position] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][option_id] - false - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][0][bundle_selections][0][product_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][delete] - false - - - true - 25 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_value] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][0][position] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][option_id] - false - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][0][bundle_selections][1][product_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][delete] - false - - - true - 10.99 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][position] - false - - - true - option title two - = - true - bundle_options[bundle_options][1][title] - false - - - true - - = - true - bundle_options[bundle_options][1][option_id] - false - - - true - - = - true - bundle_options[bundle_options][1][delete] - false - - - true - select - = - true - bundle_options[bundle_options][1][type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][required] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][position] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][option_id] - false - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][1][bundle_selections][0][product_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][delete] - false - - - true - 5.00 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][position] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][option_id] - false - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][1][bundle_selections][1][product_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][delete] - false - - - true - 7.00 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][position] - false - - - true - 2 - = - true - affect_bundle_product_selections - false - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - option title one - option title two - ${simple_product_2_name} - ${simple_product_1_name} - - - Assertion.response_data - false - 2 - - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/open_catalog_grid.jmx - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/${attribute_set_id}/type/configurable/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/new_configurable.jmx - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - 1 - = - true - affect_configurable_product_attributes - true - - - true - ${admin_form_key} - = - true - form_key - true - - - true - ${attribute_set_id} - = - true - new-variations-attribute-set-id - true - - - true - 1 - = - true - product[affect_product_custom_options] - true - - - true - ${attribute_set_id} - = - true - product[attribute_set_id] - true - - - true - 4 - = - true - product[category_ids][0] - true - - - true - - = - true - product[custom_layout_update] - true - - - true - - = - true - product[description] - true - - - true - 0 - = - true - product[gift_message_available] - true - - - true - 1 - = - true - product[gift_wrapping_available] - true - - - true - - = - true - product[gift_wrapping_price] - true - - - true - - = - true - product[image] - true - - - true - 2 - = - true - product[is_returnable] - true - - - true - ${configurable_sku} - Meta Description - = - true - product[meta_description] - true - - - true - ${configurable_sku} - Meta Keyword - = - true - product[meta_keyword] - true - - - true - ${configurable_sku} - Meta Title - = - true - product[meta_title] - true - - - true - ${configurable_sku} - = - true - product[name] - true - - - true - container2 - = - true - product[options_container] - true - - - true - ${price_new} - = - true - product[price] - true - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - true - - - true - 1000 - = - true - product[quantity_and_stock_status][qty] - true - - - true - - = - true - product[short_description] - true - - - true - ${configurable_sku} - = - true - product[sku] - true - - - true - - = - true - product[small_image] - true - - - true - ${special_price_new} - = - true - product[special_price] - true - - - true - 1 - = - true - product[status] - true - - - true - 0 - = - true - product[stock_data][backorders] - true - - - true - 1 - = - true - product[stock_data][deferred_stock_update] - true - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - true - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - true - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - true - - - true - 1 - = - true - product[stock_data][manage_stock] - true - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - true - - - true - 0 - = - true - product[stock_data][min_qty] - true - - - true - 1 - = - true - product[stock_data][min_sale_qty] - true - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - true - - - true - 1 - = - true - product[stock_data][qty_increments] - true - - - true - 1 - = - true - product[stock_data][use_config_backorders] - true - - - true - 1 - = - true - product[stock_data][use_config_deferred_stock_update] - true - - - true - 1 - = - true - product[stock_data][use_config_enable_qty_increments] - true - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - true - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - true - - - true - 2 - = - true - product[tax_class_id] - true - - - true - - = - true - product[thumbnail] - true - - - true - - = - true - product[url_key] - true - - - true - 1 - = - true - product[use_config_gift_message_available] - true - - - true - 1 - = - true - product[use_config_gift_wrapping_available] - true - - - true - 1 - = - true - product[use_config_is_returnable] - true - - - true - 4 - = - true - product[visibility] - true - - - true - 1 - = - true - product[website_ids][1] - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/${attribute_set_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/configurable_validate.jmx - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - javascript - - - - -attributes = vars.getObject("product_attributes"); - -for (i in attributes) { - var attribute = attributes[i]; - sampler.addArgument("attribute_codes[" + i + "]", attribute.code); - sampler.addArgument("attributes[" + i + "]", attribute.id); - sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value); - addConfigurableAttributeData(attribute); -} - -addConfigurableMatrix(attributes); - -function addConfigurableAttributeData(attribute) { - var attributeId = attribute.id; - - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0); - attribute.options.forEach(function (option, index) { - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value); - }); -} - -/** - * Build 4 simple products for Configurable - */ -function addConfigurableMatrix(attributes) { - - var attribute1 = attributes[0], - attribute2 = attributes[1], - productIndex = 1, - products = []; - var variationNames = []; - attribute1.options.forEach(function (option1) { - attribute2.options.forEach(function (option2) { - var productAttributes = {}, - namePart = option1.label + "+" + option2.label, - variationKey = option1.value + "-" + option2.value; - productAttributes[attribute1.code] = option1.value; - productAttributes[attribute2.code] = option2.value; - - variationNames.push(namePart + " - " + vars.get("configurable_sku")); - var product = { - "id": null, - "name": namePart + " - " + vars.get("configurable_sku"), - "sku": namePart + " - " + vars.get("configurable_sku"), - "status": 1, - "price": "100", - "price_currency": "$", - "price_string": "$100", - "weight": "6", - "qty": "50", - "variationKey": variationKey, - "configurable_attribute": JSON.stringify(productAttributes), - "thumbnail_image": "", - "media_gallery": {"images": {}}, - "image": [], - "was_changed": true, - "canEdit": 1, - "newProduct": 1, - "record_id": productIndex - }; - productIndex++; - products.push(product); - }); - }); - - sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products)); - vars.putObject("configurable_variations_assertion", variationNames); -} - - mpaf/tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - 1 - = - true - affect_configurable_product_attributes - true - - - true - ${admin_form_key} - = - true - form_key - true - - - true - ${attribute_set_id} - = - true - new-variations-attribute-set-id - true - - - true - 1 - = - true - product[affect_product_custom_options] - true - - - true - ${attribute_set_id} - = - true - product[attribute_set_id] - true - - - true - 2 - = - true - product[category_ids][0] - true - - - true - - = - true - product[custom_layout_update] - true - - - true - - = - true - product[description] - true - - - true - 0 - = - true - product[gift_message_available] - true - - - true - 1 - = - true - product[gift_wrapping_available] - true - - - true - - = - true - product[gift_wrapping_price] - true - - - true - - = - true - product[image] - true - - - true - 2 - = - true - product[is_returnable] - true - - - true - ${configurable_sku} - Meta Description - = - true - product[meta_description] - true - - - true - ${configurable_sku} - Meta Keyword - = - true - product[meta_keyword] - true - - - true - ${configurable_sku} - Meta Title - = - true - product[meta_title] - true - - - true - ${configurable_sku} - = - true - product[name] - true - - - true - container2 - = - true - product[options_container] - true - - - true - ${price_new} - = - true - product[price] - true - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - true - - - true - 1000 - = - true - product[quantity_and_stock_status][qty] - true - - - true - - = - true - product[short_description] - true - - - true - ${configurable_sku} - = - true - product[sku] - true - - - true - - = - true - product[small_image] - true - - - true - ${special_price_new} - = - true - product[special_price] - true - - - true - 1 - = - true - product[status] - true - - - true - 0 - = - true - product[stock_data][backorders] - true - - - true - 1 - = - true - product[stock_data][deferred_stock_update] - true - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - true - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - true - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - true - - - true - 1 - = - true - product[stock_data][manage_stock] - true - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - true - - - true - 0 - = - true - product[stock_data][min_qty] - true - - - true - 1 - = - true - product[stock_data][min_sale_qty] - true - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - true - - - true - 1 - = - true - product[stock_data][qty_increments] - true - - - true - 1 - = - true - product[stock_data][use_config_backorders] - true - - - true - 1 - = - true - product[stock_data][use_config_deferred_stock_update] - true - - - true - 1 - = - true - product[stock_data][use_config_enable_qty_increments] - true - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - true - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - true - - - true - 2 - = - true - product[tax_class_id] - true - - - true - - = - true - product[thumbnail] - true - - - true - - = - true - product[url_key] - true - - - true - 1 - = - true - product[use_config_gift_message_available] - true - - - true - 1 - = - true - product[use_config_gift_wrapping_available] - true - - - true - 1 - = - true - product[use_config_is_returnable] - true - - - true - 4 - = - true - product[visibility] - true - - - true - 1 - = - true - product[website_ids][1] - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/${attribute_set_id}/type/configurable/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/configurable_save.jmx - - - - You saved the product - - Assertion.response_data - false - 2 - - - - javascript - - - - -var configurableVariations = vars.getObject("configurable_variations_assertion"), -response = SampleResult.getResponseDataAsString(); - -configurableVariations.forEach(function (variation) { - if (response.indexOf(variation) == -1) { - AssertionResult.setFailureMessage("Cannot find variation \"" + variation + "\""); - AssertionResult.setFailure(true); - } -}); - - - - - - javascript - - - - -attributes = vars.getObject("product_attributes"); - -for (i in attributes) { - var attribute = attributes[i]; - sampler.addArgument("attribute_codes[" + i + "]", attribute.code); - sampler.addArgument("attributes[" + i + "]", attribute.id); - sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value); - addConfigurableAttributeData(attribute); -} - -addConfigurableMatrix(attributes); - -function addConfigurableAttributeData(attribute) { - var attributeId = attribute.id; - - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0); - attribute.options.forEach(function (option, index) { - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value); - }); -} - -/** - * Build 4 simple products for Configurable - */ -function addConfigurableMatrix(attributes) { - - var attribute1 = attributes[0], - attribute2 = attributes[1], - productIndex = 1, - products = []; - var variationNames = []; - attribute1.options.forEach(function (option1) { - attribute2.options.forEach(function (option2) { - var productAttributes = {}, - namePart = option1.label + "+" + option2.label, - variationKey = option1.value + "-" + option2.value; - productAttributes[attribute1.code] = option1.value; - productAttributes[attribute2.code] = option2.value; - - variationNames.push(namePart + " - " + vars.get("configurable_sku")); - var product = { - "id": null, - "name": namePart + " - " + vars.get("configurable_sku"), - "sku": namePart + " - " + vars.get("configurable_sku"), - "status": 1, - "price": "100", - "price_currency": "$", - "price_string": "$100", - "weight": "6", - "qty": "50", - "variationKey": variationKey, - "configurable_attribute": JSON.stringify(productAttributes), - "thumbnail_image": "", - "media_gallery": {"images": {}}, - "image": [], - "was_changed": true, - "canEdit": 1, - "newProduct": 1, - "record_id": productIndex - }; - productIndex++; - products.push(product); - }); - }); - - sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products)); - vars.putObject("configurable_variations_assertion", variationNames); -} - - mpaf/tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx - - - - - - mpaf/tool/fragments/ce/admin_create_product/create_downloadable_product.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/4/type/downloadable/ - GET - true - false - true - false - false - - - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - ${files_folder}downloadable_original.txt - links - text/plain - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/downloadable_file/upload/type/links/?isAjax=true - POST - false - false - true - true - false - - - - - original_file - $.file - - - BODY - - - - - - - - ${files_folder}downloadable_sample.txt - samples - text/plain - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/downloadable_file/upload/type/samples/?isAjax=true - POST - false - false - true - true - false - - - - - sample_file - $.file - - - BODY - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 123 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - on - = - true - is_downloadable - - - true - Links - = - true - product[links_title] - - - true - 0 - = - true - product[links_purchased_separately] - - - true - ${original_file} - = - true - downloadable[link][0][file][0][file] - false - - - true - downloadable_original.txt - = - true - downloadable[link][0][file][0][name] - false - - - true - 13 - = - true - downloadable[link][0][file][0][size] - false - - - true - new - = - true - downloadable[link][0][file][0][status] - false - - - true - 1 - = - true - downloadable[link][0][is_shareable] - - - true - 0 - = - true - downloadable[link][0][is_unlimited] - - - true - - = - true - downloadable[link][0][link_url] - - - true - 0 - = - true - downloadable[link][0][number_of_downloads] - true - - - true - 120 - = - true - downloadable[link][0][price] - true - - - true - 0 - = - true - downloadable[link][0][record_id] - true - - - true - file - = - true - downloadable[link][0][sample][type] - - - true - - = - true - downloadable[link][0][sample][url] - - - true - 1 - = - true - downloadable[link][0][sort_order] - - - true - Original Link - = - true - downloadable[link][0][title] - - - true - file - = - true - downloadable[link][0][type] - - - true - ${sample_file} - = - true - downloadable[sample][0][file][0][file] - true - - - true - downloadable_sample.txt - = - true - downloadable[sample][0][file][0][name] - true - - - true - 14 - = - true - downloadable[sample][0][file][0][size] - true - - - true - new - = - true - downloadable[sample][0][file][0][status] - true - - - true - 0 - = - true - downloadable[sample][0][record_id] - true - - - true - - = - true - downloadable[sample][0][sample_url] - true - - - true - 1 - = - true - downloadable[sample][0][sort_order] - true - - - true - Sample Link - = - true - downloadable[sample][0][title] - true - - - true - file - = - true - downloadable[sample][0][type] - true - - - true - 1 - = - true - affect_configurable_product_attributes - false - - - true - 4 - = - true - new-variations-attribute-set-id - false - - - true - - = - true - product[configurable_variation] - false - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/4/type/downloadable/ - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 123 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - false - - - true - 1 - = - true - product[status] - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - ${original_file} - = - true - downloadable[link][0][file][0][file] - false - - - true - downloadable_original.txt - = - true - downloadable[link][0][file][0][name] - false - - - true - 13 - = - true - downloadable[link][0][file][0][size] - false - - - true - new - = - true - downloadable[link][0][file][0][status] - false - - - true - 1 - = - true - downloadable[link][0][is_shareable] - true - - - true - 0 - = - true - downloadable[link][0][is_unlimited] - true - - - true - - = - true - downloadable[link][0][link_url] - true - - - true - 0 - = - true - downloadable[link][0][number_of_downloads] - false - - - true - 120 - = - true - downloadable[link][0][price] - false - - - true - 0 - = - true - downloadable[link][0][record_id] - false - - - true - file - = - true - downloadable[link][0][sample][type] - true - - - true - - = - true - downloadable[link][0][sample][url] - true - - - true - 1 - = - true - downloadable[link][0][sort_order] - true - - - true - Original Link - = - true - downloadable[link][0][title] - true - - - true - file - = - true - downloadable[link][0][type] - true - - - true - ${sample_file} - = - true - downloadable[sample][0][file][0][file] - true - - - true - downloadable_sample.txt - = - true - downloadable[sample][0][file][0][name] - true - - - true - 14 - = - true - downloadable[sample][0][file][0][size] - true - - - true - new - = - true - downloadable[sample][0][file][0][status] - true - - - true - 0 - = - true - downloadable[sample][0][record_id] - true - - - true - - = - true - downloadable[sample][0][sample_url] - true - - - true - 1 - = - true - downloadable[sample][0][sort_order] - true - - - true - Sample Link - = - true - downloadable[sample][0][title] - true - - - true - file - = - true - downloadable[sample][0][type] - true - - - true - 1 - = - true - affect_configurable_product_attributes - false - - - true - 4 - = - true - new-variations-attribute-set-id - false - - - true - - = - true - product[configurable_variation] - false - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/4/type/downloadable/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - - Assertion.response_data - false - 2 - - - - - violation - - Assertion.response_data - false - 6 - - - - - - - mpaf/tool/fragments/ce/admin_create_product/create_simple_product.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/4/type/simple/ - GET - true - false - true - false - false - - - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 123 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - product[options][1][is_delete] - false - - - true - 1 - = - true - product[options][1][is_require] - false - - - true - select - = - true - product[options][1][previous_group] - false - - - true - drop_down - = - true - product[options][1][previous_type] - false - - - true - 0 - = - true - product[options][1][sort_order] - false - - - true - Product Option Title One - = - true - product[options][1][title] - false - - - true - drop_down - = - true - product[options][1][type] - false - - - true - - = - true - product[options][1][values][1][is_delete] - false - - - true - 200 - = - true - product[options][1][values][1][price] - false - - - true - fixed - = - true - product[options][1][values][1][price_type] - false - - - true - sku-one - = - true - product[options][1][values][1][sku] - false - - - true - 0 - = - true - product[options][1][values][1][sort_order] - false - - - true - Row Title - = - true - product[options][1][values][1][title] - false - - - true - - = - true - product[options][2][is_delete] - false - - - true - 1 - = - true - product[options][2][is_require] - false - - - true - 250 - = - true - product[options][2][max_characters] - false - - - true - text - = - true - product[options][2][previous_group] - false - - - true - field - = - true - product[options][2][previous_type] - false - - - true - 500 - = - true - product[options][2][price] - false - - - true - fixed - = - true - product[options][2][price_type] - false - - - true - sku-two - = - true - product[options][2][sku] - false - - - true - 1 - = - true - product[options][2][sort_order] - false - - - true - Field Title - = - true - product[options][2][title] - false - - - true - field - = - true - product[options][2][type] - false - - - true - 1 - = - true - affect_configurable_product_attributes - true - - - true - 4 - = - true - new-variations-attribute-set-id - true - - - true - - = - true - product[configurable_variation] - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/4/ - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 123 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full simple product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - product[options][1][is_delete] - true - - - true - 1 - = - true - product[options][1][is_require] - - - true - select - = - true - product[options][1][previous_group] - false - - - true - drop_down - = - true - product[options][1][previous_type] - false - - - true - 0 - = - true - product[options][1][sort_order] - false - - - true - Product Option Title One - = - true - product[options][1][title] - - - true - drop_down - = - true - product[options][1][type] - - - true - - = - true - product[options][1][values][1][is_delete] - false - - - true - 200 - = - true - product[options][1][values][1][price] - - - true - fixed - = - true - product[options][1][values][1][price_type] - - - true - sku-one - = - true - product[options][1][values][1][sku] - - - true - 0 - = - true - product[options][1][values][1][sort_order] - - - true - Row Title - = - true - product[options][1][values][1][title] - - - true - - = - true - product[options][2][is_delete] - false - - - true - 1 - = - true - product[options][2][is_require] - - - true - 250 - = - true - product[options][2][max_characters] - - - true - text - = - true - product[options][2][previous_group] - - - true - field - = - true - product[options][2][previous_type] - - - true - 500 - = - true - product[options][2][price] - - - true - fixed - = - true - product[options][2][price_type] - - - true - sku-two - = - true - product[options][2][sku] - - - true - 1 - = - true - product[options][2][sort_order] - - - true - Field Title - = - true - product[options][2][title] - - - true - field - = - true - product[options][2][type] - - - true - 1 - = - true - affect_configurable_product_attributes - true - - - true - 4 - = - true - new-variations-attribute-set-id - true - - - true - - = - true - product[configurable_variation] - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/4/type/simple/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - - Assertion.response_data - false - 2 - - - - - violation - - Assertion.response_data - false - 6 - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${adminProductEditingPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin Edit Product"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - mpaf/tool/fragments/ce/admin_edit_product/admin_edit_product_updated.jmx - import java.util.ArrayList; - import java.util.HashMap; - import java.util.Random; - - try { - Random random = new Random(); - if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); - } - simpleCount = props.get("simple_products_list_for_edit").size(); - configCount = props.get("configurable_products_list_for_edit").size(); - productCount = 0; - if (simpleCount > configCount) { - productCount = configCount; - } else { - productCount = simpleCount; - } - int threadsNumber = ctx.getThreadGroup().getNumThreads(); - if (threadsNumber == 0) { - threadsNumber = 1; - } - //Current thread number starts from 0 - currentThreadNum = ctx.getThreadNum(); - - String siterator = vars.get("threadIterator_" + currentThreadNum.toString()); - iterator = 0; - if(siterator == null){ - vars.put("threadIterator_" + currentThreadNum.toString() , "0"); - } else { - iterator = Integer.parseInt(siterator); - iterator ++; - vars.put("threadIterator_" + currentThreadNum.toString() , iterator.toString()); - } - - //Number of products for one thread - productClusterLength = productCount / threadsNumber; - - if (iterator >= productClusterLength) { - vars.put("threadIterator_" + currentThreadNum.toString(), "0"); - iterator = 0; - } - - //Index of the current product from the cluster - i = productClusterLength * currentThreadNum + iterator; - - //ids of simple and configurable products to edit - vars.put("simple_product_id", props.get("simple_products_list_for_edit").get(i).get("id")); - vars.put("configurable_product_id", props.get("configurable_products_list_for_edit").get(i).get("id")); - - //id of related product - do { - relatedIndex = random.nextInt(props.get("simple_products_list_for_edit").size()); - } while(i == relatedIndex); - vars.put("related_product_id", props.get("simple_products_list_for_edit").get(relatedIndex).get("id")); - } catch (Exception ex) { - log.info("Script execution failed", ex); -} - - - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/edit/id/${simple_product_id}/ - GET - true - false - true - false - false - - - - - - Product - - Assertion.response_data - false - 16 - - - - false - simple_product_name - ,"name":"([^'"]+)", - $1$ - - 1 - - - - false - simple_product_sku - ,"sku":"([^'"]+)", - $1$ - - 1 - - - - false - simple_product_category_id - ,"category_ids":."(\d+)". - $1$ - - 1 - - - - - Passing arguments between threads - //Additional category to be added - import java.util.Random; - - Random randomGenerator = new Random(); - if (${seedForRandom} > 0) { - randomGenerator.setSeed(${seedForRandom} + ${__threadNum}); - } - - int categoryId = Integer.parseInt(vars.get("simple_product_category_id")); - categoryList = props.get("admin_category_ids_list"); - - if (categoryList.size() > 1) { - do { - int index = randomGenerator.nextInt(categoryList.size()); - newCategoryId = categoryList.get(index); - } while (categoryId == newCategoryId); - - vars.put("category_additional", newCategoryId.toString()); - } - - //New price - vars.put("price_new", "9999"); - //New special price - vars.put("special_price_new", "8888"); - //New quantity - vars.put("quantity_new", "100600"); - - - - false - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${simple_product_name} - = - true - product[name] - false - - - true - ${simple_product_sku} - = - true - product[sku] - false - - - true - ${price_new} - = - true - product[price] - false - - - true - 2 - = - true - product[tax_class_id] - false - - - true - ${quantity_new} - = - true - product[quantity_and_stock_status][qty] - false - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - false - - - true - 1.0000 - = - true - product[weight] - false - - - true - 1 - = - true - product[product_has_weight] - false - - - true - ${simple_product_category_id} - = - true - product[category_ids][] - false - - - true - <p>Full simple product Description ${simple_product_id} Edited</p> - = - true - product[description] - false - - - true - 1 - = - true - product[status] - false - - - true - - = - true - product[configurable_variations] - false - - - true - 1 - = - true - affect_configurable_product_attributes - false - - - true - - = - true - product[image] - false - - - true - - = - true - product[small_image] - false - - - true - - = - true - product[thumbnail] - false - - - true - ${simple_product_name} - = - true - product[url_key] - false - - - true - ${simple_product_name} Meta Title Edited - = - true - product[meta_title] - false - - - true - ${simple_product_name} Meta Keyword Edited - = - true - product[meta_keyword] - false - - - true - ${simple_product_name} Meta Description Edited - = - true - product[meta_description] - false - - - true - 1 - = - true - product[website_ids][] - false - - - true - ${special_price_new} - = - true - product[special_price] - false - - - true - - = - true - product[special_from_date] - false - - - true - - = - true - product[special_to_date] - false - - - true - - = - true - product[cost] - false - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - false - - - true - ${quantity_new} - = - true - product[stock_data][original_inventory_qty] - false - - - true - ${quantity_new} - = - true - product[stock_data][qty] - false - - - true - 0 - = - true - product[stock_data][min_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - false - - - true - 1 - = - true - product[stock_data][min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - false - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - false - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - false - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - false - - - true - 0 - = - true - product[stock_data][backorders] - false - - - true - 1 - = - true - product[stock_data][use_config_backorders] - false - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - false - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - false - - - true - 0 - = - true - product[stock_data][qty_increments] - false - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - false - - - true - 1 - = - true - product[stock_data][is_in_stock] - false - - - true - - = - true - product[custom_design] - false - - - true - - = - true - product[custom_design_from] - false - - - true - - = - true - product[custom_design_to] - false - - - true - - = - true - product[custom_layout_update] - false - - - true - - = - true - product[page_layout] - false - - - true - container2 - = - true - product[options_container] - false - - - true - - = - true - new-variations-attribute-set-id - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/id/${simple_product_id}/?isAjax=true - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${simple_product_name} - = - true - product[name] - false - - - true - ${simple_product_sku} - = - true - product[sku] - false - - - true - ${price_new} - = - true - product[price] - false - - - true - 2 - = - true - product[tax_class_id] - false - - - true - ${quantity_new} - = - true - product[quantity_and_stock_status][qty] - false - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - false - - - true - 1.0000 - = - true - product[weight] - false - - - true - 1 - = - true - product[product_has_weight] - false - - - true - ${simple_product_category_id} - = - true - product[category_ids][] - false - - - true - ${category_additional} - = - true - product[category_ids][] - - - true - <p>Full simple product Description ${simple_product_id} Edited</p> - = - true - product[description] - false - - - true - 1 - = - true - product[status] - false - - - true - - = - true - product[configurable_variations] - false - - - true - 1 - = - true - affect_configurable_product_attributes - false - - - true - - = - true - product[image] - false - - - true - - = - true - product[small_image] - false - - - true - - = - true - product[thumbnail] - false - - - true - ${simple_product_name} - = - true - product[url_key] - false - - - true - ${simple_product_name} Meta Title Edited - = - true - product[meta_title] - false - - - true - ${simple_product_name} Meta Keyword Edited - = - true - product[meta_keyword] - false - - - true - ${simple_product_name} Meta Description Edited - = - true - product[meta_description] - false - - - true - 1 - = - true - product[website_ids][] - false - - - true - ${special_price_new} - = - true - product[special_price] - false - - - true - - = - true - product[special_from_date] - false - - - true - - = - true - product[special_to_date] - false - - - true - - = - true - product[cost] - false - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - false - - - true - ${quantity_new} - = - true - product[stock_data][original_inventory_qty] - false - - - true - ${quantity_new} - = - true - product[stock_data][qty] - false - - - true - 0 - = - true - product[stock_data][min_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - false - - - true - 1 - = - true - product[stock_data][min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - false - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - false - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - false - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - false - - - true - 0 - = - true - product[stock_data][backorders] - false - - - true - 1 - = - true - product[stock_data][use_config_backorders] - false - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - false - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - false - - - true - 0 - = - true - product[stock_data][qty_increments] - false - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - false - - - true - 1 - = - true - product[stock_data][is_in_stock] - false - - - true - - = - true - product[custom_design] - false - - - true - - = - true - product[custom_design_from] - false - - - true - - = - true - product[custom_design_to] - false - - - true - - = - true - product[custom_layout_update] - false - - - true - - = - true - product[page_layout] - false - - - true - container2 - = - true - product[options_container] - false - - - true - - = - true - new-variations-attribute-set-id - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/id/${simple_product_id}/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/edit/id/${configurable_product_id}/ - GET - true - false - true - false - false - - - - - - Product - - Assertion.response_data - false - 16 - - - - false - configurable_product_name - ,"name":"([^'"]+)", - $1$ - - 1 - - - - false - configurable_product_sku - ,"sku":"([^'"]+)", - $1$ - - 1 - - - - false - configurable_product_category_id - ,"category_ids":."(\d+)" - $1$ - - 1 - - - - false - configurable_attribute_id - ,"configurable_variation":"([^'"]+)", - $1$ - - 1 - true - - - - false - configurable_matrix - "configurable-matrix":(\[.*?\]) - $1$ - - 1 - true - - - - associated_products_ids - $.[*].id - - configurable_matrix - VAR - - - - false - configurable_product_data - (\{"product":.*?configurable_attributes_data.*?\})\s*< - $1$ - - 1 - - - - configurable_attributes_data - $.product.configurable_attributes_data - - configurable_product_data - VAR - - - - false - configurable_attribute_ids - "attribute_id":"(\d+)" - $1$ - - -1 - variable - configurable_attributes_data - - - - false - configurable_attribute_codes - "code":"(\w+)" - $1$ - - -1 - variable - configurable_attributes_data - - - - false - configurable_attribute_labels - "label":"(.*?)" - $1$ - - -1 - variable - configurable_attributes_data - - - - false - configurable_attribute_values - "values":(\{(?:\}|.*?\}\})) - $1$ - - -1 - variable - configurable_attributes_data - - - - - configurable_attribute_ids - configurable_attribute_id - true - - - - 1 - ${configurable_attribute_ids_matchNr} - 1 - attribute_counter - - true - true - - - - return vars.get("configurable_attribute_values_" + vars.get("attribute_counter")); - - - false - - - - false - attribute_${configurable_attribute_id}_values - "value_index":"(\d+)" - $1$ - - -1 - configurable_attribute_values_${attribute_counter} - - - - - - - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${configurable_product_name} - = - true - product[name] - false - - - true - ${configurable_product_sku} - = - true - product[sku] - false - - - true - ${price_new} - = - true - product[price] - false - - - true - 2 - = - true - product[tax_class_id] - false - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - false - - - true - 3 - = - true - product[weight] - false - - - true - ${configurable_product_category_id} - = - true - product[category_ids][] - false - - - true - ${category_additional} - = - true - product[category_ids][] - false - - - true - <p>Configurable product description ${configurable_product_id} Edited</p> - = - true - product[description] - false - - - true - 1 - = - true - product[status] - false - - - true - ${configurable_product_name} Meta Title Edited - = - true - product[meta_title] - false - - - true - ${configurable_product_name} Meta Keyword Edited - = - true - product[meta_keyword] - false - - - true - ${configurable_product_name} Meta Description Edited - = - true - product[meta_description] - false - - - true - 1 - = - true - product[website_ids][] - false - - - true - ${special_price_new} - = - true - product[special_price] - false - - - true - - = - true - product[special_from_date] - false - - - true - - = - true - product[special_to_date] - false - - - true - - = - true - product[cost] - false - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - false - - - true - 0 - = - true - product[stock_data][min_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - false - - - true - 1 - = - true - product[stock_data][min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - false - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - false - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - false - - - true - 0 - = - true - product[stock_data][backorders] - false - - - true - 1 - = - true - product[stock_data][use_config_backorders] - false - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - false - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - false - - - true - 0 - = - true - product[stock_data][qty_increments] - false - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - false - - - true - 1 - = - true - product[stock_data][is_in_stock] - false - - - true - - = - true - product[custom_design] - false - - - true - - = - true - product[custom_design_from] - false - - - true - - = - true - product[custom_design_to] - false - - - true - - = - true - product[custom_layout_update] - false - - - true - - = - true - product[page_layout] - false - - - true - container2 - = - true - product[options_container] - false - - - true - ${configurable_attribute_id} - = - true - product[configurable_variation] - false - - - true - ${configurable_product_name} - = - true - product[url_key] - - - true - 1 - = - true - product[use_config_gift_message_available] - - - true - 1 - = - true - product[use_config_gift_wrapping_available] - - - true - 4 - = - true - product[visibility] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 50 - = - true - product[stock_data][qty] - false - - - true - configurable - = - true - product[stock_data][type_id] - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/id/${configurable_product_id}/ - POST - true - false - true - false - false - - - - - false - - - try { - int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr")); - for (int i = 1; i <= attributesCount; i++) { - attributeId = vars.get("configurable_attribute_ids_" + i.toString()); - attributeCode = vars.get("configurable_attribute_codes_" + i.toString()); - attributeLabel = vars.get("configurable_attribute_labels_" + i.toString()); - ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId); - ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode); - ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString()); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel); - - int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr")); - for (int j = 1; j <= valuesCount; j++) { - attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString()); - ctx.getCurrentSampler().addArgument( - "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]", - "1" - ); - ctx.getCurrentSampler().addArgument( - "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]", - attributeValue - ); - } - } - ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString()); - } catch (Exception e) { - log.error("error???", e); - } - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${configurable_product_name} - = - true - product[name] - false - - - true - ${configurable_product_sku} - = - true - product[sku] - false - - - true - ${price_new} - = - true - product[price] - false - - - true - 2 - = - true - product[tax_class_id]admin - false - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - false - - - true - 3 - = - true - product[weight] - false - - - true - ${configurable_product_category_id} - = - true - product[category_ids][] - false - - - true - ${category_additional} - = - true - product[category_ids][] - false - - - true - <p>Configurable product description ${configurable_product_id} Edited</p> - = - true - product[description] - false - - - true - 1 - = - true - product[status] - false - - - true - ${configurable_product_name} Meta Title Edited - = - true - product[meta_title] - false - - - true - ${configurable_product_name} Meta Keyword Edited - = - true - product[meta_keyword] - false - - - true - ${configurable_product_name} Meta Description Edited - = - true - product[meta_description] - false - - - true - 1 - = - true - product[website_ids][] - false - - - true - ${special_price_new} - = - true - product[special_price] - false - - - true - - = - true - product[special_from_date] - false - - - true - - = - true - product[special_to_date] - false - - - true - - = - true - product[cost] - false - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - false - - - true - 0 - = - true - product[stock_data][min_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - false - - - true - 1 - = - true - product[stock_data][min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - false - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - false - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - false - - - true - 0 - = - true - product[stock_data][backorders] - false - - - true - 1 - = - true - product[stock_data][use_config_backorders] - false - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - false - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - false - - - true - 0 - = - true - product[stock_data][qty_increments] - false - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - false - - - true - 1 - = - true - product[stock_data][is_in_stock] - false - - - true - - = - true - product[custom_design] - false - - - true - - = - true - product[custom_design_from] - false - - - true - - = - true - product[custom_design_to] - false - - - true - - = - true - product[custom_layout_update] - false - - - true - - = - true - product[page_layout] - false - - - true - container2 - = - true - product[options_container] - false - - - true - ${configurable_attribute_id} - = - true - product[configurable_variation] - false - - - true - ${configurable_product_name} - = - true - product[url_key] - - - true - 1 - = - true - product[use_config_gift_message_available] - - - true - 1 - = - true - product[use_config_gift_wrapping_available] - - - true - 4 - = - true - product[visibility] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 50 - = - true - product[stock_data][qty] - false - - - true - configurable - = - true - product[stock_data][type_id] - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/id/${configurable_product_id}/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - false - - - try { - int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr")); - for (int i = 1; i <= attributesCount; i++) { - attributeId = vars.get("configurable_attribute_ids_" + i.toString()); - attributeCode = vars.get("configurable_attribute_codes_" + i.toString()); - attributeLabel = vars.get("configurable_attribute_labels_" + i.toString()); - ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId); - ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode); - ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString()); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel); - - int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr")); - for (int j = 1; j <= valuesCount; j++) { - attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString()); - ctx.getCurrentSampler().addArgument( - "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]", - "1" - ); - ctx.getCurrentSampler().addArgument( - "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]", - attributeValue - ); - } - } - ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString()); - } catch (Exception e) { - log.error("error???", e); - } - - - - - You saved the product - - Assertion.response_data - false - 2 - if have trouble see messages-message-error - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - - - continue - - false - ${loops} - - ${csrPoolUsers} - ${ramp_period} - 1505803944000 - 1505803944000 - false - - - mpaf/tool/fragments/_system/thread_group.jmx - - - 1 - false - 1 - ${adminReturnsManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin Returns Management"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/orders_page.jmx - - - - Create New Order - - Assertion.response_data - false - 2 - - - - - - - - - true - sales_order_grid - = - true - namespace - - - true - - = - true - search - - - true - true - = - true - filters[placeholder] - - - true - 200 - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - increment_id - = - true - sorting[field] - - - true - desc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - true - ${admin_form_key} - = - true - form_key - false - - - true - pending - = - true - filters[status] - true - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/open_orders.jmx - - - - totalRecords - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - - - true - sales_order_grid - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - 200 - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - increment_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - true - pending - = - true - filters[status] - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/search_orders.jmx - - - - totalRecords - - Assertion.response_data - false - 2 - - - - false - order_numbers - \"increment_id\":\"(\d+)\"\, - $1$ - - -1 - simple_products - - - - false - order_ids - \"entity_id\":\"(\d+)\"\, - $1$ - - -1 - simple_products - - - - - - mpaf/tool/fragments/ce/admin_create_process_returns/setup.jmx - - import java.util.ArrayList; - import java.util.HashMap; - import org.apache.jmeter.protocol.http.util.Base64Encoder; - import java.util.Random; - - // get count of "order_numbers" variable defined in "Search Pending Orders Limit" - int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr")); - - - int clusterLength; - int threadsNumber = ctx.getThreadGroup().getNumThreads(); - if (threadsNumber == 0) { - //Number of orders for one thread - clusterLength = ordersCount; - } else { - clusterLength = Math.round(ordersCount / threadsNumber); - if (clusterLength == 0) { - clusterLength = 1; - } - } - - //Current thread number starts from 0 - int currentThreadNum = ctx.getThreadNum(); - - //Index of the current product from the cluster - Random random = new Random(); - if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); - } - int iterator = random.nextInt(clusterLength); - if (iterator == 0) { - iterator = 1; - } - - int i = clusterLength * currentThreadNum + iterator; - - orderNumber = vars.get("order_numbers_" + i.toString()); - orderId = vars.get("order_ids_" + i.toString()); - vars.put("order_number", orderNumber); - vars.put("order_id", orderId); - - - - - false - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/view/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/open_order.jmx - - - - #${order_number} - - Assertion.response_data - false - 2 - - - - false - order_status - <span id="order_status">([^<]+)</span> - $1$ - - 1 - simple_products - - - - - - "${order_status}" == "Pending" - false - mpaf/tool/fragments/ce/admin_edit_order/if_controller.jmx - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/invoice_start.jmx - - - - Invoice Totals - - Assertion.response_data - false - 2 - - - - false - item_ids - <div id="order_item_(\d+)_title"\s*class="product-title"> - $1$ - - -1 - simple_products - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - 1 - = - true - invoice[items][${item_ids_1}] - - - true - 1 - = - true - invoice[items][${item_ids_2}] - - - true - Invoiced - = - true - invoice[comment_text] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx - - - - The invoice has been created - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_creditmemo/start/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/credit_memo_start.jmx - - - - New Memo - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - 1 - = - true - creditmemo[items][${item_ids_1}][qty] - - - true - 1 - = - true - creditmemo[items][${item_ids_2}][qty] - - - true - 1 - = - true - creditmemo[do_offline] - - - true - Credit Memo added - = - true - creditmemo[comment_text] - - - true - 10 - = - true - creditmemo[shipping_amount] - - - true - 0 - = - true - creditmemo[adjustment_positive] - - - true - 0 - = - true - creditmemo[adjustment_negative] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/credit_memo_full_refund.jmx - - - - You created the credit memo - - Assertion.response_data - false - 2 - - - - - - 1 - 0 - ${__javaScript(Math.round(${adminCreateProcessReturnsDelay}*1000))} - mpaf/tool/fragments/ce/admin_create_process_returns/pause.jmx - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${browseCustomerGridPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Browse Customer Grid"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - - vars.put("gridEntityType" , "Customer"); - - pagesCount = parseInt(vars.get("customers_page_size")) || 20; - vars.put("grid_entity_page_size" , pagesCount); - vars.put("grid_namespace" , "customer_listing"); - vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_customer_filter_text")); - vars.put("grid_filter_field", "name"); - - // set sort fields and sort directions - vars.put("grid_sort_field_1", "name"); - vars.put("grid_sort_field_2", "group_id"); - vars.put("grid_sort_field_3", "billing_country_id"); - vars.put("grid_sort_order_1", "asc"); - vars.put("grid_sort_order_2", "desc"); - - javascript - mpaf/tool/fragments/ce/admin_browse_customers_grid/setup.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; - var totalsRecord = parseInt(vars.get("entity_total_records")); - var pageCount = Math.round(totalsRecord/pageSize); - - vars.put("grid_pages_count", pageCount); - - javascript - - - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - ${grid_admin_browse_filter_text} - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; -var totalsRecord = parseInt(vars.get("entity_total_records")); -var pageCount = Math.round(totalsRecord/pageSize); - -vars.put("grid_pages_count_filtered", pageCount); - - javascript - - - - - - 1 - ${grid_pages_count} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - ${page_number} - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - 1 - ${grid_pages_count_filtered} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx - - - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx - - - - grid_sort_field - grid_sort_field - true - 0 - 3 - - - - grid_sort_order - grid_sort_order - true - 0 - 2 - - - - - - - true - ${grid_namespace} - = - true - namespace - false - - - true - ${grid_admin_browse_filter_text} - = - true - filters[${grid_filter_field}] - false - - - true - true - = - true - filters[placeholder] - false - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - false - - - true - ${page_number} - = - true - paging[current] - false - - - true - ${grid_sort_field} - = - true - sorting[field] - false - - - true - ${grid_sort_order} - = - true - sorting[direction] - false - - - true - true - = - true - isAjax - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${adminCreateOrderPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin Create Order"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - javascript - - - - - vars.put("alabama_region_id", props.get("alabama_region_id")); - vars.put("california_region_id", props.get("california_region_id")); - - mpaf/tool/fragments/ce/common/get_region_data.jmx - - - - - - mpaf/tool/fragments/ce/admin_create_order/admin_create_order.jmx - import org.apache.jmeter.samplers.SampleResult; -import java.util.Random; -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom}); -} -number = random.nextInt(props.get("simple_products_list").size()); -simpleList = props.get("simple_products_list").get(number); -vars.put("simple_product_1_url_key", simpleList.get("url_key")); -vars.put("simple_product_1_name", simpleList.get("title")); -vars.put("simple_product_1_id", simpleList.get("id")); - -do { - number1 = random.nextInt(props.get("simple_products_list").size()); -} while(number == number1); -simpleList = props.get("simple_products_list").get(number1); -vars.put("simple_product_2_url_key", simpleList.get("url_key")); -vars.put("simple_product_2_name", simpleList.get("title")); -vars.put("simple_product_2_id", simpleList.get("id")); - -number = random.nextInt(props.get("configurable_products_list").size()); -configurableList = props.get("configurable_products_list").get(number); -vars.put("configurable_product_1_url_key", configurableList.get("url_key")); -vars.put("configurable_product_1_name", configurableList.get("title")); -vars.put("configurable_product_1_id", configurableList.get("id")); -vars.put("configurable_product_1_sku", configurableList.get("sku")); -vars.put("configurable_attribute_id", configurableList.get("attribute_id")); -vars.put("configurable_option_id", configurableList.get("attribute_option_id")); - - -customers_index = 0; -if (!props.containsKey("customer_ids_index")) { - props.put("customer_ids_index", customers_index); -} - -try { - customers_index = props.get("customer_ids_index"); - customers_list = props.get("customer_ids_list"); - - if (customers_index == customers_list.size()) { - customers_index=0; - } - vars.put("customer_id", customers_list.get(customers_index)); - props.put("customer_ids_index", ++customers_index); -} -catch (java.lang.Exception e) { - log.error("Caught Exception in 'Admin Create Order' thread."); - SampleResult.setStopThread(true); -} - - - true - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/start/ - GET - true - false - true - false - false - - Detected the start of a redirect chain - - - - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${configurable_product_1_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - true - item[${simple_product_1_id}][qty] - 1 - = - true - - - true - item[${simple_product_2_id}][qty] - 1 - = - true - - - true - item[${configurable_product_1_id}][qty] - 1 - = - true - - - true - customer_id - ${customer_id} - = - true - - - true - store_id - 1 - = - true - - - true - currency_id - - = - true - - - true - form_key - ${admin_form_key} - = - true - - - true - payment[method] - checkmo - = - true - - - true - reset_shipping - 1 - = - true - - - true - json - 1 - = - true - - - true - as_js_varname - iFrameResponse - = - true - - - true - form_key - ${admin_form_key} - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/loadBlock/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true - POST - true - false - true - false - false - - Detected the start of a redirect chain - - - - false - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - - ctx.getCurrentSampler().addArgument("item[" + vars.get("configurable_product_1_id") + "][super_attribute][" + attribute_ids_array[i] + "]", option_values_array[i]); - } -} catch (Exception e) { - log.error("error???", e); -} - - - - - - - - true - collect_shipping_rates - 1 - = - true - - - true - customer_id - ${customer_id} - = - true - - - true - store_id - 1 - = - true - - - true - currency_id - false - = - true - - - true - form_key - ${admin_form_key} - = - true - - - true - payment[method] - checkmo - = - true - - - true - json - true - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/loadBlock/block/shipping_method,totals?isAjax=true - POST - true - false - true - false - false - - - - - - shipping_method - Flat Rate - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/index/ - GET - true - false - true - false - false - - Detected the start of a redirect chain - - - - - Select from existing customer addresses - Submit Order - Items Ordered - - Assertion.response_data - false - 2 - - - - - - - - true - form_key - ${admin_form_key} - = - true - - - true - limit - 20 - = - true - - - true - entity_id - - = - true - - - true - name - - = - true - - - true - email - - = - true - - - true - Telephone - - = - true - - - true - billing_postcode - - = - true - - - true - billing_country_id - - = - true - - - true - billing_region - - = - true - - - true - store_name - - = - true - - - true - page - 1 - = - true - - - true - order[currency] - USD - = - true - - - true - sku - - = - true - - - true - qty - - = - true - - - true - limit - 20 - = - true - - - true - entity_id - - = - true - - - true - name - - = - true - - - true - sku - - = - true - - - true - price[from] - - = - true - - - true - price[to] - - = - true - - - true - in_products - - = - true - - - true - page - 1 - = - true - - - true - coupon_code - - = - true - - - true - order[account][group_id] - 1 - = - true - - - true - order[account][email] - user_${customer_id}@example.com - = - true - - - true - order[billing_address][customer_address_id] - - = - true - - - true - order[billing_address][prefix] - - = - true - - - true - order[billing_address][firstname] - Anthony - = - true - - - true - order[billing_address][middlename] - - = - true - - - true - order[billing_address][lastname] - Nealy - = - true - - - true - order[billing_address][suffix] - - = - true - - - true - order[billing_address][company] - - = - true - - - true - order[billing_address][street][0] - 123 Freedom Blvd. #123 - = - true - - - true - order[billing_address][street][1] - - = - true - - - true - order[billing_address][city] - Fayetteville - = - true - - - true - order[billing_address][country_id] - US - = - true - - - true - order[billing_address][region] - - = - true - - - true - order[billing_address][region_id] - ${alabama_region_id} - = - true - - - true - order[billing_address][postcode] - 123123 - = - true - - - true - order[billing_address][telephone] - 022-333-4455 - = - true - - - true - order[billing_address][fax] - - = - true - - - true - order[billing_address][vat_id] - - = - true - - - true - shipping_same_as_billing - on - = - true - - - true - payment[method] - checkmo - = - true - - - true - order[shipping_method] - flatrate_flatrate - = - true - - - true - order[comment][customer_note] - - = - true - - - true - order[comment][customer_note_notify] - 1 - = - true - - - true - order[send_confirmation] - 1 - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/save/ - POST - true - false - true - true - false - - Detected the start of a redirect chain - - - - false - order_id - ${host}${base_path}${admin_path}/sales/order/index/order_id/(\d+)/ - $1$ - - 1 - - - - false - order_item_1 - order_item_(\d+)_title - $1$ - - 1 - - - - false - order_item_2 - order_item_(\d+)_title - $1$ - - 2 - - - - false - order_item_3 - order_item_(\d+)_title - $1$ - - 3 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_item_1 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_item_2 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_item_3 - - - - - You created the order. - - Assertion.response_data - false - 2 - - - - - - - - true - form_key - ${admin_form_key} - = - true - - - true - invoice[items][${order_item_1}] - 1 - = - true - - - true - invoice[items][${order_item_2}] - 1 - = - true - - - true - invoice[items][${order_item_3}] - 1 - = - true - - - true - invoice[comment_text] - - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/ - POST - true - false - true - false - false - - Detected the start of a redirect chain - - - - - The invoice has been created. - - Assertion.response_data - false - 2 - - - - - - - - true - form_key - ${admin_form_key} - = - true - - - true - shipment[items][${order_item_1}] - 1 - = - true - - - true - shipment[items][${order_item_2}] - 1 - = - true - - - true - shipment[items][${order_item_3}] - 1 - = - true - - - true - shipment[comment_text] - - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/ - POST - true - false - true - false - false - - Detected the start of a redirect chain - - - - - The shipment has been created. - - Assertion.response_data - false - 2 - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - - - continue - - false - ${loops} - - ${apiPoolUsers} - ${ramp_period} - 1505803944000 - 1505803944000 - false - - - mpaf/tool/fragments/_system/thread_group.jmx - - - 1 - false - 1 - ${apiBasePercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - - Authorization - Bearer ${admin_token} - - - mpaf/tool/fragments/ce/api/header_manager.jmx - - - - 1 - false - 1 - 100 - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API Create Customer"); - - true - - - - - true - - - - false - { - "customer": { - - "email": "customer_${__time()}-${__threadNum}-${__Random(1,1000000)}@example.com", - "firstname": "test_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "lastname": "Doe" - }, - "password": "test@123" -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/customers - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_customer.jmx - - - customer_id - $.id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - customer_id - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/customers/${customer_id} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/check_customer.jmx - - - $.id - ${customer_id} - true - false - false - - - - - - - - 1 - false - 1 - 100 - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API Catalog Browsing"); - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/categories - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/get_categories.jmx - - - - errors - - Assertion.response_data - false - 6 - variable - - - - - search_category_id - $.id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - search_category_id - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/categories/${search_category_id} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/get_category.jmx - - - - errors - - Assertion.response_data - false - 6 - variable - - - - - - - - - - true - 20 - = - true - searchCriteria[page_size] - true - - - true - 1 - = - true - searchCriteria[current_page] - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/get_products.jmx - - - - errors - - Assertion.response_data - false - 6 - variable - - - - - - - - - 1 - false - 1 - 100 - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API Search"); - - true - - - - - - - - true - quick_search_container - = - true - searchCriteria[request_name] - - - true - search_term - = - true - searchCriteria[filter_groups][0][filters][0][field] - - - true - Simple - = - true - searchCriteria[filter_groups][0][filters][0][value] - - - true - 20 - = - true - searchCriteria[page_size] - - - true - 1 - = - true - searchCriteria[current_page] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/search - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/search_for_product_frontend.jmx - - - $.total_count - 0 - true - false - true - - - - search_product_id - $.items[0].id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - search_product_id - - - - - - - - 1 - false - 1 - 100 - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API Checkout"); - - true - - - - - javascript - - - - - vars.put("alabama_region_id", props.get("alabama_region_id")); - vars.put("california_region_id", props.get("california_region_id")); - - mpaf/tool/fragments/ce/common/get_region_data.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_quote.jmx - - - quote_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - quote_id - - - - - - true - - - - false - { - "cartItem": { - "sku": "${product_sku}", - "qty":"1", - "quote_id":"${quote_id}" - } -} - - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts/${quote_id}/items - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/add_product_to_quote_hardwired_sku.jmx - - - - $.sku - ${product_sku} - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts/${quote_id}/items - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/check_product_in_quote_hardwired_sku.jmx - - - $[0].sku - ${product_sku} - true - false - false - - - - - - true - - - - false - { - "storeId": 1 -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_guest_cart.jmx - - - cart_id - $ - - - BODY - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - cart_id - - - - - - true - - - - false - { - "cartItem": { - "sku": "${product_sku}", - "qty":"1", - "quote_id":"${cart_id}" - } -} - - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/items - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/add_product_to_guest_cart_hardwired_sku.jmx - - - $.quote_id - ^[a-z0-9-]+$ - true - false - false - - - - - - true - - - - false - { - "sender": "John Doe", - "recipient": "Jane Roe", - "giftMessage": "Gift Message Text" -} - - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/gift-message - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/add_gift_message_to_guest_cart.jmx - - - $ - true - true - false - false - - - - - - true - - - - false - {"address":{"country_id":"US","postcode":"95630"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - "available":true - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - {"payment_methods": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname","save_in_address_book":0}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/checkout_payment_info_place_order.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - "[0-9]+" - - Assertion.response_data - false - 2 - - - - order_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_id - - - - - - - - 1 - false - 1 - 100 - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API Product Management"); - - true - - - - - true - - - - false - { - "product": { - "sku": "psku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}", - "name": "Product_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "attributeSetId": 4 - } -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_product_no_custom_attributes.jmx - - - simple_product_id - $.id - - - BODY - - - - simple_product_sku - $.sku - - - BODY - - - - simple_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - simple_product_id - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - simple_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - simple_stock_item_id - - - - - - true - - - - false - { - "stock_item": { - "manage_stock": 1, - "is_in_stock": 1, - "qty": ${simple_product_id} - } - } - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/${simple_product_sku}/stockItems/${simple_stock_item_id} - PUT - true - false - true - false - false - - mpaf/tool/fragments/ce/api/update_product_stock_info.jmx - - - $ - ${simple_stock_item_id} - true - false - false - - - - - - true - - - - true - - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/${simple_product_sku} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/check_product.jmx - - - $.sku - ${simple_product_sku} - true - false - false - - - - $.id - ${simple_product_id} - true - false - false - - - - $.extension_attributes.stock_item.item_id - ${simple_stock_item_id} - true - false - false - - - - $.extension_attributes.stock_item.qty - ${simple_product_id} - true - false - false - - - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}", - "name": "Extensible_Product_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "4", - "type_id": "simple", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":0, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_product_with_extensible_data_objects.jmx - - - simple_product_id - $.id - - - BODY - - - - simple_product_sku - $.sku - - - BODY - - - - simple_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - simple_product_id - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - simple_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - simple_stock_item_id - - - - - - true - - - - true - - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/${simple_product_sku} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/check_product_with_extensible_data_objects.jmx - - - $.sku - ${simple_product_sku} - true - false - false - - - - $.id - ${simple_product_id} - true - false - false - - - - $.extension_attributes.stock_item.item_id - ${simple_stock_item_id} - true - false - false - - - - $.extension_attributes.stock_item.qty - 100 - true - false - false - - - - - - - - - - - - continue - - false - ${loops} - - ${oneThreadScenariosPoolUsers} - ${ramp_period} - 1505803944000 - 1505803944000 - false - - - mpaf/tool/fragments/_system/thread_group.jmx - - - 1 - false - 1 - ${importProductsPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Import Products"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - vars.put("entity", "catalog_product"); -String behavior = "${adminImportProductBehavior}"; -vars.put("adminImportBehavior", behavior); -String filepath = "${files_folder}${adminImportProductFilePath}"; -vars.put("adminImportFilePath", filepath); - - - true - mpaf/tool/fragments/ce/import_products/setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/import/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/import.jmx - - - - Import Settings - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${entity} - = - true - entity - - - true - ${adminImportBehavior} - = - true - behavior - - - true - validation-stop-on-errors - = - true - validation_strategy - - - true - 10 - = - true - allowed_error_count - - - true - , - = - true - _import_field_separator - - - true - , - = - true - _import_multiple_value_separator - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/import/validate - POST - true - false - true - false - HttpClient4 - - - - ${adminImportFilePath} - import_file - application/vnd.ms-excel - - - - false - - mpaf/tool/fragments/ce/common/import_validate.jmx - - - - File is valid! To start import process - - Assertion.response_data - false - 16 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${entity} - = - true - entity - - - true - ${adminImportBehavior} - = - true - behavior - - - true - validation-stop-on-errors - = - true - validation_strategy - false - - - true - 10 - = - true - allowed_error_count - false - - - true - , - = - true - _import_field_separator - false - - - true - , - = - true - _import_multiple_value_separator - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/import/start - POST - true - false - true - false - HttpClient4 - - - - ${adminImportFilePath} - import_file - application/vnd.ms-excel - - - - false - - mpaf/tool/fragments/ce/common/import_save.jmx - - - - Import successfully done - - Assertion.response_data - false - 16 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${importCustomersPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Import Customers"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - vars.put("entity", "customer"); -String behavior = "${adminImportCustomerBehavior}"; -vars.put("adminImportBehavior", behavior); -String filepath = "${files_folder}${adminImportCustomerFilePath}"; -vars.put("adminImportFilePath", filepath); - - - true - mpaf/tool/fragments/ce/import_customers/setup.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/import/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/import.jmx - - - - Import Settings - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${entity} - = - true - entity - - - true - ${adminImportBehavior} - = - true - behavior - - - true - validation-stop-on-errors - = - true - validation_strategy - - - true - 10 - = - true - allowed_error_count - - - true - , - = - true - _import_field_separator - - - true - , - = - true - _import_multiple_value_separator - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/import/validate - POST - true - false - true - false - HttpClient4 - - - - ${adminImportFilePath} - import_file - application/vnd.ms-excel - - - - false - - mpaf/tool/fragments/ce/common/import_validate.jmx - - - - File is valid! To start import process - - Assertion.response_data - false - 16 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${entity} - = - true - entity - - - true - ${adminImportBehavior} - = - true - behavior - - - true - validation-stop-on-errors - = - true - validation_strategy - false - - - true - 10 - = - true - allowed_error_count - false - - - true - , - = - true - _import_field_separator - false - - - true - , - = - true - _import_multiple_value_separator - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/import/start - POST - true - false - true - false - HttpClient4 - - - - ${adminImportFilePath} - import_file - application/vnd.ms-excel - - - - false - - mpaf/tool/fragments/ce/common/import_save.jmx - - - - Import successfully done - - Assertion.response_data - false - 16 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${apiSinglePercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - - Authorization - Bearer ${admin_token} - - - mpaf/tool/fragments/ce/api/header_manager.jmx - - - - 1 - false - 1 - 100 - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API Process Orders"); - - true - - - - - // Each thread gets an equal number of orders, based on how many orders are available. - - int apiProcessOrders = Integer.parseInt("${apiProcessOrders}"); - if (apiProcessOrders > 0) { - ordersPerThread = apiProcessOrders; - } else { - ordersPerThread = 1; - } - - - threadNum = ${__threadNum}; - vars.put("ordersPerThread", String.valueOf(ordersPerThread)); - vars.put("threadNum", String.valueOf(threadNum)); - - - - - false - mpaf/tool/fragments/ce/api/process_orders/setup.jmx - - - - - - - true - status - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - true - Pending - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - true - ${ordersPerThread} - = - true - searchCriteria[pageSize] - - - true - ${threadNum} - = - true - searchCriteria[current_page] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/orders - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/process_orders/get_orders.jmx - - - entity_ids - $.items[*].entity_id - - - BODY - - - - - - entity_ids - order_id - true - mpaf/tool/fragments/ce/api/process_orders/for_each_order.jmx - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/order/${order_id}/invoice - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/process_orders/create_invoice.jmx - - - - "\d+" - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/order/${order_id}/ship - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/process_orders/create_shipment.jmx - - - - "\d+" - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - 100 - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "API Product Attribute Management"); - - true - - - - - true - - - - false - { - "attributeSet": { - "attribute_set_name": "new_attribute_set_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "sort_order": 500 - }, - "skeletonId": "4" -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/attribute-sets/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_attribute_set.jmx - - - attribute_set_id - $.attribute_set_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - attribute_set_id - - - - - - true - - - - false - { - "group": { - "attribute_group_name": "empty_attribute_group_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "attribute_set_id": ${attribute_set_id} - } -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/attribute-sets/groups - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_attribute_group.jmx - - - attribute_group_id - $.attribute_group_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - attribute_set_id - - - - - - true - - - - false - { - "attribute": { - "attribute_code": "attr_code_${__time()}", - "frontend_labels": [ - { - "store_id": 0, - "label": "front_lbl_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}" - } - ], - "default_value": "default value", - "frontend_input": "textarea", - "is_required": 1 - } -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_attribute.jmx - - - attribute_id - $.attribute_id - - - BODY - - - - attribute_code - $.attribute_code - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - attribute_id - - - - - ^[a-z0-9-_]+$ - - Assertion.response_data - false - 1 - variable - attribute_code - - - - - - true - - - - false - { - "attributeSetId": "${attribute_set_id}", - "attributeGroupId": "${attribute_group_id}", - "attributeCode": "${attribute_code}", - "sortOrder": 3 -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/attribute-sets/attributes - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/add_attribute_to_attribute_set.jmx - - - $ - (\d+) - true - false - false - - - - - - - - - - 1 - false - 1 - ${adminCategoryManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin Category Management"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_category_management/admin_category_management.jmx - - - - javascript - - - - random = new java.util.Random(); -if (${seedForRandom} > 0) { -random.setSeed(${seedForRandom} + ${__threadNum}); -} - -/** - * Get unique ids for fix concurrent category saving - */ -function getNextProductNumber(i) { - number = productsVariationsSize * ${__threadNum} - i; - if (number >= productsSize) { - log.info("${testLabel}: capacity of product list is not enough for support all ${adminPoolUsers} threads"); - return random.nextInt(productsSize); - } - return productsVariationsSize * ${__threadNum} - i; -} - -var productsVariationsSize = 5, - productsSize = props.get("simple_products_list_for_edit").size(); - - -for (i = 1; i<= productsVariationsSize; i++) { - var productVariablePrefix = "simple_product_" + i + "_"; - number = getNextProductNumber(i); - simpleList = props.get("simple_products_list_for_edit").get(number); - - vars.put(productVariablePrefix + "url_key", simpleList.get("url_key")); - vars.put(productVariablePrefix + "id", simpleList.get("id")); - vars.put(productVariablePrefix + "name", simpleList.get("title")); -} - -categoryIndex = random.nextInt(props.get("admin_category_ids_list").size()); -vars.put("parent_category_id", props.get("admin_category_ids_list").get(categoryIndex)); -do { -categoryIndexNew = random.nextInt(props.get("admin_category_ids_list").size()); -} while(categoryIndex == categoryIndexNew); -vars.put("new_parent_category_id", props.get("admin_category_ids_list").get(categoryIndexNew)); - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/ - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/edit/id/${parent_category_id}/ - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/add/store/0/parent/${parent_category_id} - GET - true - false - true - false - false - - - - - - <title>New Category - - Assertion.response_data - false - 2 - - - - - - - - true - - = - true - id - - - true - ${parent_category_id} - = - true - parent - - - true - - = - true - path - - - true - - = - true - store_id - - - true - 0 - = - true - is_active - - - true - 0 - = - true - include_in_menu - - - true - 1 - = - true - is_anchor - - - true - true - = - true - use_config[available_sort_by] - - - true - true - = - true - use_config[default_sort_by] - - - true - true - = - true - use_config[filter_price_range] - - - true - false - = - true - use_default[url_key] - - - true - 0 - = - true - url_key_create_redirect - - - true - 0 - = - true - custom_use_parent_settings - - - true - 0 - = - true - custom_apply_to_products - - - true - Admin Category Management ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - name - - - true - admin-category-management-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - url_key - - - true - - = - true - meta_title - - - true - - = - true - description - - - true - PRODUCTS - = - true - display_mode - - - true - position - = - true - default_sort_by - - - true - - = - true - meta_keywords - - - true - - = - true - meta_description - - - true - - = - true - custom_layout_update - - - false - {"${simple_product_1_id}":"","${simple_product_2_id}":"","${simple_product_3_id}":"","${simple_product_4_id}":"","${simple_product_5_id}":""} - = - true - category_products - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/save/ - POST - true - false - true - false - false - - - - - URL - admin_category_id - /catalog/category/edit/id/(\d+)/ - $1$ - - 1 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_id - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/edit/id/${admin_category_id}/ - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - false - admin_category_entity_id - "entity_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_attribute_set_id - "attribute_set_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_parent_id - "parent_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_created_at - "created_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_updated_at - "updated_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_path - "entity_id":(.+)"path":"([^\"]+)" - $2$ - - 1 - - - - false - admin_category_level - "level":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_name - "entity_id":(.+)"name":"([^"]+)" - $2$ - - 1 - - - - false - admin_category_url_key - "url_key":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_url_path - "url_path":"([^"]+)" - $1$ - - 1 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_entity_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_attribute_set_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_parent_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_created_at - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_updated_at - - - - - ^[\d\\\/]+$ - - Assertion.response_data - false - 1 - variable - admin_category_path - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_level - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_name - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_url_key - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_url_path - - - - - ${simple_product_1_name} - ${simple_product_2_name} - ${simple_product_3_name} - ${simple_product_4_name} - ${simple_product_5_name} - - Assertion.response_data - false - 2 - - - - - - - - true - ${admin_category_id} - = - true - id - - - true - ${admin_form_key} - = - true - form_key - - - true - append - = - true - point - - - true - ${new_parent_category_id} - = - true - pid - - - true - ${parent_category_id} - = - true - paid - - - true - 0 - = - true - aid - - - true - true - = - true - isAjax - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/move/ - POST - true - false - true - false - false - - - - - - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/delete/id/${admin_category_id}/ - POST - true - false - true - false - false - - - - - - You deleted the category. - - Assertion.response_data - false - 2 - - - - - 1 - 0 - ${__javaScript(Math.round(${adminCategoryManagementDelay}*1000))} - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${adminPromotionRulesPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin Promotion Rules"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_promotions_management/admin_promotions_management.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales_rule/promo_quote/ - GET - true - false - true - false - false - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales_rule/promo_quote/new - GET - true - false - true - false - false - - - - - - - - true - true - = - true - isAjax - - - true - ${admin_form_key} - = - true - form_key - true - - - true - 1--1 - = - true - id - - - true - Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal - = - true - type - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales_rule/promo_quote/newConditionHtml/form/sales_rule_formrule_conditions_fieldset_/form_namespace/sales_rule_form - POST - true - false - true - false - false - - - - - - - - true - Rule Name ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - name - - - true - 0 - = - true - is_active - - - true - 0 - = - true - use_auto_generation - - - true - 1 - = - true - is_rss - - - true - 0 - = - true - apply_to_shipping - - - true - 0 - = - true - stop_rules_processing - - - true - - = - true - coupon_code - - - true - - = - true - uses_per_coupon - - - true - - = - true - uses_per_customer - - - true - - = - true - sort_order - - - true - 5 - = - true - discount_amount - - - true - 0 - = - true - discount_qty - - - true - - = - true - discount_step - - - true - - = - true - reward_points_delta - - - true - - = - true - store_labels[0] - - - true - Rule Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - description - - - true - 1 - = - true - coupon_type - - - true - cart_fixed - = - true - simple_action - - - true - 1 - = - true - website_ids[0] - - - true - 0 - = - true - customer_group_ids[0] - - - true - - = - true - from_date - - - true - - = - true - to_date - - - true - Magento\SalesRule\Model\Rule\Condition\Combine - = - true - rule[conditions][1][type] - - - true - all - = - true - rule[conditions][1][aggregator] - - - true - 1 - = - true - rule[conditions][1][value] - - - true - Magento\SalesRule\Model\Rule\Condition\Address - = - true - rule[conditions][1--1][type] - - - true - base_subtotal - = - true - rule[conditions][1--1][attribute] - - - true - >= - = - true - rule[conditions][1--1][operator] - - - true - 100 - = - true - rule[conditions][1--1][value] - - - true - - = - true - rule[conditions][1][new_chlid] - - - true - Magento\SalesRule\Model\Rule\Condition\Product\Combine - = - true - rule[actions][1][type] - - - true - all - = - true - rule[actions][1][aggregator] - - - true - 1 - = - true - rule[actions][1][value] - - - true - - = - true - rule[actions][1][new_child] - - - true - - = - true - store_labels[1] - - - true - - = - true - store_labels[2] - - - true - - = - true - related_banners - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales_rule/promo_quote/save/ - POST - true - false - true - false - false - - - - - - You saved the rule. - - Assertion.response_data - false - 16 - - - - - 1 - 0 - ${__javaScript(Math.round(${adminPromotionsManagementDelay}*1000))} - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${adminCustomerManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin Customer Management"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_customer_management/admin_customer_management.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/customer/index - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - - - - - true - customer_listing - = - true - namespace - - - true - - = - true - search - - - true - true - = - true - filters[placeholder] - - - true - 20 - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - entity_id - = - true - sorting[field] - - - true - asc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - - X-Requested-With - XMLHttpRequest - - - - - - - - - - true - customer_listing - = - true - namespace - - - true - Lastname - = - true - search - - - true - true - = - true - filters[placeholder] - - - true - 20 - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - entity_id - = - true - sorting[field] - - - true - asc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - - X-Requested-With - XMLHttpRequest - - - - - - false - customer_edit_url_path - actions":\{"edit":\{"href":"(?:http|https):\\/\\/(.*?)\\/customer\\/index\\/edit\\/id\\/(\d+)\\/", - /customer/index/edit/id/$2$/ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - customer_edit_url_path - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}${customer_edit_url_path} - GET - true - false - true - false - false - - - - - - Customer Information - - Assertion.response_data - false - 2 - - - - false - admin_customer_entity_id - "entity_id":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_website_id - "website_id":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_firstname - "firstname":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_lastname - "lastname":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_email - "email":"([^\@]+@[^.]+.[^"]+)" - $1$ - - 1 - - - - false - admin_customer_group_id - "group_id":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_store_id - "store_id":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_created_at - "created_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_updated_at - "updated_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_is_active - "is_active":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_disable_auto_group_change - "disable_auto_group_change":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_created_in - "created_in":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_dob - "dob":"(\d+)-(\d+)-(\d+)" - $2$/$3$/$1$ - - 1 - - - - false - admin_customer_default_billing - "default_billing":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_default_shipping - "default_shipping":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_gender - "gender":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_failures_num - "failures_num":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_address_entity_id - _address":\{"entity_id":"(\d+)".+?"parent_id":"${admin_customer_entity_id}" - $1$ - - 1 - - - - false - admin_customer_address_created_at - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"created_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_updated_at - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"updated_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_is_active - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"is_active":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_address_city - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"city":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_country_id - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"country_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_firstname - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"firstname":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_lastname - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"lastname":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_postcode - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"postcode":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_region - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_region_id - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_street - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"street":\["([^"]+)"\] - $1$ - - 1 - - - - false - admin_customer_address_telephone - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"telephone":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_customer_id - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"customer_id":"([^"]+)" - $1$ - - 1 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_entity_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_website_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_firstname - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_lastname - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_email - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_group_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_store_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_created_at - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_updated_at - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_is_active - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_disable_auto_group_change - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_created_in - - - - - ^\d+/\d+/\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_dob - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_default_billing - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_default_shipping - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_gender - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_failures_num - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_entity_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_created_at - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_updated_at - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_is_active - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_city - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_country_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_firstname - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_lastname - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_postcode - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_region - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_region_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_street - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_telephone - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_customer_id - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - - - - - true - true - = - true - isAjax - - - true - ${admin_customer_entity_id} - = - true - customer[entity_id] - - - true - ${admin_customer_website_id} - = - true - customer[website_id] - - - true - ${admin_customer_email} - = - true - customer[email] - - - true - ${admin_customer_group_id} - = - true - customer[group_id] - - - true - ${admin_customer_store_id} - = - true - customer[store_id] - - - true - ${admin_customer_created_at} - = - true - customer[created_at] - - - true - ${admin_customer_updated_at} - = - true - customer[updated_at] - - - true - ${admin_customer_is_active} - = - true - customer[is_active] - - - true - ${admin_customer_disable_auto_group_change} - = - true - customer[disable_auto_group_change] - - - true - ${admin_customer_created_in} - = - true - customer[created_in] - - - true - - = - true - customer[prefix] - - - true - ${admin_customer_firstname} 1 - = - true - customer[firstname] - - - true - - = - true - customer[middlename] - - - true - ${admin_customer_lastname} 1 - = - true - customer[lastname] - - - true - - = - true - customer[suffix] - - - true - ${admin_customer_dob} - = - true - customer[dob] - - - true - ${admin_customer_default_billing} - = - true - customer[default_billing] - - - true - ${admin_customer_default_shipping} - = - true - customer[default_shipping] - - - true - - = - true - customer[taxvat] - - - true - ${admin_customer_gender} - = - true - customer[gender] - - - true - ${admin_customer_failures_num} - = - true - customer[failures_num] - - - true - ${admin_customer_store_id} - = - true - customer[sendemail_store_id] - - - true - ${admin_customer_address_entity_id} - = - true - address[${admin_customer_address_entity_id}][entity_id] - - - true - ${admin_customer_address_created_at} - = - true - address[${admin_customer_address_entity_id}][created_at] - - - true - ${admin_customer_address_updated_at} - = - true - address[${admin_customer_address_entity_id}][updated_at] - - - true - ${admin_customer_address_is_active} - = - true - address[${admin_customer_address_entity_id}][is_active] - - - true - ${admin_customer_address_city} - = - true - address[${admin_customer_address_entity_id}][city] - - - true - - = - true - address[${admin_customer_address_entity_id}][company] - - - true - ${admin_customer_address_country_id} - = - true - address[${admin_customer_address_entity_id}][country_id] - - - true - ${admin_customer_address_firstname} - = - true - address[${admin_customer_address_entity_id}][firstname] - - - true - ${admin_customer_address_lastname} - = - true - address[${admin_customer_address_entity_id}][lastname] - - - true - - = - true - address[${admin_customer_address_entity_id}][middlename] - - - true - ${admin_customer_address_postcode} - = - true - address[${admin_customer_address_entity_id}][postcode] - - - true - - = - true - address[${admin_customer_address_entity_id}][prefix] - - - true - ${admin_customer_address_region} - = - true - address[${admin_customer_address_entity_id}][region] - - - true - ${admin_customer_address_region_id} - = - true - address[${admin_customer_address_entity_id}][region_id] - - - true - ${admin_customer_address_street} - = - true - address[${admin_customer_address_entity_id}][street][0] - - - true - - = - true - address[${admin_customer_address_entity_id}][street][1] - - - true - - = - true - address[${admin_customer_address_entity_id}][suffix] - - - true - ${admin_customer_address_telephone} - = - true - address[${admin_customer_address_entity_id}][telephone] - - - true - - = - true - address[${admin_customer_address_entity_id}][vat_id] - - - true - ${admin_customer_address_customer_id} - = - true - address[${admin_customer_address_entity_id}][customer_id] - - - true - true - = - true - address[${admin_customer_address_entity_id}][default_billing] - - - true - true - = - true - address[${admin_customer_address_entity_id}][default_shipping] - - - true - - = - true - address[new_0][prefix] - - - true - John - = - true - address[new_0][firstname] - - - true - - = - true - address[new_0][middlename] - - - true - Doe - = - true - address[new_0][lastname] - - - true - - = - true - address[new_0][suffix] - - - true - Test Company - = - true - address[new_0][company] - - - true - Folsom - = - true - address[new_0][city] - - - true - 95630 - = - true - address[new_0][postcode] - - - true - 1234567890 - = - true - address[new_0][telephone] - - - true - - = - true - address[new_0][vat_id] - - - true - false - = - true - address[new_0][default_billing] - - - true - false - = - true - address[new_0][default_shipping] - - - true - 123 Main - = - true - address[new_0][street][0] - - - true - - = - true - address[new_0][street][1] - - - true - - = - true - address[new_0][region] - - - true - US - = - true - address[new_0][country_id] - - - true - ${admin_customer_address_region_id} - = - true - address[new_0][region_id] - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/customer/index/validate/ - POST - true - false - true - false - false - - - - - - 200 - - Assertion.response_code - false - 16 - - - - - - - - true - true - = - true - isAjax - - - true - ${admin_customer_entity_id} - = - true - customer[entity_id] - - - true - ${admin_customer_website_id} - = - true - customer[website_id] - - - true - ${admin_customer_email} - = - true - customer[email] - - - true - ${admin_customer_group_id} - = - true - customer[group_id] - - - true - ${admin_customer_store_id} - = - true - customer[store_id] - - - true - ${admin_customer_created_at} - = - true - customer[created_at] - - - true - ${admin_customer_updated_at} - = - true - customer[updated_at] - - - true - ${admin_customer_is_active} - = - true - customer[is_active] - - - true - ${admin_customer_disable_auto_group_change} - = - true - customer[disable_auto_group_change] - - - true - ${admin_customer_created_in} - = - true - customer[created_in] - - - true - - = - true - customer[prefix] - - - true - ${admin_customer_firstname} 1 - = - true - customer[firstname] - - - true - - = - true - customer[middlename] - - - true - ${admin_customer_lastname} 1 - = - true - customer[lastname] - - - true - - = - true - customer[suffix] - - - true - ${admin_customer_dob} - = - true - customer[dob] - - - true - ${admin_customer_default_billing} - = - true - customer[default_billing] - - - true - ${admin_customer_default_shipping} - = - true - customer[default_shipping] - - - true - - = - true - customer[taxvat] - - - true - ${admin_customer_gender} - = - true - customer[gender] - - - true - ${admin_customer_failures_num} - = - true - customer[failures_num] - - - true - ${admin_customer_store_id} - = - true - customer[sendemail_store_id] - - - true - ${admin_customer_address_entity_id} - = - true - address[${admin_customer_address_entity_id}][entity_id] - - - - true - ${admin_customer_address_created_at} - = - true - address[${admin_customer_address_entity_id}][created_at] - - - true - ${admin_customer_address_updated_at} - = - true - address[${admin_customer_address_entity_id}][updated_at] - - - true - ${admin_customer_address_is_active} - = - true - address[${admin_customer_address_entity_id}][is_active] - - - true - ${admin_customer_address_city} - = - true - address[${admin_customer_address_entity_id}][city] - - - true - - = - true - address[${admin_customer_address_entity_id}][company] - - - true - ${admin_customer_address_country_id} - = - true - address[${admin_customer_address_entity_id}][country_id] - - - true - ${admin_customer_address_firstname} - = - true - address[${admin_customer_address_entity_id}][firstname] - - - true - ${admin_customer_address_lastname} - = - true - address[${admin_customer_address_entity_id}][lastname] - - - true - - = - true - address[${admin_customer_address_entity_id}][middlename] - - - true - ${admin_customer_address_postcode} - = - true - address[${admin_customer_address_entity_id}][postcode] - - - true - - = - true - address[${admin_customer_address_entity_id}][prefix] - - - true - ${admin_customer_address_region} - = - true - address[${admin_customer_address_entity_id}][region] - - - true - ${admin_customer_address_region_id} - = - true - address[${admin_customer_address_entity_id}][region_id] - - - true - ${admin_customer_address_street} - = - true - address[${admin_customer_address_entity_id}][street][0] - - - true - - = - true - address[${admin_customer_address_entity_id}][street][1] - - - true - - = - true - address[${admin_customer_address_entity_id}][suffix] - - - true - ${admin_customer_address_telephone} - = - true - address[${admin_customer_address_entity_id}][telephone] - - - true - - = - true - address[${admin_customer_address_entity_id}][vat_id] - - - true - ${admin_customer_address_customer_id} - = - true - address[${admin_customer_address_entity_id}][customer_id] - - - true - true - = - true - address[${admin_customer_address_entity_id}][default_billing] - - - true - true - = - true - address[${admin_customer_address_entity_id}][default_shipping] - - - true - - = - true - address[new_0][prefix] - - - true - John - = - true - address[new_0][firstname] - - - true - - = - true - address[new_0][middlename] - - - true - Doe - = - true - address[new_0][lastname] - - - true - - = - true - address[new_0][suffix] - - - true - Test Company - = - true - address[new_0][company] - - - true - Folsom - = - true - address[new_0][city] - - - true - 95630 - = - true - address[new_0][postcode] - - - true - 1234567890 - = - true - address[new_0][telephone] - - - true - - = - true - address[new_0][vat_id] - - - true - false - = - true - address[new_0][default_billing] - - - true - false - = - true - address[new_0][default_shipping] - - - true - 123 Main - = - true - address[new_0][street][0] - - - true - - = - true - address[new_0][street][1] - - - true - - = - true - address[new_0][region] - - - true - US - = - true - address[new_0][country_id] - - - true - 12 - = - true - address[new_0][region_id] - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/customer/index/save/ - POST - true - false - true - true - false - - - - - - You saved the customer. - - Assertion.response_data - false - 2 - - - - - 1 - 0 - ${__javaScript(Math.round(${adminCustomerManagementDelay}*1000))} - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${adminEditOrderPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Admin Edit Order"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/orders_page.jmx - - - - Create New Order - - Assertion.response_data - false - 2 - - - - - - - - - true - sales_order_grid - = - true - namespace - - - true - - = - true - search - - - true - true - = - true - filters[placeholder] - - - true - 200 - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - increment_id - = - true - sorting[field] - - - true - desc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - true - ${admin_form_key} - = - true - form_key - false - - - true - pending - = - true - filters[status] - true - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/open_orders.jmx - - - - totalRecords - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - - - true - sales_order_grid - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - 200 - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - increment_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - true - pending - = - true - filters[status] - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/search_orders.jmx - - - - totalRecords - - Assertion.response_data - false - 2 - - - - false - order_numbers - \"increment_id\":\"(\d+)\"\, - $1$ - - -1 - simple_products - - - - false - order_ids - \"entity_id\":\"(\d+)\"\, - $1$ - - -1 - simple_products - - - - - - mpaf/tool/fragments/ce/admin_create_process_returns/setup.jmx - - import java.util.ArrayList; - import java.util.HashMap; - import org.apache.jmeter.protocol.http.util.Base64Encoder; - import java.util.Random; - - // get count of "order_numbers" variable defined in "Search Pending Orders Limit" - int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr")); - - - int clusterLength; - int threadsNumber = ctx.getThreadGroup().getNumThreads(); - if (threadsNumber == 0) { - //Number of orders for one thread - clusterLength = ordersCount; - } else { - clusterLength = Math.round(ordersCount / threadsNumber); - if (clusterLength == 0) { - clusterLength = 1; - } - } - - //Current thread number starts from 0 - int currentThreadNum = ctx.getThreadNum(); - - //Index of the current product from the cluster - Random random = new Random(); - if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); - } - int iterator = random.nextInt(clusterLength); - if (iterator == 0) { - iterator = 1; - } - - int i = clusterLength * currentThreadNum + iterator; - - orderNumber = vars.get("order_numbers_" + i.toString()); - orderId = vars.get("order_ids_" + i.toString()); - vars.put("order_number", orderNumber); - vars.put("order_id", orderId); - - - - - false - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/view/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/open_order.jmx - - - - #${order_number} - - Assertion.response_data - false - 2 - - - - false - order_status - <span id="order_status">([^<]+)</span> - $1$ - - 1 - simple_products - - - - - - "${order_status}" == "Pending" - false - mpaf/tool/fragments/ce/admin_edit_order/if_controller.jmx - - - - - - true - pending - = - true - history[status] - false - - - true - Some text - = - true - history[comment] - - - true - ${admin_form_key} - = - true - form_key - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/addComment/order_id/${order_id}/?isAjax=true - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_edit_order/add_comment.jmx - - - - Not Notified - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/invoice_start.jmx - - - - Invoice Totals - - Assertion.response_data - false - 2 - - - - false - item_ids - <div id="order_item_(\d+)_title"\s*class="product-title"> - $1$ - - -1 - simple_products - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - 1 - = - true - invoice[items][${item_ids_1}] - - - true - 1 - = - true - invoice[items][${item_ids_2}] - - - true - Invoiced - = - true - invoice[comment_text] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx - - - - The invoice has been created - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/order_shipment/start/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_edit_order/shipment_start.jmx - - - - New Shipment - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - 1 - = - true - shipment[items][${item_ids_1}] - - - true - 1 - = - true - shipment[items][${item_ids_2}] - - - true - Shipped - = - true - shipment[comment_text] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_edit_order/shipment_submit.jmx - - - - The shipment has been created - - Assertion.response_data - false - 2 - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${catalogGraphQLPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Catalog GraphQL"); - - true - - - - - mpaf/tool/fragments/ce/once_only_controller.jmx - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_indexers_management/admin_indexer_management_catalog_set_on_save.jmx - - - - - - - - - - - ${request_protocol} - - ${base_path}${admin_path}/indexer/indexer/list/ - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - - - - - true - catalog_category_product,catalog_product_category,catalog_product_price,catalog_product_attribute,cataloginventory_stock,catalogsearch_fulltext - = - true - indexer_ids - - - true - ${admin_form_key} - = - true - form_key - - - false - indexer_ids - = - true - massaction_prepare_key - - - - - - - - ${request_protocol} - - ${base_path}${admin_path}/indexer/indexer/massOnTheFly/ - POST - true - false - true - false - false - - - - - - 200 - - Assertion.response_code - false - 16 - - - - - - - mpaf/tool/fragments/ce/admin_create_product/get_related_product_id.jmx - import org.apache.jmeter.samplers.SampleResult; -import java.util.Random; -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom}); -} -relatedIndex = random.nextInt(props.get("simple_products_list").size()); -vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id")); - - - true - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - - Authorization - Bearer ${admin_token} - - - mpaf/tool/fragments/ce/api/header_manager.jmx - - - - - - - false - mycolor - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - false - attribute_code - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - false - mysize - = - true - searchCriteria[filterGroups][0][filters][1][value] - - - false - attribute_code - = - true - searchCriteria[filterGroups][0][filters][1][field] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/get_product_attributes.jmx - - - product_attributes - $.items - - - BODY - - - - javascript - - - - -var attributesData = JSON.parse(vars.get("product_attributes")), -maxOptions = 2; - -attributes = []; -for (i in attributesData) { - if (i >= 2) { - break; - } - var data = attributesData[i], - attribute = { - "id": data.attribute_id, - "code": data.attribute_code, - "label": data.default_frontend_label, - "options": [] - }; - - var processedOptions = 0; - for (optionN in data.options) { - var option = data.options[optionN]; - if (parseInt(option.value) > 0 && processedOptions < maxOptions) { - processedOptions++; - attribute.options.push(option); - } - } - attributes.push(attribute); -} - -vars.putObject("product_attributes", attributes); - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product_set/index/filter/${attribute_set_filter} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/configurable_setup_attribute_set.jmx - - - - false - attribute_set_id - catalog&#x2F;product_set&#x2F;edit&#x2F;id&#x2F;([\d]+)&#x2F;"[\D\d]*Attribute Set 1 - $1$ - - 1 - - - - false - - - import org.apache.commons.codec.binary.Base64; - -byte[] encodedBytes = Base64.encodeBase64("set_name=Attribute Set 1".getBytes()); -vars.put("attribute_set_filter", new String(encodedBytes)); - - - - - - - import org.apache.jmeter.samplers.SampleResult; -import java.util.Random; -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom}); -} -number = random.nextInt(props.get("simple_products_list_for_edit").size()); -simpleList = props.get("simple_products_list_for_edit").get(number); -vars.put("simple_product_1_id", simpleList.get("id")); -vars.put("simple_product_1_name", simpleList.get("title")); - -do { - number1 = random.nextInt(props.get("simple_products_list_for_edit").size()); -} while(number == number1); -simpleList = props.get("simple_products_list_for_edit").get(number1); -vars.put("simple_product_2_id", simpleList.get("id")); -vars.put("simple_product_2_name", simpleList.get("title")); - -number2 = random.nextInt(props.get("configurable_products_list").size()); -configurableList = props.get("configurable_products_list").get(number2); -vars.put("configurable_product_1_id", configurableList.get("id")); -vars.put("configurable_product_1_url_key", configurableList.get("url_key")); -vars.put("configurable_product_1_name", configurableList.get("title")); - -//Additional category to be added -//int categoryId = Integer.parseInt(vars.get("simple_product_category_id")); -//vars.put("category_additional", (categoryId+1).toString()); -//New price -vars.put("price_new", "9999"); -//New special price -vars.put("special_price_new", "8888"); -//New quantity -vars.put("quantity_new", "100600"); -vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNum}-${__Random(1,1000000)}"); - - - - - true - mpaf/tool/fragments/ce/admin_create_product/setup.jmx - - - - mpaf/tool/fragments/ce/admin_create_product/create_bundle_product.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/ - GET - true - false - true - false - false - - - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 42 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[configurable_variations] - - - true - 1 - = - true - affect_configurable_product_attributes - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - new-variations-attribute-set-id - - - true - 0 - = - true - product[shipment_type] - - - true - option title one - = - true - bundle_options[bundle_options][0][title] - - - true - - = - true - bundle_options[bundle_options][0][option_id] - - - true - - = - true - bundle_options[bundle_options][0][delete] - - - true - select - = - true - bundle_options[bundle_options][0][type] - - - true - 1 - = - true - bundle_options[bundle_options][0][required] - - - true - 0 - = - true - bundle_options[bundle_options][0][position] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][option_id] - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][0][bundle_selections][0][product_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][delete] - - - true - 25 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_value] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_type] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty] - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][0][position] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][option_id] - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][0][bundle_selections][1][product_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][delete] - - - true - 10.99 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_value] - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_type] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][position] - - - true - option title two - = - true - bundle_options[bundle_options][1][title] - - - true - - = - true - bundle_options[bundle_options][1][option_id] - - - true - - = - true - bundle_options[bundle_options][1][delete] - - - true - select - = - true - bundle_options[bundle_options][1][type] - - - true - 1 - = - true - bundle_options[bundle_options][1][required] - - - true - 1 - = - true - bundle_options[bundle_options][1][position] - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][option_id] - true - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][1][bundle_selections][0][product_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][delete] - true - - - true - 5.00 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_value] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_type] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][position] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][option_id] - true - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][1][bundle_selections][1][product_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][delete] - true - - - true - 7.00 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_value] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_type] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][position] - true - - - true - 2 - = - true - affect_bundle_product_selections - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/4/ - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 42 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[configurable_variations] - - - true - 1 - = - true - affect_configurable_product_attributes - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - new-variations-attribute-set-id - - - true - 0 - = - true - product[shipment_type] - false - - - true - option title one - = - true - bundle_options[bundle_options][0][title] - false - - - true - - = - true - bundle_options[bundle_options][0][option_id] - false - - - true - - = - true - bundle_options[bundle_options][0][delete] - false - - - true - select - = - true - bundle_options[bundle_options][0][type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][required] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][position] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][option_id] - false - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][0][bundle_selections][0][product_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][delete] - false - - - true - 25 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_value] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][0][position] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][option_id] - false - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][0][bundle_selections][1][product_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][delete] - false - - - true - 10.99 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][position] - false - - - true - option title two - = - true - bundle_options[bundle_options][1][title] - false - - - true - - = - true - bundle_options[bundle_options][1][option_id] - false - - - true - - = - true - bundle_options[bundle_options][1][delete] - false - - - true - select - = - true - bundle_options[bundle_options][1][type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][required] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][position] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][option_id] - false - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][1][bundle_selections][0][product_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][delete] - false - - - true - 5.00 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][position] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][option_id] - false - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][1][bundle_selections][1][product_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][delete] - false - - - true - 7.00 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][position] - false - - - true - 2 - = - true - affect_bundle_product_selections - false - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - option title one - option title two - ${simple_product_2_name} - ${simple_product_1_name} - - - Assertion.response_data - false - 2 - - - - - - - - - mpaf/tool/fragments/ee/admin_create_cms_page_with_page_builder_product_list/admin_create_cms_page_with_page_builder_product_list.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/cms/page/new - GET - true - false - true - false - false - - - - - - - - true - &lt;div data-content-type=&quot;row&quot; data-appearance=&quot;contained&quot; data-element=&quot;main&quot;&gt;&lt;div data-enable-parallax=&quot;0&quot; data-parallax-speed=&quot;0.5&quot; data-background-images=&quot;{}&quot; data-element=&quot;inner&quot; style=&quot;justify-content: flex-start; display: flex; flex-direction: column; background-position: left top; background-size: cover; background-repeat: no-repeat; background-attachment: scroll; border-style: none; border-width: 1px; border-radius: 0px; margin: 0px 0px 10px; padding: 10px;&quot;&gt;&lt;div data-content-type=&quot;products&quot; data-appearance=&quot;grid&quot; data-element=&quot;main&quot; style=&quot;border-style: none; border-width: 1px; border-radius: 0px; margin: 0px; padding: 0px;&quot;&gt;{{widget type=&quot;Magento\CatalogWidget\Block\Product\ProductsList&quot; template=&quot;Magento_CatalogWidget::product/widget/content/grid.phtml&quot; anchor_text=&quot;&quot; id_path=&quot;&quot; show_pager=&quot;0&quot; products_count=&quot;5&quot; sort_order=&quot;date_newest_top&quot; type_name=&quot;Catalog Products List&quot; conditions_encoded=&quot;^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,`aggregator`:`any`,`value`:`1`,`new_child`:``^]^]&quot;}}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; - = - true - content - - - true - - = - true - content_heading - - - true - ${admin_form_key} - = - true - form_key - - - true - - = - true - identifier - - - true - 1 - = - true - is_active - - - true - - = - true - layout_update_xml - - - true - - = - true - meta_description - - - true - - = - true - meta_keywords - - - true - - = - true - meta_title - - - false - {} - = - true - nodes_data - - - true - - = - true - node_ids - - - true - - = - true - page_id - - - true - 1column - = - true - page_layout - - - true - 0 - = - true - store_id[0] - - - true - Page Builder Products ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - title - - - true - 0 - = - true - website_root - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/cms/page/save/back/edit - POST - true - false - true - false - false - - - - - - You saved the page. - - Assertion.response_data - false - 16 - - - - URL - cms_page_id - /page_id\/([0-9]*)\/back/ - $1$ - - 1 - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - - Authorization - Bearer ${admin_token} - - - mpaf/tool/fragments/ce/api/header_manager.jmx - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}", - "name": "Extensible_Product_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "4", - "type_id": "simple", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":0, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } -} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_product_with_extensible_data_objects.jmx - - - simple_product_id - $.id - - - BODY - - - - simple_product_sku - $.sku - - - BODY - - - - simple_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - simple_product_id - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - simple_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - simple_stock_item_id - - - - - - mpaf/tool/fragments/ce/api/create_configurable_product_with_extensible_data_objects.jmx - - - - - - configurable_product_attribute_color_1 - color123X - = - - - configurable_product_attribute_color_2 - color567Y - = - - - color_attribute_section - 0 - = - - - - - - "${color_attribute_section}" == "0" - false - - - - true - - - - false - { - "attributeSetId": 4, - "attributeGroupId": 7, - "attributeCode": "color", - "sortOrder": 0 -} - - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/attribute-sets/attributes - POST - true - false - true - false - false - - - - - - ^\"\d+\"$ - - Assertion.response_data - false - 1 - - - - color_attribute_section - $ - - - BODY - - - - - - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes/color/options - GET - true - false - true - false - false - - - - - color_1_value_id - $.[?(@.label =~ /${configurable_product_attribute_color_1}/i)].value - - null - - - - color_2_value_id - $.[?(@.label =~ /${configurable_product_attribute_color_2}/i)].value - - null - - - - - "${color_1_value_id}" == "null" - false - - - - true - - - - false - { - "option": { - "label": "${configurable_product_attribute_color_1}" - } -} - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes/color/options - POST - true - false - true - false - false - - - - - - ^[a-z0-9_\"]+$ - - Assertion.response_data - false - 1 - - - - - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes/color/options - GET - true - false - true - false - false - - - - - color_1_value_id - $.[?(@.label =~ /${configurable_product_attribute_color_1}/i)].value - - - - - - - "${color_2_value_id}" == "null" - false - - - - true - - - - false - { - "option": { - "label": "${configurable_product_attribute_color_2}" - } -} - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes/color/options - POST - true - false - true - false - false - - - - - - ^[a-z0-9_\"]+$ - - Assertion.response_data - false - 1 - - - - - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes/color/options - GET - true - false - true - false - false - - - - - color_2_value_id - $.[?(@.label =~ /${configurable_product_attribute_color_2}/i)].value - - - - - - - true - - - - false - { - "product": { - "sku": "configurable-apsku-test-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "name": "Configurable Extensible_Product_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "4", - "type_id": "configurable", - "price": "99", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"configurable_test_label_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":false, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "configurable_test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } -} - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - - - - configurable_product_id - $.id - - - BODY - - - - configurable_product_sku - $.sku - - - BODY - - - - configurable_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - configurable_product_id - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - configurable_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - configurable_stock_item_id - - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${configurable_product_attribute_color_1}", - "name": "Extensible_Product_${configurable_product_attribute_color_1}", - "visibility": "1", - "type_id": "simple", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - }, - { - "attribute_code": "color", - "value": "${color_1_value_id}" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":false, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } -} - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - - - - configurable_red_product_id - $.id - - - BODY - - - - configurable_red_product_sku - $.sku - - - BODY - - - - configurable_red_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - configurable_red_product_id - - - - - ^[A-Za-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - configurable_red_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - configurable_red_stock_item_id - - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${configurable_product_attribute_color_2}", - "name": "Extensible_Product_${configurable_product_attribute_color_2}", - "visibility": "1", - "type_id": "simple", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - }, - { - "attribute_code": "color", - "value": "${color_2_value_id}" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":false, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABgAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iioLy8t9Ps5bu7lWKCIZd26KKaTbshpX0RPRXN/8J/4V/6DVv8Ak3+FH/Cf+Ff+g1b/AJN/hXR9SxP/AD7l9zNPYVf5X9x0lFc3/wAJ/wCFf+g1b/k3+FH/AAn/AIV/6DVv+Tf4UfUsT/z7l9zD2FX+V/cdJRXN/wDCf+Ff+g1b/k3+FH/Cf+Ff+g1b/k3+FH1LE/8APuX3MPYVf5X9x0lFc3/wn/hX/oNW/wCTf4Uf8J/4V/6DVv8Ak3+FH1LE/wDPuX3MPYVf5X9x0lFVdP1G01WyS8sZ1nt3JCyL0ODg/qKtVzyi4u0lZmbTTswrm/H3/Iiav/1x/wDZhXSVzfj7/kRNX/64/wDswrowf+80/wDEvzNKH8WPqj5voorB1zS7OLT7m7SHE5YNu3HqWGeM471+kYutOhSdSEU7Jt3dtF20f6H1FacqcHJK9vO36M3qKzTa6foqPdxwlWxswrFi2T0AJ9aRdVmjkT7XYSW8TsFEm8MAT0yB0qfrcafu1tJeV2l2u7K3zsL2yjpPR+V3+NjTorPn1GVbt7a1s2uJIwDJ84ULnpyaik1SWTTrp47Z0uIQRJGzAFOPvZ70Sx1GLau9L9H03SdrNrsgdeCuu3k+hq0VR0ma4msImuIih2LtYvuLjA+b2zV6uijUVWmprqaQkpxUl1PoP4Xf8iBYf78v/oxq7GuO+F3/ACIFh/vy/wDoxq7GvzTMf98q/wCJ/mfLYn+NP1YVzfj7/kRNX/64/wDswrpK5vx9/wAiJq//AFx/9mFRg/8Aeaf+JfmTQ/ix9UfN9ZniD/kB3H/Af/QhWnTZI45kKSIroeqsMg1+l4mk61GdNfaTX3o+pqw54Sj3Rma/GXsI3BcLFMruU+8F5yR+dUZ4tOeNFOq3tx5jACNZg5J+mK6PrUMdrbxPvjgiR/7yoAa48TgPa1HNW1STvfp2s1+JjVw/PJy017mbe/YTqTB7iWzuQgPmhtocfjwajiupbjTtTieUXCxRsqTKMb8qePwrYlghnAE0UcgHQOoP86ckaRoERFVR/CowKbwU3UclJJO+19brqr203vvoHsJczd7J3/H8PmVNJnhm063WOVHZIkDhTkqcd/yNXajighg3eTFHHu67FAz+VSV2UIShTjGe67G9NOMUpbn0H8Lv+RAsP9+X/wBGNXY1x3wu/wCRAsP9+X/0Y1djX5tmP++Vf8T/ADPl8T/Gn6sK5vx9/wAiJq//AFx/9mFdJXN+Pv8AkRNX/wCuP/swqMH/ALzT/wAS/Mmh/Fj6o+b6KKK/Uj60KKKKACiiigAooooA+g/hd/yIFh/vy/8Aoxq7GuO+F3/IgWH+/L/6Mauxr8wzH/fKv+J/mfKYn+NP1YVzfj7/AJETV/8Arj/7MK6Sub8ff8iJq/8A1x/9mFRg/wDeaf8AiX5k0P4sfVHzfRRRX6kfWhRRRQAUUUUAFFFFAH0H8Lv+RAsP9+X/ANGNXY1x3wu/5ECw/wB+X/0Y1djX5hmP++Vf8T/M+UxP8afqwqC8s7fULOW0u4llglGHRujCp6K5E2ndGKdtUc3/AMIB4V/6Atv+bf40f8IB4V/6Atv+bf410lFdH13E/wDPyX3s09vV/mf3nN/8IB4V/wCgLb/m3+NH/CAeFf8AoC2/5t/jXSUUfXcT/wA/Jfew9vV/mf3nN/8ACAeFf+gLb/m3+NH/AAgHhX/oC2/5t/jXSUUfXcT/AM/Jfew9vV/mf3nN/wDCAeFf+gLb/m3+NH/CAeFf+gLb/m3+NdJRR9dxP/PyX3sPb1f5n95V0/TrTSrJLOxgWC3QkrGvQZOT+pq1RRXPKTk7yd2Zttu7P//Z", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } -} - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - - - - configurable_blue_product_id - $.id - - - BODY - - - - configurable_blue_product_sku - $.sku - - - BODY - - - - configurable_blue_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - configurable_blue_product_id - - - - - ^[A-Za-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - configurable_blue_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - configurable_blue_stock_item_id - - - - - true - - - - false - { - "option": { - "attribute_id": "93", - "label": "Color", - "position": 0, - "is_use_default": 1, - "values": [ - { - "value_index": 0 - } - ] - } -} - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/configurable-products/${configurable_product_sku}/options - POST - true - false - true - false - false - - - - - - ^\"\d+\"$ - - Assertion.response_data - false - 1 - - - - - - true - - - - false - {"childSku": "apsku-test-${configurable_product_attribute_color_1}"} - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/configurable-products/${configurable_product_sku}/child - POST - true - false - true - false - false - - - - - - true - - Assertion.response_data - false - 1 - - - - - true - - - - false - {"childSku": "apsku-test-${configurable_product_attribute_color_2}"} - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/configurable-products/${configurable_product_sku}/child - POST - true - false - true - false - false - - - - - - true - - Assertion.response_data - false - 1 - - - - - - - mpaf/tool/fragments/ce/api/create_bundle_product_with_extensible_data_objects.jmx - - - - true - - - - false - { - "product": { - "sku": "bundle-apsku-test-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "name": "Bundle Extensible_Product_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "4", - "type_id": "bundle", - "price": "99", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "price_view", - "value": "0" - }, - { - "attribute_code": "price_type", - "value": "0" - }, - { - "attribute_code": "weight_type", - "value": "0" - }, - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"bundle_test_label_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":false, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "bundle_test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - - - - bundle_product_id - $.id - - - BODY - - - - bundle_product_sku - $.sku - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - bundle_product_id - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - bundle_product_sku - - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "name": "Extensible_Product_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "1", - "type_id": "simple", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":false, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - - - - bundle_child_1_product_id - $.id - - - BODY - - - - bundle_child_1_product_sku - $.sku - - - BODY - - - - bundle_child_1_product_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - bundle_child_1_product_id - - - - - ^[A-Za-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - bundle_child_1_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - bundle_child_1_product_stock_item_id - - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "name": "Extensible_Product_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "1", - "type_id": "simple", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":false, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - - - - bundle_child_2_product_id - $.id - - - BODY - - - - bundle_child_2_product_sku - $.sku - - - BODY - - - - bundle_child_2_product_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - bundle_child_2_product_id - - - - - ^[A-Za-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - bundle_child_2_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - bundle_child_2_product_stock_item_id - - - - - true - - - - false - { - "option": { - "title": "option-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}", - "required": 1, - "type": "select", - "position": 0, - "sku": "${bundle_product_sku}", - "product_links": [ - { - "sku": "${bundle_child_1_product_sku}", - "qty": 1, - "position": 0, - "is_default": 1, - "can_change_quantity": 0 - }, - { - "sku": "${bundle_child_2_product_sku}", - "qty": 1, - "position": 0, - "is_default": 0, - "can_change_quantity": 0 - } - ] - } - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/bundle-products/options/add - POST - true - false - true - false - false - - - - - - ^\"\d+\"$ - - Assertion.response_data - false - 1 - - - - - - - - mpaf/tool/fragments/ce/api/create_downloadable_product_with_extensible_data_objects.jmx - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}", - "name": "Extensible_Product_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "4", - "type_id": "downloadable", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":false, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - - - - downloadable_product_id - $.id - - - BODY - - - - downloadable_product_sku - $.sku - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - downloadable_product_id - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - downloadable_product_sku - - - - - - - true - - - - false - { - "link": { - "title": "link1", - "sort_order": 0, - "is_shareable": 1, - "price": 10, - "number_of_downloads": 10, - "link_type": "file", - "link_file_content": { - "file_data": "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", - "name": "file1.jpeg", - "extension_attributes": {} - }, - "sample_type": "file", - "sample_file_content": { - "file_data": "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", - "name": "file1.jpeg", - "extension_attributes": {} - }, - "extension_attributes": {} - }, - "isGlobalScopeContent": 1 - } - - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/${downloadable_product_sku}/downloadable-links - POST - true - false - true - false - false - - - - - downloadable_link_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - downloadable_link_id - variable - - - - - true - - - - false - { - "link": { - "title": "link2", - "sort_order": 0, - "is_shareable": 1, - "price": 10, - "number_of_downloads": 10, - "link_type": "file", - "link_file_content": { - "file_data": "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", - "name": "file1.jpeg", - "extension_attributes": {} - }, - "sample_type": "file", - "sample_file_content": { - "file_data": "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", - "name": "file1.jpeg", - "extension_attributes": {} - }, - "extension_attributes": {} - }, - "isGlobalScopeContent": 1 - } - - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/${downloadable_product_sku}/downloadable-links - POST - true - false - true - false - false - - - - - downloadable_link_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - downloadable_link_id - variable - - - - - true - - - - false - { - "link": { - "title": "link3", - "sort_order": 0, - "is_shareable": 1, - "price": 10, - "number_of_downloads": 10, - "link_type": "file", - "link_file_content": { - "file_data": "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", - "name": "file1.jpeg", - "extension_attributes": {} - }, - "sample_type": "file", - "sample_file_content": { - "file_data": "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", - "name": "file1.jpeg", - "extension_attributes": {} - }, - "extension_attributes": {} - }, - "isGlobalScopeContent": 1 - } - - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/${downloadable_product_sku}/downloadable-links - POST - true - false - true - false - false - - - - - downloadable_link_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - downloadable_link_id - variable - - - - - true - - - - false - { - "sample": { - "title": "sample1", - "sort_order": 0, - "sample_type": "file", - "sample_file_content": { - "file_data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABgAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iioLy8t9Ps5bu7lWKCIZd26KKaTbshpX0RPRXN/8J/4V/6DVv8Ak3+FH/Cf+Ff+g1b/AJN/hXR9SxP/AD7l9zNPYVf5X9x0lFc3/wAJ/wCFf+g1b/k3+FH/AAn/AIV/6DVv+Tf4UfUsT/z7l9zD2FX+V/cdJRXN/wDCf+Ff+g1b/k3+FH/Cf+Ff+g1b/k3+FH1LE/8APuX3MPYVf5X9x0lFc3/wn/hX/oNW/wCTf4Uf8J/4V/6DVv8Ak3+FH1LE/wDPuX3MPYVf5X9x0lFVdP1G01WyS8sZ1nt3JCyL0ODg/qKtVzyi4u0lZmbTTswrm/H3/Iiav/1x/wDZhXSVzfj7/kRNX/64/wDswrowf+80/wDEvzNKH8WPqj5voorB1zS7OLT7m7SHE5YNu3HqWGeM471+kYutOhSdSEU7Jt3dtF20f6H1FacqcHJK9vO36M3qKzTa6foqPdxwlWxswrFi2T0AJ9aRdVmjkT7XYSW8TsFEm8MAT0yB0qfrcafu1tJeV2l2u7K3zsL2yjpPR+V3+NjTorPn1GVbt7a1s2uJIwDJ84ULnpyaik1SWTTrp47Z0uIQRJGzAFOPvZ70Sx1GLau9L9H03SdrNrsgdeCuu3k+hq0VR0ma4msImuIih2LtYvuLjA+b2zV6uijUVWmprqaQkpxUl1PoP4Xf8iBYf78v/oxq7GuO+F3/ACIFh/vy/wDoxq7GvzTMf98q/wCJ/mfLYn+NP1YVzfj7/kRNX/64/wDswrpK5vx9/wAiJq//AFx/9mFRg/8Aeaf+JfmTQ/ix9UfN9ZniD/kB3H/Af/QhWnTZI45kKSIroeqsMg1+l4mk61GdNfaTX3o+pqw54Sj3Rma/GXsI3BcLFMruU+8F5yR+dUZ4tOeNFOq3tx5jACNZg5J+mK6PrUMdrbxPvjgiR/7yoAa48TgPa1HNW1STvfp2s1+JjVw/PJy017mbe/YTqTB7iWzuQgPmhtocfjwajiupbjTtTieUXCxRsqTKMb8qePwrYlghnAE0UcgHQOoP86ckaRoERFVR/CowKbwU3UclJJO+19brqr203vvoHsJczd7J3/H8PmVNJnhm063WOVHZIkDhTkqcd/yNXajighg3eTFHHu67FAz+VSV2UIShTjGe67G9NOMUpbn0H8Lv+RAsP9+X/wBGNXY1x3wu/wCRAsP9+X/0Y1djX5tmP++Vf8T/ADPl8T/Gn6sK5vx9/wAiJq//AFx/9mFdJXN+Pv8AkRNX/wCuP/swqMH/ALzT/wAS/Mmh/Fj6o+b6KKK/Uj60KKKKACiiigAooooA+g/hd/yIFh/vy/8Aoxq7GuO+F3/IgWH+/L/6Mauxr8wzH/fKv+J/mfKYn+NP1YVzfj7/AJETV/8Arj/7MK6Sub8ff8iJq/8A1x/9mFRg/wDeaf8AiX5k0P4sfVHzfRRRX6kfWhRRRQAUUUUAFFFFAH0H8Lv+RAsP9+X/ANGNXY1x3wu/5ECw/wB+X/0Y1djX5hmP++Vf8T/M+UxP8afqwqC8s7fULOW0u4llglGHRujCp6K5E2ndGKdtUc3/AMIB4V/6Atv+bf40f8IB4V/6Atv+bf410lFdH13E/wDPyX3s09vV/mf3nN/8IB4V/wCgLb/m3+NH/CAeFf8AoC2/5t/jXSUUfXcT/wA/Jfew9vV/mf3nN/8ACAeFf+gLb/m3+NH/AAgHhX/oC2/5t/jXSUUfXcT/AM/Jfew9vV/mf3nN/wDCAeFf+gLb/m3+NH/CAeFf+gLb/m3+NdJRR9dxP/PyX3sPb1f5n95V0/TrTSrJLOxgWC3QkrGvQZOT+pq1RRXPKTk7yd2Zttu7P//Z", - "name": "file2.jpeg", - "extension_attributes": {} - }, - "sample_url": "string", - "extension_attributes": {} - }, - "isGlobalScopeContent": 1 - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/${downloadable_product_sku}/downloadable-links/samples - POST - true - false - true - false - false - - - - - sample_link_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - sample_link_id - - - - - true - - - - false - { - "sample": { - "title": "sample2", - "sort_order": 0, - "sample_type": "file", - "sample_file_content": { - "file_data": "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", - "name": "file2.jpeg", - "extension_attributes": {} - }, - "sample_url": "string", - "extension_attributes": {} - }, - "isGlobalScopeContent": 1 - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/${downloadable_product_sku}/downloadable-links/samples - POST - true - false - true - false - false - - - - - sample_link_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - sample_link_id - - - - - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}", - "name": "Extensible_Product_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "4", - "type_id": "virtual", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":0, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_virtual_product_with_extensible_data_objects.jmx - - - - virtual_product_id - $.id - - - BODY - - - - virtual_product_sku - $.sku - - - BODY - - - - virtual_stock_item_id - $.extension_attributes.stock_item.item_id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - virtual_product_id - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - virtual_product_sku - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - virtual_stock_item_id - - - - - - mpaf/tool/fragments/ce/api/create_grouped_product_with_extensible_data_objects.jmx - - - - true - - - - false - { - "product": { - "sku": "apsku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}", - "name": "Extensible_Product_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "visibility": "4", - "type_id": "grouped", - "price": "3.62", - "status": "1", - "attribute_set_id": "4", - "custom_attributes": [ - { - "attribute_code": "cost", - "value": "" - }, - { - "attribute_code": "description", - "value": "Description" - } - ], - "extension_attributes":{ - "stock_item":{ - "manage_stock": 1, - "is_in_stock": 1, - "qty":"100" - } - } , - "media_gallery_entries": - [{ - "id": null, - "label":"test_label_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "position":1, - "disabled":false, - "media_type":"image", - "types":["image"], - "content":{ - "base64_encoded_data": "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", - "type": "image/jpeg", - "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg" - } - } - ] - } - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products - POST - true - false - true - false - false - - - - - grouped_product_id - $.id - - - BODY - - - - grouped_product_sku - $.sku - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - grouped_product_id - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - grouped_product_sku - - - - - - - true - - - - false - { - "items": [ - { - "sku": "${grouped_product_sku}", - "link_type": "associated", - "linked_product_sku": "${bundle_product_sku}", - "linked_product_type": "bundle", - "position": 1, - "extension_attributes": { - "qty": 1 - } - }, - { - "sku": "${grouped_product_sku}", - "link_type": "associated", - "linked_product_sku": "${configurable_product_sku}", - "linked_product_type": "configurable", - "position": 2, - "extension_attributes": { - "qty": 1 - } - }, - { - "sku": "${grouped_product_sku}", - "link_type": "associated", - "linked_product_sku": "${simple_product_sku}", - "linked_product_type": "simple", - "position": 3, - "extension_attributes": { - "qty": 1 - } - }, - { - "sku": "${grouped_product_sku}", - "link_type": "associated", - "linked_product_sku": "${downloadable_product_sku}", - "linked_product_type": "downloadable", - "position": 4, - "extension_attributes": { - "qty": 1 - } - } - ] - } - - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/products/${grouped_product_sku}/links - POST - true - false - true - false - false - - - - - grouped_product_response - $ - - - BODY - - - - - true - - Assertion.response_data - false - 8 - variable - grouped_product_response - - - - - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - - Authorization - Bearer ${admin_token} - - - mpaf/tool/fragments/ce/api/header_manager.jmx - - - - true - - - - false - {"query":"{\n products(\n filter: {\n price: {from: \"5\"}\n name:{match:\"Product\"}\n }\n pageSize: 20\n currentPage: 1\n sort: {\n price: ASC\n name:DESC\n }\n ) {\n total_count\n items {\n attribute_set_id\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n short_description {\n html\n }\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n \t... on PhysicalProductInterface {\n \tweight\n \t}\n }\n page_info {\n page_size\n current_page\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_filter_only.jmx - - - - graphql_multiple_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_multiple_products_query_total_count"); - if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; - } else { - if (Integer.parseInt(totalCount) < 200) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be greater than 200, Actual: " + totalCount; - } else { - Failure = false; - } - } - - - - false - - - - - - true - - - - false - {"query":"{\n products(filter: {sku: { eq: \"${simple_product_sku}\" } },sort: {name: ASC})\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_simple_product_with_extensible_data_objects.jmx - - - - graphql_simple_products_query_total_count - $.data.products.total_count - - - BODY - - - - - graphql_multiple_products_query_response - $ - - - BODY - - - - String totalCount=vars.get("graphql_simple_products_query_total_count"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) != 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be equal to 1, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - false - - - - $.data.products.items[0].sku - ${simple_product_sku} - true - false - false - true - - - - - - true - - - - false - {"query":"{\n products(filter: {sku: {eq:\"${configurable_product_sku}\"} }, sort: {name: ASC}) {\n total_count\n items {\n ... on PhysicalProductInterface {\n weight\n }\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_configurable_product_with_extensible_data_objects.jmx - - - - graphql_configurable_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_configurable_products_query_total_count"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) != 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be equal to 1, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - - - false - - - - $.data.products.items[0].sku - ${configurable_product_sku} - true - false - false - true - - - - - - true - - - - false - {"query":"{\n products(\n pageSize:20\n currentPage:1\n search: \"configurable\"\n filter: {name: {match: \"Configurable Product\"} }\n sort: {name: ASC}\n ) {\n total_count\n page_info {\n current_page\n page_size\n total_pages\n }\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_and_filter.jmx - - - - graphql_search_products_query_total_count_fulltext_filter - $.data.products.total_count - - - BODY - - - - graphql_search_products_query_total_pages_fulltext_filter - $.data.products.page_info.total_pages - - - BODY - - - - String totalCount=vars.get("graphql_search_products_query_total_count_fulltext_filter"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) < 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - - - false - - - - - - true - - - - false - {"query":"{\n products(\n pageSize:20\n currentPage:${graphql_search_products_query_total_pages_fulltext_filter}\n search: \"configurable\"\n filter: {name: {match: \"Configurable Product\"} }\n sort: {name: ASC}\n ) {\n total_count\n page_info {\n current_page\n page_size\n total_pages\n }\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_and_filter_last_page.jmx - - - - graphql_search_products_query_total_count_fulltext_filter - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_search_products_query_total_count_fulltext_filter"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) < 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - - - false - - - - - - true - - - - false - {"query":"{\n products(\n pageSize:20\n currentPage:1\n search: \"configurable\"\n sort: {name: ASC}) {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_only.jmx - - - - graphql_search_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_search_products_query_total_count"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) < 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - - - false - - - - - - true - - - - false - {"query":"{\n products(\n pageSize:20\n currentPage:1\n search: \"Option 1\"\n sort: {name: ASC}) {\n filters {\n name\n filter_items_count\n request_var\n filter_items {\n label\n value_string\n items_count\n ... on SwatchLayerFilterItemInterface {\n swatch_data {\n type\n value\n }\n }\n }\n }\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n weight\n }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_and_filters.jmx - - - - graphql_search_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_search_products_query_total_count"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) < 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - - - false - - - - - - true - - - - false - {"query":"{\n products(\n pageSize:20\n currentPage:1\n search: \"Option 1\"\n sort: {name: ASC}) {\n aggregations{\n attribute_code\n count\n label\n options{\n count\n label\n value\n }\n }\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n weight\n }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_and_aggregations.jmx - - - - graphql_search_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_search_products_query_total_count"); - if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; - } else { - if (Integer.parseInt(totalCount) < 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount; - } else { - Failure = false; - } - } - - - - false - - - - - - true - - - - false - {"query":"{\nproducts(filter: {sku: {eq:\"${bundle_product_sku}\"} }, sort: {name: ASC}) {\n total_count\n items {\n ... on PhysicalProductInterface {\n weight\n }\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on BundleProduct {\n weight\n price_view\n dynamic_price\n dynamic_sku\n ship_bundle_items\n dynamic_weight\n items {\n option_id\n title\n required\n type\n position\n sku\n options {\n id\n qty\n position\n is_default\n price\n price_type\n can_change_quantity\n product {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n }\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_bundle_product_with_extensible_data_objects.jmx - - - - graphql_bundle_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_bundle_products_query_total_count"); - - if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; - } else { - if (Integer.parseInt(totalCount) != 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be equal to 1, Actual: " + totalCount; - } else { - Failure = false; - } - } - - - - - - false - - - - $.data.products.items[0].sku - ${bundle_product_sku} - true - false - false - false - - - - - - true - - - - false - {"query":"{\n products(filter: {sku: { eq: \"${downloadable_product_sku}\" } }, sort: {name: ASC})\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n ... on DownloadableProduct {\n links_purchased_separately\n links_title\n downloadable_product_samples {\n id\n title\n sort_order\n sample_type\n sample_file\n sample_url\n }\n downloadable_product_links {\n id\n title\n sort_order\n is_shareable\n price\n number_of_downloads\n link_type\n sample_type\n sample_file\n sample_url\n }\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_downloadable_product_with_extensible_data_objects.jmx - - - - graphql_downloadable_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_downloadable_products_query_total_count"); - - if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; - } else { - if (Integer.parseInt(totalCount) != 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be equal to 1, Actual: " + totalCount; - } else { - Failure = false; - } - } - - - - - - false - - - - $.data.products.items[0].sku - ${downloadable_product_sku} - true - false - false - true - - - - $.data.products.items[0].downloadable_product_samples..title - ["sample1","sample2"] - true - false - false - false - - - - $.data.products.items[0].downloadable_product_samples..title - ["sample1","sample2"] - true - false - false - false - - - - - - true - - - - false - {"query":"{\n products(filter: {sku: { eq: \"${virtual_product_sku}\" } },sort: {name: ASC})\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_virtual_product_with_extensible_data_objects.jmx - - - - graphql_virtual_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_virtual_products_query_total_count"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) != 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be equal to 1, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - false - - - - $.data.products.items[0].sku - ${virtual_product_sku} - true - false - false - true - - - - - - true - - - - false - {"query":"{\nproducts(filter: {sku: {eq:\"${grouped_product_sku}\"} }, sort: {name: ASC}) {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on GroupedProduct {\n weight\n items {\n qty\n position\n product {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_grouped_product_with_extensible_data_objects.jmx - - - - graphql_grouped_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_grouped_products_query_total_count"); - - if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; - } else { - if (Integer.parseInt(totalCount) != 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be equal to 1, Actual: " + totalCount; - } else { - Failure = false; - } - } - - - - - - false - - - - $.data.products.items[0].sku - ${grouped_product_sku} - true - false - false - true - - - - - - - - true - - - - false - { - "customer": { - - "email": "customer_${__time()}-${__threadNum}-${__Random(1,1000000)}@example.com", - "firstname": "test_${__time()}-${__threadNum}-${__Random(1,1000000)}", - "lastname": "Doe" - }, - "password": "test@123" - } - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/customers - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_frontend_customer.jmx - - - - customer_id - $.id - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - customer_id - - - - - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/customers/${customer_id} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/api/check_customer.jmx - - - - $.id - ${customer_id} - true - false - false - true - - - - customer_email - $.email - - - BODY - - - - - true - - - - false - { - "username":"${customer_email}", - "password":"test@123" - } - - = - - - - - - - - ${request_protocol} - - ${base_path}rest/default/V1/integration/customer/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/create_customer.jmx - - - - customer_token - $ - - - BODY - - - - - true - - - - false - {"query":"{\n customer {\n created_at\n group_id\n\n prefix\n firstname\n middlename\n lastname\n suffix\n email\n default_billing\n default_shipping\n\n dob\n taxvat\n\n id\n addresses {\n id\n customer_id\n region {\n region_code\n region\n region_id\n }\n region_id\n country_id\n street \n company\n telephone\n fax\n postcode\n city\n firstname\n lastname\n middlename\n prefix\n suffix\n vat_id\n default_shipping\n default_billing\n }\n is_subscribed\n }\n}","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_frontend_customer.jmx - - - - false - - - import org.apache.jmeter.protocol.http.control.Header; - - sampler.getHeaderManager().removeHeaderNamed("Authorization"); - - sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token"))); - - - - $.data.customer.lastname - Doe - true - false - false - true - - - - - - - true - - - - false - {"query":"{\n category(id: 1) {\n name\n id\n level\n description\n path\n path_in_store\n url_key\n url_path\n children {\n id\n description\n default_sort_by\n children {\n id\n description\n level\n children {\n level\n id\n children {\n id\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_root_category.jmx - - - - graphql_category_query_name - $.data.category.name - - - BODY - - - - String name = vars.get("graphql_category_query_name"); -if (name == null) { - Failure = true; - FailureMessage = "Not Expected \"children\" to be null"; -} else { - if (!name.equals("Root Catalog")) { - Failure = true; - FailureMessage = "Expected \"name\" to equal \"Root Catalog\", Actual: " + name; - } else { - Failure = false; - } -} - - - - false - - - - - - true - - - - false - {"query":"{\n categoryList{\n name\n id\n level\n description\n path\n path_in_store\n url_key\n url_path\n children {\n id\n description\n default_sort_by\n children {\n id\n description\n level\n children {\n level\n id\n children {\n id\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - - - - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/query_root_category_list.jmx - - - - graphql_categoryList_query_name - $.data.categoryList[0].name - - - BODY - JSON - - - - String name = vars.get("graphql_categoryList_query_name"); -if (name == null) { - Failure = true; - FailureMessage = "Not Expected \"children\" to be null"; -} else { - if (!name.equals("Default Category")) { - Failure = true; - FailureMessage = "Expected \"name\" to equal \"Default Category\", Actual: " + name; - } else { - Failure = false; - } -} - - - - false - - - - - - true - - - - false - - {"query":"query getCmsPage($id: Int!, $onServer: Boolean!) {\n cmsPage(id: $id) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"id":${cms_page_id},"onServer":false},"operationName":"getCmsPage"} - - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_get_cms_page_by_id.jmx - - - $.data.cmsPage.url_key - ${cms_page_id} - false - false - false - false - - - - - - - - - - - continue - - false - ${loops} - - ${graphQLPoolUsers} - ${ramp_period} - 1505803944000 - 1505803944000 - false - - - mpaf/tool/fragments/_system/thread_group.jmx - - - 1 - false - 1 - ${graphqlGetListOfProductsByCategoryIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get List of Products by category_id"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - true - - - - false - {"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx - - - - - "name":"${category_name}","id":${category_id}, - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlGetSimpleProductDetailsByProductUrlKeyPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Simple Product Details by product_url_key"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlGetSimpleProductDetailsByNamePercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Simple Product Details by name"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"query productDetail($product_sku: String, $onServer: Boolean!) {\n productDetail: products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetail"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_simple_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlGetConfigurableProductDetailsByProductUrlKeyPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Configurable Product Detail by product_url_key"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - true - - - - false - {"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlGetConfigurableProductDetailsByNamePercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Configurable Product Detail by name"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - true - - - - false - {"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlGetProductSearchByTextAndCategoryIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Product Search by text and category_id"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - true - - - - false - {"query":"query productSearch($inputText: String!, $categoryId: String) {\n products(\n pageSize:12\n search: $inputText, filter: { category_id: { eq: $categoryId } }, sort: {name: ASC}) {\n items {\n id\n name\n small_image {\n label\n url\n }\n url_key\n price {\n regularPrice {\n amount {\n value\n currency\n }\n }\n }\n }\n total_count\n filters {\n name\n filter_items_count\n request_var\n filter_items {\n label\n value_string\n }\n }\n }\n}","variables":{"inputText":"Product","categoryId":"${category_id}"},"operationName":"productSearch"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_product_search_by_text_and_category_id.jmx - - - - graphql_search_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_search_products_query_total_count"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) < 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - - - false - - - - - - - - 1 - false - 1 - ${graphqlGetCategoryListByCategoryIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Category List by category_id"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - true - - - - false - - {"query":"query categoryList($id: Int!) {\n category(id: $id) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}","variables":{"id":${category_id}},"operationName":"categoryList"} - - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_category_list_by_category_id.jmx - - - javascript - - - - var category = vars.getObject("category"); -var response = JSON.parse(prev.getResponseDataAsString()); - -assertCategoryId(category, response); -assertCategoryChildren(category, response); - -function assertCategoryId(category, response) { - if (response.data == undefined || response.data.category == undefined || response.data.category.id != category.id) { - AssertionResult.setFailureMessage("Cannot find category with id \"" + category.id + "\""); - AssertionResult.setFailure(true); - } -} - -function assertCategoryChildren(category, response) { - foundCategory = response.data && response.data.category ? response.data.category : null; - if (foundCategory) { - var childrenFound = foundCategory.children.map(function (c) {return parseInt(c.id)}); - var children = category.children.map(function (c) {return parseInt(c)}); - if (JSON.stringify(children.sort()) != JSON.stringify(childrenFound.sort())) { - AssertionResult.setFailureMessage("Cannot math children categories \"" + JSON.stringify(children) + "\" for to found one: \"" + JSON.stringify(childrenFound) + "\""); - AssertionResult.setFailure(true); - } - } - -} - - - - - - - - - - 1 - false - 1 - ${graphqlGetCategoryListByCategoryIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Category List by category_url_key"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - true - - - - false - {"query" : "{\n categoryList(filters:{url_key: {in: [\"${category_url_key}\"]}}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_category_list_by_category_url_key.jmx - - - - javascript - - - - var category = vars.getObject("category"); -var response = JSON.parse(prev.getResponseDataAsString()); - -assertCategoryId(category, response); -assertCategoryChildren(category, response); - -function assertCategoryId(category, response) { - if (response.data == undefined || response.data.categoryList == undefined || response.data.categoryList[0].id != category.id) { - AssertionResult.setFailureMessage("Cannot find category with id \"" + category.id + "\""); - AssertionResult.setFailure(true); - } -} - -function assertCategoryChildren(category, response) { - foundCategory = response.data && response.data.categoryList ? response.data.categoryList[0] : null; - if (foundCategory) { - var childrenFound = foundCategory.children.map(function (c) {return parseInt(c.id)}); - var children = category.children.map(function (c) {return parseInt(c)}); - if (JSON.stringify(children.sort()) != JSON.stringify(childrenFound.sort())) { - AssertionResult.setFailureMessage("Cannot math children categories \"" + JSON.stringify(children) + "\" for to found one: \"" + JSON.stringify(childrenFound) + "\""); - AssertionResult.setFailure(true); - } - } - -} - - - - - - - - - - 1 - false - 1 - ${graphqlGetCategoryListByCategoryIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Multiple Categories"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); - -var numbers = []; - -var sanity = 0; -for(var i = 0; i < 4; i++){ - sanity++; - if(sanity > 100){ - break; - } - var number = random.nextInt(categories.length) - if(numbers.indexOf(number) >= 0){ - i--; - continue; - } - numbers.push(number); -} - -vars.put("category_id_1", categories[numbers[0]].id); -vars.put("category_id_2", categories[numbers[1]].id); -vars.put("category_id_3", categories[numbers[2]].id); -vars.put("category_id_4", categories[numbers[3]].id); - - mpaf/tool/fragments/ce/common/extract_multiple_categories_setup.jmx - - - - - true - - - - false - {"query" : "{\n categoryList(filters:{ids: {in: [\"${category_id_1}\", \"${category_id_2}\", \"${category_id_3}\", \"${category_id_4}\"]}}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_multiple_categories_by_id.jmx - - - - javascript - - - - var response = JSON.parse(prev.getResponseDataAsString()); - -if(response.data == undefined || response.data.categoryList == undefined){ - AssertionResult.setFailureMessage("CategoryList results are empty."); - AssertionResult.setFailure(true); -} - -if(response.data.categoryList.length !== 4){ - AssertionResult.setFailureMessage("CategoryList query expected to find 4 categories. " + response.data.categoryList.length + " returned."); - AssertionResult.setFailure(true); -} - - - - - - - - - 1 - false - 1 - ${graphqlGetCategoryListByCategoryIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Categories Query: Get Multiple Categories By Id"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); - -var numbers = []; - -var sanity = 0; -for(var i = 0; i < 4; i++){ - sanity++; - if(sanity > 100){ - break; - } - var number = random.nextInt(categories.length) - if(numbers.indexOf(number) >= 0){ - i--; - continue; - } - numbers.push(number); -} - -vars.put("category_id_1", categories[numbers[0]].id); -vars.put("category_id_2", categories[numbers[1]].id); -vars.put("category_id_3", categories[numbers[2]].id); -vars.put("category_id_4", categories[numbers[3]].id); - - mpaf/tool/fragments/ce/common/extract_multiple_categories_setup.jmx - - - - - true - - - - false - {"query" : "{\n categories(filters:{ids: {in: [\"${category_id_1}\", \"${category_id_2}\", \"${category_id_3}\", \"${category_id_4}\"]}}) {\n total_count\n page_info {\n total_pages\n current_page\n page_size\n }\n items{\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n }\n}"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/categories_query_get_multiple_categories_by_id.jmx - - - - javascript - - - - var response = JSON.parse(prev.getResponseDataAsString()); - -if(response.data == undefined || response.data.categories == undefined){ - AssertionResult.setFailureMessage("Categories result is empty."); - AssertionResult.setFailure(true); -} - -if(response.data.categories.items.length !== 4){ - AssertionResult.setFailureMessage("Categories query expected to find 4 categories. " + response.data.categories.items.length + " returned."); - AssertionResult.setFailure(true); -} - - - - - - - - - 1 - false - 1 - ${graphqlGetCategoryListByCategoryIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Categories Query: Get Many Categories with Pagination"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"query" : "{\n categories(filters:{name: {match: \"Category\"}}) {\n total_count\n page_info {\n total_pages\n current_page\n page_size\n }\n items{\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n }\n}"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/categories_query_get_many_categories_by_name_match.jmx - - - - javascript - - - - var response = JSON.parse(prev.getResponseDataAsString()); - -if(response.data == undefined || response.data.categories == undefined){ - AssertionResult.setFailureMessage("Categories result is empty."); - AssertionResult.setFailure(true); -} - -if(response.data.categories.items.length != 20){ - AssertionResult.setFailureMessage("Categories query expected to find 20 categories. " + response.data.categories.items.length + " returned."); - AssertionResult.setFailure(true); -} - - - - - - - - - 1 - false - 1 - ${graphqlUrlInfoByUrlKeyPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Url Info by url_key"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - true - - - - false - - {"query":"query resolveUrl($urlKey: String!) {\n urlResolver(url: $urlKey) {\n type\n id\n }\n}","variables":{"urlKey":"${category_url_key}${url_suffix}"},"operationName":"resolveUrl"} - - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_url_info_by_url_key.jmx - - - - {"type":"CATEGORY","id":${category_id}} - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlGetCmsPageByIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Cms Page by id"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var cmsPages = props.get("cms_pages"); -var number = random.nextInt(cmsPages.length); - -vars.put("cms_page_id", cmsPages[number].id); - - mpaf/tool/fragments/ce/setup/prepare_cms_page.jmx - - - - true - - - - false - - {"query":"query getCmsPage($id: Int!, $onServer: Boolean!) {\n cmsPage(id: $id) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"id":${cms_page_id},"onServer":false},"operationName":"getCmsPage"} - - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_get_cms_page_by_id.jmx - - - $.data.cmsPage.url_key - ${cms_page_id} - false - false - false - false - - - - - - - - 1 - false - 1 - ${graphqlGetNavigationMenuByCategoryIdPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Navigation Menu by category_id"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - true - - - - false - {"query":"query navigationMenu($id: Int!) {\n category(id: $id) {\n id\n name\n product_count\n path\n children {\n id\n name\n position\n level\n url_key\n url_path\n product_count\n children_count\n path\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}","variables":{"id":${category_id}},"operationName":"navigationMenu"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_navigation_menu_by_category_id.jmx - - - - - "id":${category_id},"name":"${category_name}","product_count" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlCreateEmptyCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Create Empty Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlGetEmptyCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Get Empty Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_empty_cart.jmx - - - - - {"data":{"cart":{"items":[]}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlSetShippingAddressOnCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Set Shipping Address On Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_empty_cart.jmx - - - - - {"data":{"cart":{"items":[]}}} - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"query":"mutation {\n setShippingAddressesOnCart(\n input: {\n cart_id: \"${quote_id}\"\n shipping_addresses: [\n {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n ]\n }\n ) {\n cart {\n shipping_addresses {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/set_shipping_address_on_cart.jmx - - - - - {"data":{"setShippingAddressesOnCart":{"cart":{"shipping_addresses":[{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}]}}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlSetBillingAddressOnCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Set Billing Address On Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_empty_cart.jmx - - - - - {"data":{"cart":{"items":[]}}} - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"query":"mutation {\n setBillingAddressOnCart(\n input: {\n cart_id: \"${quote_id}\"\n billing_address: {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n }\n ) {\n cart {\n billing_address {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/set_billing_address_on_cart.jmx - - - - - {"data":{"setBillingAddressOnCart":{"cart":{"billing_address":{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}}}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlAddSimpleProductToCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Add Simple Product To Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_simple_product_to_cart.jmx - - - - - addSimpleProductsToCart - "sku":"${product_sku}" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlAddConfigurableProductToCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Add Configurable Product To Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - true - - - - false - {"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - product_option - $.data.products.items[0].variants[0].product.sku - - - BODY - mpaf/tool/fragments/ce/graphql/extract_configurable_product_option.jmx - - - - - true - - - - false - {"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx - - - - - addConfigurableProductsToCart - "sku":"${product_option}" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlUpdateSimpleProductQtyInCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Update Simple Product Qty In Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_simple_product_to_cart.jmx - - - - - addSimpleProductsToCart - "sku":"${product_sku}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_cart.jmx - - - - item_id - $.data.cart.items[0].id - - - BODY - - - - - {"data":{"cart":{"items": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"mutation {\n updateCartItems(input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n cart_item_id: ${item_id}\n quantity: 5\n }\n ]\n }) {\n cart {\n items {\n id\n quantity\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/update_simple_product_qty_in_cart.jmx - - - - - {"data":{"updateCartItems":{"cart":{"items":[{"id":"${item_id}","quantity":5}]}}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlUpdateConfigurableProductQtyInCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Update Configurable Product Qty In Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - true - - - - false - {"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - product_option - $.data.products.items[0].variants[0].product.sku - - - BODY - mpaf/tool/fragments/ce/graphql/extract_configurable_product_option.jmx - - - - - true - - - - false - {"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx - - - - - addConfigurableProductsToCart - "sku":"${product_option}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_cart.jmx - - - - item_id - $.data.cart.items[0].id - - - BODY - - - - - {"data":{"cart":{"items": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"mutation {\n updateCartItems(input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n cart_item_id: ${item_id}\n quantity: 5\n }\n ]\n }) {\n cart {\n items {\n id\n quantity\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/update_configurable_product_qty_in_cart.jmx - - - - - {"data":{"updateCartItems":{"cart":{"items":[{"id":"${item_id}","quantity":5}]}}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlUpdateSimpleProductQtyInCartWithPricesPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Update Simple Product Qty In Cart with Prices"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n prices {\n row_total{\n value\n }\n total_item_discount {\n currency\n value\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n row_total_including_tax{\n value\n }\n }\n product {\n sku\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n }\n}\n","variables":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_simple_product_to_cart_with_prices.jmx - - - - - addSimpleProductsToCart - "sku":"${product_sku}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n row_total_including_tax{\n value\n }\n total_item_discount{value}\n discounts{\n amount{value}\n label\n }\n }\n product {\n sku\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_cart_with_prices.jmx - - - - item_id - $.data.cart.items[0].id - - - BODY - - - - - {"data":{"cart":{"items": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"mutation {\n updateCartItems(input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n cart_item_id: ${item_id}\n quantity: 5\n }\n ]\n }) {\n cart {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n total_item_discount {\n currency\n value\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n row_total_including_tax{\n value\n }\n }\n product {\n sku\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/update_simple_product_qty_in_cart_with_prices.jmx - - - - - "quantity":5 - "id":"${item_id}" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlUpdateConfigurableProductQtyInCartWithPricesPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Update Configurable Product Qty In Cart with Prices"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - true - - - - false - {"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - product_option - $.data.products.items[0].variants[0].product.sku - - - BODY - mpaf/tool/fragments/ce/graphql/extract_configurable_product_option.jmx - - - - - true - - - - false - {"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n total_item_discount {\n currency\n value\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n row_total_including_tax{\n value\n }\n }\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n }\n}\n","variables":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_configurable_product_to_cart_with_prices.jmx - - - - - addConfigurableProductsToCart - "sku":"${product_option}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n row_total_including_tax{\n value\n }\n total_item_discount{value}\n discounts{\n amount{value}\n label\n }\n }\n product {\n sku\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n}\n","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_cart_with_prices.jmx - - - - item_id - $.data.cart.items[0].id - - - BODY - - - - - {"data":{"cart":{"items": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"mutation {\n updateCartItems(input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n cart_item_id: ${item_id}\n quantity: 5\n }\n ]\n }) {\n cart {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n total_item_discount {\n currency\n value\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n row_total_including_tax{\n value\n }\n }\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/update_configurable_product_qty_in_cart_with_prices.jmx - - - - - "quantity":5 - "id":"${item_id}" - - Assertion.response_data - false - 2 - - - - - - - - 1 - false - 1 - ${graphqlRemoveSimpleProductFromCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Remove Simple Product From Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_simple_product_to_cart.jmx - - - - - addSimpleProductsToCart - "sku":"${product_sku}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_cart.jmx - - - - item_id - $.data.cart.items[0].id - - - BODY - - - - - {"data":{"cart":{"items": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"mutation {\n removeItemFromCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_item_id: ${item_id}\n }\n ) {\n cart {\n items {\n quantity\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/remove_simple_product_from_cart.jmx - - - - - {"data":{"removeItemFromCart":{"cart":{"items":[]}}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlRemoveConfigurableProductFromCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Remove Configurable Product From Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - true - - - - false - {"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - product_option - $.data.products.items[0].variants[0].product.sku - - - BODY - mpaf/tool/fragments/ce/graphql/extract_configurable_product_option.jmx - - - - - true - - - - false - {"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx - - - - - addConfigurableProductsToCart - "sku":"${product_option}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_cart.jmx - - - - item_id - $.data.cart.items[0].id - - - BODY - - - - - {"data":{"cart":{"items": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"mutation {\n removeItemFromCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_item_id: ${item_id}\n }\n ) {\n cart {\n items {\n quantity\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/remove_configurable_product_from_cart.jmx - - - - - {"data":{"removeItemFromCart":{"cart":{"items":[]}}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlApplyCouponToCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Apply Coupon To Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_simple_product_to_cart.jmx - - - - - addSimpleProductsToCart - "sku":"${product_sku}" - - Assertion.response_data - false - 2 - - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var coupons = props.get("coupon_codes"); -number = random.nextInt(coupons.length); - -vars.put("coupon_code", coupons[number].code); - - mpaf/tool/fragments/ce/common/extract_coupon_code_setup.jmx - - - - - true - - - - false - {"query":"mutation {\n applyCouponToCart(input: {cart_id: \"${quote_id}\", coupon_code: \"${coupon_code}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/apply_coupon_to_cart.jmx - - - - - {"data":{"applyCouponToCart":{"cart":{"applied_coupon":{"code":"${coupon_code}"}}}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlRemoveCouponFromCartPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Remove Coupon From Cart"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_simple_product_to_cart.jmx - - - - - addSimpleProductsToCart - "sku":"${product_sku}" - - Assertion.response_data - false - 2 - - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var coupons = props.get("coupon_codes"); -number = random.nextInt(coupons.length); - -vars.put("coupon_code", coupons[number].code); - - mpaf/tool/fragments/ce/common/extract_coupon_code_setup.jmx - - - - - true - - - - false - {"query":"mutation {\n applyCouponToCart(input: {cart_id: \"${quote_id}\", coupon_code: \"${coupon_code}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/apply_coupon_to_cart.jmx - - - - - {"data":{"applyCouponToCart":{"cart":{"applied_coupon":{"code":"${coupon_code}"}}}}} - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"query":"mutation {\n removeCouponFromCart(input: {cart_id: \"${quote_id}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/remove_coupon_from_cart.jmx - - - - - {"data":{"removeCouponFromCart":{"cart":{"applied_coupon":null}}}} - - Assertion.response_data - false - 8 - - - - - - - - 1 - false - 1 - ${graphqlCatalogBrowsingByGuestPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Catalog Browsing By Guest"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - true - - - - false - {"query":"query navigationMenu($id: Int!) {\n category(id: $id) {\n id\n name\n product_count\n path\n children {\n id\n name\n position\n level\n url_key\n url_path\n product_count\n children_count\n path\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}","variables":{"id":${category_id}},"operationName":"navigationMenu"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_navigation_menu_by_category_id.jmx - - - - - "id":${category_id},"name":"${category_name}","product_count" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"query productSearch($inputText: String!, $categoryId: String) {\n products(\n pageSize:12\n search: $inputText, filter: { category_id: { eq: $categoryId } }, sort: {name: ASC}) {\n items {\n id\n name\n small_image {\n label\n url\n }\n url_key\n price {\n regularPrice {\n amount {\n value\n currency\n }\n }\n }\n }\n total_count\n filters {\n name\n filter_items_count\n request_var\n filter_items {\n label\n value_string\n }\n }\n }\n}","variables":{"inputText":"Product","categoryId":"${category_id}"},"operationName":"productSearch"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_product_search_by_text_and_category_id.jmx - - - - graphql_search_products_query_total_count - $.data.products.total_count - - - BODY - - - - String totalCount=vars.get("graphql_search_products_query_total_count"); - -if (totalCount == null) { - Failure = true; - FailureMessage = "Not Expected \"totalCount\" to be null"; -} else { - if (Integer.parseInt(totalCount) < 1) { - Failure = true; - FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount; - } else { - Failure = false; - } -} - - - - - - false - - - - - - true - - - - false - - {"query":"query resolveUrl($urlKey: String!) {\n urlResolver(url: $urlKey) {\n type\n id\n }\n}","variables":{"urlKey":"${category_url_key}${url_suffix}"},"operationName":"resolveUrl"} - - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_url_info_by_url_key.jmx - - - - {"type":"CATEGORY","id":${category_id}} - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx - - - - - "name":"${category_name}","id":${category_id}, - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - true - - - - false - {"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"query productDetail($product_sku: String, $onServer: Boolean!) {\n productDetail: products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetail"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_simple_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var cmsPages = props.get("cms_pages"); -var number = random.nextInt(cmsPages.length); - -vars.put("cms_page_id", cmsPages[number].id); - - mpaf/tool/fragments/ce/setup/prepare_cms_page.jmx - - - - true - - - - false - - {"query":"query getCmsPage($id: Int!, $onServer: Boolean!) {\n cmsPage(id: $id) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"id":${cms_page_id},"onServer":false},"operationName":"getCmsPage"} - - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_get_cms_page_by_id.jmx - - - $.data.cmsPage.url_key - ${cms_page_id} - false - false - false - false - - - - - - - - 1 - false - 1 - ${graphqlCheckoutByGuestPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "GraphQL Checkout By Guest"); - - true - - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - true - - - - false - {"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/create_empty_cart.jmx - - - - quote_id - $.data.createEmptyCart - - - BODY - - - - - {"data":{"createEmptyCart":" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_empty_cart.jmx - - - - - {"data":{"cart":{"items":[]}}} - - Assertion.response_data - false - 8 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - true - - - - false - {"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx - - - - - "sku":"${product_sku}","name":"${product_name}" - - Assertion.response_data - false - 2 - - - - - product_option - $.data.products.items[0].variants[0].product.sku - - - BODY - mpaf/tool/fragments/ce/graphql/extract_configurable_product_option.jmx - - - - - true - - - - false - {"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx - - - - - addConfigurableProductsToCart - "sku":"${product_option}" - - Assertion.response_data - false - 2 - - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - true - - - - false - {"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/add_simple_product_to_cart.jmx - - - - - addSimpleProductsToCart - "sku":"${product_sku}" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"query":"mutation {\n setBillingAddressOnCart(\n input: {\n cart_id: \"${quote_id}\"\n billing_address: {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n }\n ) {\n cart {\n billing_address {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/set_billing_address_on_cart.jmx - - - - - {"data":{"setBillingAddressOnCart":{"cart":{"billing_address":{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}}}}} - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"query":"mutation {\n setShippingAddressesOnCart(\n input: {\n cart_id: \"${quote_id}\"\n shipping_addresses: [\n {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n ]\n }\n ) {\n cart {\n shipping_addresses {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/set_shipping_address_on_cart.jmx - - - - - {"data":{"setShippingAddressesOnCart":{"cart":{"shipping_addresses":[{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}]}}}} - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"query":"mutation {\n setPaymentMethodOnCart(input: {\n cart_id: \"${quote_id}\", \n payment_method: {\n code: \"checkmo\"\n }\n }) {\n cart {\n selected_payment_method {\n code\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/set_payment_method_on_cart.jmx - - - - - {"data":{"setPaymentMethodOnCart":{"cart":{"selected_payment_method":{"code":"checkmo"}}}}} - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"query":"{\n cart(cart_id: \"${quote_id}\") {\n shipping_addresses {\n postcode\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/get_current_shipping_address.jmx - - - - - true - - - - false - {"query":"mutation {\n setShippingMethodsOnCart(input: \n {\n cart_id: \"${quote_id}\", \n shipping_methods: [{\n carrier_code: \"flatrate\"\n method_code: \"flatrate\"\n }]\n }) {\n cart {\n shipping_addresses {\n selected_shipping_method {\n carrier_code\n method_code\n }\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/set_shipping_method_on_cart.jmx - - - - - {"data":{"setShippingMethodsOnCart":{"cart":{"shipping_addresses":[{"selected_shipping_method":{"carrier_code":"flatrate","method_code":"flatrate"}}]}}}} - - Assertion.response_data - false - 8 - - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var coupons = props.get("coupon_codes"); -number = random.nextInt(coupons.length); - -vars.put("coupon_code", coupons[number].code); - - mpaf/tool/fragments/ce/common/extract_coupon_code_setup.jmx - - - - - true - - - - false - {"query":"mutation {\n applyCouponToCart(input: {cart_id: \"${quote_id}\", coupon_code: \"${coupon_code}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/apply_coupon_to_cart.jmx - - - - - {"data":{"applyCouponToCart":{"cart":{"applied_coupon":{"code":"${coupon_code}"}}}}} - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"query":"mutation {\n removeCouponFromCart(input: {cart_id: \"${quote_id}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null} - = - - - - - ${graphql_port_number} - 60000 - 200000 - ${request_protocol} - - ${base_path}graphql - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/graphql/remove_coupon_from_cart.jmx - - - - - {"data":{"removeCouponFromCart":{"cart":{"applied_coupon":null}}}} - - Assertion.response_data - false - 8 - - - - - - - - - - continue - - false - ${loops} - - ${combinedBenchmarkPoolUsers} - ${ramp_period} - 1505803944000 - 1505803944000 - false - - - mpaf/tool/fragments/_system/thread_group.jmx - - - javascript - - - - var cacheHitPercent = vars.get("cache_hits_percentage"); - -if ( - cacheHitPercent < 100 && - sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - doCache(); -} - -function doCache(){ - var random = Math.random() * 100; - if (cacheHitPercent < random) { - sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13)); - } -} - - mpaf/tool/fragments/ce/common/cache_hit_miss.jmx - - - - 1 - false - 1 - ${cBrowseCatalogByGuestPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Catalog Browsing By Guest"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - ${cSiteSearchPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Site Search"); - - true - - - - - ${files_folder}search_terms.csv - UTF-8 - - , - false - true - false - shareMode.thread - mpaf/tool/fragments/ce/search/search_terms.jmx - - - - javascript - - - - var cacheHitPercent = vars.get("cache_hits_percentage"); - -if ( - cacheHitPercent < 100 && - sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - doCache(); -} - -function doCache(){ - var random = Math.random() * 100; - if (cacheHitPercent < random) { - sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13)); - } -} - - mpaf/tool/fragments/ce/common/cache_hit_miss.jmx - - - - 1 - false - 1 - ${searchQuickPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Quick Search"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - q - ${searchTerm} - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalogsearch/result/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_quick.jmx - - - - Search results for: - <span class="toolbar-number">\d<\/span> Items|Items <span class="toolbar-number">1 - - Assertion.response_data - false - 2 - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="(?:http|https)://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - false - isPageCacheable - catalogsearch/searchTermsLog/save - $0$ - 0 - 1 - - - - - - "${isPageCacheable}" != "0" - false - mpaf/tool/fragments/ce/search/if_page_cacheable_controller.jmx - - - - - - true - q - ${searchTerm} - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalogsearch/searchTermsLog/save/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_terms_log_save.jmx - - - - - "success":true - - Assertion.response_data - false - 2 - - - - - - - -foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr")); - -if (foundProducts > 3) { - foundProducts = 3; -} - -vars.put("foundProducts", String.valueOf(foundProducts)); - - - - true - mpaf/tool/fragments/ce/search/set_found_items.jmx - - - - true - ${foundProducts} - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - mpaf/tool/fragments/ce/search/searched_products_setup.jmx - -number = vars.get("_counter"); -product = vars.get("product_url_keys_"+number); - -vars.put("product_url_key", product); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - ${searchQuickFilterPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Quick Search With Filtration"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - q - ${searchTerm} - = - true - - - - - - 60000 - 200000 - - - ${base_path}catalogsearch/result/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_quick_filter.jmx - - - - Search results for: - Items <span class="toolbar-number">1 - - Assertion.response_data - false - 2 - - - - 0 - attribute_1_options_count - count((//div[@class="filter-options-content"])[1]//li[@class="item"]) - false - true - false - - - - 0 - attribute_2_options_count - count((//div[@class="filter-options-content"])[2]//li[@class="item"]) - false - true - false - - - - - attribute_1_filter_url - ((//div[@class="filter-options-content"])[1]//li[@class="item"]//a)[1]/@href - false - true - false - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - false - isPageCacheable - catalogsearch/searchTermsLog/save - $0$ - 0 - 1 - - - - - - "${isPageCacheable}" != "0" - false - mpaf/tool/fragments/ce/search/if_page_cacheable_controller.jmx - - - - - - true - q - ${searchTerm} - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalogsearch/searchTermsLog/save/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_terms_log_save.jmx - - - - - "success":true - - Assertion.response_data - false - 2 - - - - - - - ${attribute_1_options_count} > 0 - false - mpaf/tool/fragments/ce/search/search_quick_filter-first-attribute.jmx - - - vars.put("search_url", vars.get("attribute_1_filter_url")); - - - false - - - - - - - - - 60000 - 200000 - - - ${attribute_1_filter_url} - GET - true - false - true - false - false - - - - - - Search results for: - <span class="toolbar-number">[1-9]+ - - Assertion.response_data - false - 2 - - - - 0 - attribute_2_options_count - count((//div[@class="filter-options-content"])[2]//li[@class="item"]) - false - true - false - - - - - attribute_2_filter_url - ((//div[@class="filter-options-content"])[2]//li[@class="item"]//a)[1]/@href - false - true - false - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - - - - ${attribute_2_options_count} > 0 - false - mpaf/tool/fragments/ce/search/search_quick_filter-second-attribute.jmx - - - vars.put("search_url", vars.get("attribute_2_filter_url")); - - - false - - - - - - - - - 60000 - 200000 - - - ${attribute_2_filter_url} - GET - true - false - true - false - false - - - - - - Search results for: - <span class="toolbar-number">[1-9]+ - - Assertion.response_data - false - 2 - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - - - - -foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr")); - -if (foundProducts > 3) { - foundProducts = 3; -} - -vars.put("foundProducts", String.valueOf(foundProducts)); - - - - true - mpaf/tool/fragments/ce/search/set_found_items.jmx - - - - true - ${foundProducts} - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - mpaf/tool/fragments/ce/search/searched_products_setup.jmx - -number = vars.get("_counter"); -product = vars.get("product_url_keys_"+number); - -vars.put("product_url_key", product); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - ${searchAdvancedPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "Advanced Search"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - - - ${base_path}catalogsearch/advanced/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/open_advanced_search_page.jmx - - - - <title>Advanced Search</title> - - Assertion.response_data - false - 2 - - - - - attribute_name - (//select[@class="multiselect"])[last()]/@name - false - true - false - - - - 0 - attribute_options_count - count((//select[@class="multiselect"])[last()]/option) - false - true - false - - - - - attribute_value - ((//select[@class="multiselect"])[last()]/option)[1]/@value - false - true - false - - - - - - - - - - - true - name - - = - true - - - true - sku - - = - true - - - true - description - ${searchTerm} - = - true - - - true - short_description - - = - true - - - true - price%5Bfrom%5D - - = - true - - - true - price%5Bto%5D - ${priceTo} - = - true - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalogsearch/advanced/result/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/search/search_advanced.jmx - - - - items</strong> were found using the following search criteria - - Assertion.response_data - false - 2 - - - - false - product_url_keys - <a class="product-item-link"(?s).+?href="(?:http|https)://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}">(?s). - $2$ - - -1 - - - - - - -foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr")); - -if (foundProducts > 3) { - foundProducts = 3; -} - -vars.put("foundProducts", String.valueOf(foundProducts)); - - - - true - mpaf/tool/fragments/ce/search/set_found_items.jmx - - - - true - ${foundProducts} - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - mpaf/tool/fragments/ce/search/searched_products_setup.jmx - -number = vars.get("_counter"); -product = vars.get("product_url_keys_"+number); - -vars.put("product_url_key", product); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - - - 1 - false - 1 - ${cAddToCartByGuestPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Add To Cart By Guest"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - true - 1 - mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${product_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx - - - false - - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]); - } - } catch (Exception e) { - log.error("eror…", e); - } - - mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - 1 - false - 1 - ${cAddToWishlistPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Add to Wishlist"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - true - 5 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - false - - - true - ${product_uenc} - = - true - uenc - - - true - ${product_id} - = - true - product - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist/index/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/wishlist/add_to_wishlist.jmx - - - - <title>My Wish List</title> - - Assertion.response_data - false - 16 - - - - false - wishListItems - data-post-remove='\{"action":"(.+)\/wishlist\\/index\\/remove\\/","data":\{"item":"([^"]+)" - $2$ - - -1 - - - - - - - - - true - wishlist,messages - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/wishlist/load_wishlist_section.jmx - - - - {"wishlist":{"counter":" - - Assertion.response_data - false - 16 - - - - ${wishlistDelay}*1000 - - - - - - - wishListItems - wishListItem - true - mpaf/tool/fragments/ce/wishlist/clear_wishlist.jmx - - - 1 - 5 - 1 - counter - - true - true - - - - - - - true - ${form_key} - = - true - form_key - true - - - true - ${wishListItem} - = - true - item - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist/index/remove/ - POST - true - false - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cCompareProductsPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Compare Products"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - random_product_compare_id - catalog\\/product_compare\\/add\\/\",\"data\":\{\"product\":\"([0-9]+)\" - $1$ - - 1 - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - random_product_compare_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - ${form_key} - = - true - form_key - - - true - ${product_uenc} - = - true - uenc - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalog/product_compare/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/product_compare_add.jmx - - - - - - - true - compare-products,messages - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/customer_section_load_product_compare_add.jmx - - - - \"compare-products\":{\"count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - ${form_key} - = - true - form_key - - - true - ${product_uenc} - = - true - uenc - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalog/product_compare/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/product_compare_add.jmx - - - - - - - true - compare-products,messages - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/customer_section_load_product_compare_add.jmx - - - - \"compare-products\":{\"count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalog/product_compare/index/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/compare_products.jmx - - - - 1 - 0 - ${__javaScript(Math.round(${productCompareDelay}*1000))} - mpaf/tool/fragments/ce/product_compare/compare_products_pause.jmx - - - - - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}catalog/product_compare/clear - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_compare/compare_products_clear.jmx - - - - - - 1 - false - 1 - ${cCheckoutByGuestPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Checkout By Guest"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - true - 1 - mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${product_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx - - - false - - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]); - } - } catch (Exception e) { - log.error("eror…", e); - } - - mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - javascript - - - - - vars.put("alabama_region_id", props.get("alabama_region_id")); - vars.put("california_region_id", props.get("california_region_id")); - - mpaf/tool/fragments/ce/common/get_region_data.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_start.jmx - - - - <title>Checkout</title> - - Assertion.response_data - false - 2 - - - - - <title>Shopping Cart</title> - - Assertion.response_data - false - 6 - - - - false - cart_id - "quoteData":{"entity_id":"([^'"]+)", - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - cart_id - - - - - - true - - - - false - {"customerEmail":"test@example.com"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/customers/isEmailAvailable - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_email_available.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - true - - Assertion.response_data - false - 8 - - - - - - true - - - - false - {"address":{"country_id":"US","postcode":"95630"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - "available":true - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - {"payment_methods": - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_payment_info_place_order.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - "[0-9]+" - - Assertion.response_data - false - 2 - - - - order_id - $ - - - BODY - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_id - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/onepage/success/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/guest_checkout/checkout_success.jmx - - - - Thank you for your purchase! - Your order # is - - Assertion.response_data - false - 2 - - - - - - - - - 1 - false - 1 - ${cCheckoutByCustomerPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Checkout By Customer"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx - -import java.util.Random; - -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); -} - -vars.putObject("randomIntGenerator", random); - - - - true - - - - - mpaf/tool/fragments/ce/common/init_total_products_in_cart_setup.jmx - -vars.put("totalProductsAdded", "0"); - - - - true - - - - - javascript - - - - random = vars.getObject("randomIntGenerator"); - -var categories = props.get("categories"); -number = random.nextInt(categories.length); - -vars.put("category_url_key", categories[number].url_key); -vars.put("category_name", categories[number].name); -vars.put("category_id", categories[number].id); -vars.putObject("category", categories[number]); - - mpaf/tool/fragments/ce/common/extract_category_setup.jmx - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${category_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_category.jmx - - - - <span class="base" data-ui-id="page-title">${category_name}</span> - - Assertion.response_data - false - 6 - - - - false - category_id - <li class="item category([^'"]+)">\s*<strong>${category_name}</strong>\s*</li> - $1$ - - 1 - simple_product_1_url_key - - - - - ^[0-9]+$ - - Assertion.response_data - false - 1 - variable - category_id - - - - - - true - 2 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("simple_products_list").size()); -product = props.get("simple_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - true - 1 - mpaf/tool/fragments/ce/loop_controller.jmx - - - 1 - - 1 - _counter - - true - true - - - - - -import java.util.Random; - -Random random = vars.getObject("randomIntGenerator"); -number = random.nextInt(props.get("configurable_products_list").size()); -product = props.get("configurable_products_list").get(number); - -vars.put("product_url_key", product.get("url_key")); -vars.put("product_id", product.get("id")); -vars.put("product_name", product.get("title")); -vars.put("product_uenc", product.get("uenc")); -vars.put("product_sku", product.get("sku")); - - - - true - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx - - - - mpaf/tool/fragments/ce/loops/update_products_added_counter.jmx - -productsAdded = Integer.parseInt(vars.get("totalProductsAdded")); -productsAdded = productsAdded + 1; - -vars.put("totalProductsAdded", String.valueOf(productsAdded)); - - - - true - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${product_url_key}${url_suffix} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx - - - - <span>In stock</span> - - Assertion.response_data - false - 2 - - - - - - true - 1 - mpaf/tool/fragments/ce/common/get_configurable_product_options.jmx - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${product_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - - true - ${product_id} - = - true - product - - - true - - = - true - related_product - - - true - 1 - = - true - qty - - - true - ${form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/cart/add/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx - - - false - - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]); - } - } catch (Exception e) { - log.error("eror…", e); - } - - mpaf/tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - - - true - cart,messages - = - true - sections - - - true - true - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/load_cart_section.jmx - - - - You added ${product_name} to your shopping cart. - - Assertion.response_data - false - 2 - - - - - This product is out of stock. - - Assertion.response_data - false - 6 - - - - - \"summary_count\":${totalProductsAdded} - - Assertion.response_data - false - 2 - - - - - - - X-Requested-With - XMLHttpRequest - - - mpaf/tool/fragments/ce/common/http_header_manager_ajax.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - javascript - - - - - vars.put("alabama_region_id", props.get("alabama_region_id")); - vars.put("california_region_id", props.get("california_region_id")); - - mpaf/tool/fragments/ce/common/get_region_data.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_start.jmx - - - - <title>Checkout</title> - - Assertion.response_data - false - 2 - - - - - <title>Shopping Cart</title> - - Assertion.response_data - false - 6 - - - - false - cart_id - "quoteData":{"entity_id":"([^'"]+)", - $1$ - - 1 - - - - false - address_id - "default_billing":"([^'"]+)", - $1$ - - 1 - - - - false - customer_id - "customer_id":([^'",]+), - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - cart_id - - - - - [0-9]+$ - - Assertion.response_data - false - 1 - variable - address_id - - - - - [0-9]+$ - - Assertion.response_data - false - 1 - variable - customer_id - - - - - - true - - - - false - {"addressId":"${addressId}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts/mine/estimate-shipping-methods-by-address-id - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_estimate_shipping_methods.jmx - - - - - Referer - ${base_path}checkout/onepage/ - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - "available":true - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"addressInformation":{"shipping_address":{"customerAddressId":"${address_id}","countryId":"US","regionId":"${alabama_region_id}","regionCode":"AL","region":"Alabama","customerId":"${customer_id}","street":["123 Freedom Blvd. #123"],"telephone":"022-333-4455","postcode":"123123","city":"Fayetteville","firstname":"Anthony","lastname":"Nealy"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts/mine/shipping-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_billing_shipping_information.jmx - - - - - Referer - ${host}${base_path}checkout/onepage - - - Content-Type - application/json; charset=UTF-8 - - - X-Requested-With - XMLHttpRequest - - - Accept - application/json - - - - - - - {"payment_methods" - - Assertion.response_data - false - 2 - - - - - - true - - - - false - {"cartId":"${cart_id}","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"customerAddressId":"${address_id}","countryId":"US","regionId":"${alabama_region_id}","regionCode":"AL","region":"Alabama","customerId":"${customer_id}","street":["123 Freedom Blvd. #123"],"telephone":"022-333-4455","postcode":"123123","city":"Fayetteville","firstname":"Anthony","lastname":"Nealy"}} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/carts/mine/payment-information - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_payment_info_place_order.jmx - - - - - Referer - ${host}${base_path}checkout/onepage - - - Content-Type - application/json; charset=UTF-8 - - - Accept - application/json - - - X-Requested-With - XMLHttpRequest - - - - - - - "[0-9]+" - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}checkout/onepage/success/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/customer_checkout/checkout_success.jmx - - - - Thank you for your purchase! - Your order number is - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - curSampler = ctx.getCurrentSampler(); -if(curSampler.getName().contains("Checkout success")) { - manager = curSampler.getCookieManager(); - manager.clear(); -} - - mpaf/tool/fragments/ce/customer_checkout/checkout_clear_cookie.jmx - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAccountManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Account management"); - - true - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - ${form_key} - ${host} - ${base_path} - false - 0 - true - true - - - true - mpaf/tool/fragments/ce/http_cookie_manager.jmx - - - - get-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_customer_email.jmx - -customerUserList = props.get("customer_emails_list"); -customerUser = customerUserList.poll(); -if (customerUser == null) { - SampleResult.setResponseMessage("customernUser list is empty"); - SampleResult.setResponseData("customerUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("customer_email", customerUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_home_page.jmx - - - - <title>Home page</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/login/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/open_login_page.jmx - - - - <title>Customer Login</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - - - true - ${customer_email} - = - true - login[username] - - - true - ${customer_password} - = - true - login[password] - - - true - - = - true - send - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/loginPost/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/common/login.jmx - - - - <title>My Account</title> - - Assertion.response_data - false - 2 - - - - false - addressId - customer/address/edit/id/([^'"]+)/ - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - addressId - - - - - - - - true - - = - true - sections - - - true - false - = - true - force_new_section_timestamp - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/section/load/ - GET - true - false - true - false - false - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}sales/order/history/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/my_orders.jmx - - - - <title>My Orders</title> - - Assertion.response_data - false - 2 - - - - false - orderId - sales/order/view/order_id/(\d+)/ - $1$ - NOT_FOUND - 1 - - - - - - mpaf/tool/fragments/ce/account_management/if_orders.jmx - "${orderId}" != "NOT_FOUND" - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}sales/order/view/order_id/${orderId} - GET - true - false - true - false - false - - - - - - <title>Order # - - Assertion.response_data - false - 2 - - - - false - shipment_tab - sales/order/shipment/order_id/(\d+)..Order Shipments - $1$ - NOT_FOUND - 1 - - - - - May not have shipped - "${shipment_tab}" != "NOT_FOUND" - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}sales/order/shipment/order_id/${orderId} - GET - true - false - true - false - false - - - - - - Track this shipment - - Assertion.response_data - false - 2 - - - - false - popupLink - popupWindow": {"windowURL":"([^'"]+)", - $1$ - - 1 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${popupLink} - GET - true - false - true - false - false - - - - - - <title>Tracking Information</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}downloadable/customer/products - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/my_downloadable_products.jmx - - - - <title>My Downloadable Products</title> - - Assertion.response_data - false - 2 - - - - false - orderId - sales/order/view/order_id/(\d+)/ - $1$ - NOT_FOUND - 1 - - - - false - linkId - downloadable/download/link/id/(\d+)/ - $1$ - - 1 - - - - - - mpaf/tool/fragments/ce/account_management/if_downloadables.jmx - "${orderId}" != "NOT_FOUND" - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}sales/order/view/order_id/${orderId} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/view_downloadable_products.jmx - - - - <title>Order # - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}downloadable/download/link/id/${linkId} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/download_product.jmx - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist - GET - true - false - true - false - false - - - - - - <title>My Wish List</title> - - Assertion.response_data - false - 2 - - - - false - wishlistId - wishlist/index/update/wishlist_id/([^'"]+)/ - $1$ - - 1 - mpaf/tool/fragments/ce/account_management/my_wish_list.jmx - - - - false - buttonTitle - Update Wish List - FOUND - NOT_FOUND - 1 - - - - - - mpaf/tool/fragments/ce/account_management/if_wishlist.jmx - "${buttonTitle}" === "FOUND" - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist/index/share/wishlist_id/${wishlistId}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/share_wish_list.jmx - - - - <title>Wish List Sharing</title> - - Assertion.response_data - false - 2 - - - - - - - - - true - ${form_key} - = - true - form_key - true - - - true - ${customer_email} - = - true - emails - - - true - [TEST] See my wishlist!!! - = - true - message - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}wishlist/index/send/wishlist_id/${wishlistId}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/account_management/send_wish_list.jmx - - - - <title>My Wish List</title> - - Assertion.response_data - false - 2 - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}customer/account/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/common/logout.jmx - - - - You are signed out. - - Assertion.response_data - false - 2 - - - - - false - - - -customerUserList = props.get("customer_emails_list"); -customerUserList.add(vars.get("customer_email")); - - mpaf/tool/fragments/ce/common/return_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminCMSManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin CMS Management"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_cms_management/admin_cms_management.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/cms/page/ - GET - true - false - true - false - false - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/cms/page/new - GET - true - false - true - false - false - - - - - - - - true - <p>CMS Content ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - content - - - true - - = - true - content_heading - - - true - ${admin_form_key} - = - true - form_key - - - true - - = - true - identifier - - - true - 1 - = - true - is_active - - - true - - = - true - layout_update_xml - - - true - - = - true - meta_description - - - true - - = - true - meta_keywords - - - true - - = - true - meta_title - - - false - {} - = - true - nodes_data - - - true - - = - true - node_ids - - - true - - = - true - page_id - - - true - 1column - = - true - page_layout - - - true - 0 - = - true - store_id[0] - - - true - CMS Title ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - title - - - true - 0 - = - true - website_root - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/cms/page/save/ - POST - true - false - true - false - false - - - - - - You saved the page. - - Assertion.response_data - false - 16 - - - - - 1 - 0 - ${__javaScript(Math.round(${adminCMSManagementDelay}*1000))} - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminBrowseProductGridPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Browse Product Grid"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - - vars.put("gridEntityType" , "Product"); - - pagesCount = parseInt(vars.get("products_page_size")) || 20; - vars.put("grid_entity_page_size" , pagesCount); - vars.put("grid_namespace" , "product_listing"); - vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_product_filter_text")); - vars.put("grid_filter_field", "name"); - - // set sort fields and sort directions - vars.put("grid_sort_field_1", "name"); - vars.put("grid_sort_field_2", "price"); - vars.put("grid_sort_field_3", "attribute_set_id"); - vars.put("grid_sort_order_1", "asc"); - vars.put("grid_sort_order_2", "desc"); - - javascript - mpaf/tool/fragments/ce/admin_browse_products_grid/setup.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; - var totalsRecord = parseInt(vars.get("entity_total_records")); - var pageCount = Math.round(totalsRecord/pageSize); - - vars.put("grid_pages_count", pageCount); - - javascript - - - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - ${grid_admin_browse_filter_text} - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; -var totalsRecord = parseInt(vars.get("entity_total_records")); -var pageCount = Math.round(totalsRecord/pageSize); - -vars.put("grid_pages_count_filtered", pageCount); - - javascript - - - - - - 1 - ${grid_pages_count} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - ${page_number} - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - 1 - ${grid_pages_count_filtered} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx - - - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx - - - - grid_sort_field - grid_sort_field - true - 0 - 3 - - - - grid_sort_order - grid_sort_order - true - 0 - 2 - - - - - - - true - ${grid_namespace} - = - true - namespace - false - - - true - ${grid_admin_browse_filter_text} - = - true - filters[${grid_filter_field}] - false - - - true - true - = - true - filters[placeholder] - false - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - false - - - true - ${page_number} - = - true - paging[current] - false - - - true - ${grid_sort_field} - = - true - sorting[field] - false - - - true - ${grid_sort_order} - = - true - sorting[direction] - false - - - true - true - = - true - isAjax - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminBrowseOrderGridPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Browse Order Grid"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - - vars.put("gridEntityType" , "Order"); - - pagesCount = parseInt(vars.get("orders_page_size")) || 20; - vars.put("grid_entity_page_size" , pagesCount); - vars.put("grid_namespace" , "sales_order_grid"); - vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_orders_filter_text")); - vars.put("grid_filter_field", "status"); - - // set sort fields and sort directions - vars.put("grid_sort_field_1", "increment_id"); - vars.put("grid_sort_field_2", "created_at"); - vars.put("grid_sort_field_3", "billing_name"); - vars.put("grid_sort_order_1", "asc"); - vars.put("grid_sort_order_2", "desc"); - - javascript - mpaf/tool/fragments/ce/admin_browse_orders_grid/setup.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; - var totalsRecord = parseInt(vars.get("entity_total_records")); - var pageCount = Math.round(totalsRecord/pageSize); - - vars.put("grid_pages_count", pageCount); - - javascript - - - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - ${grid_admin_browse_filter_text} - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; -var totalsRecord = parseInt(vars.get("entity_total_records")); -var pageCount = Math.round(totalsRecord/pageSize); - -vars.put("grid_pages_count_filtered", pageCount); - - javascript - - - - - - 1 - ${grid_pages_count} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - ${page_number} - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - 1 - ${grid_pages_count_filtered} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx - - - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx - - - - grid_sort_field - grid_sort_field - true - 0 - 3 - - - - grid_sort_order - grid_sort_order - true - 0 - 2 - - - - - - - true - ${grid_namespace} - = - true - namespace - false - - - true - ${grid_admin_browse_filter_text} - = - true - filters[${grid_filter_field}] - false - - - true - true - = - true - filters[placeholder] - false - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - false - - - true - ${page_number} - = - true - paging[current] - false - - - true - ${grid_sort_field} - = - true - sorting[field] - false - - - true - ${grid_sort_order} - = - true - sorting[direction] - false - - - true - true - = - true - isAjax - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminProductCreationPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Create Product"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/once_only_controller.jmx - - - - mpaf/tool/fragments/ce/admin_create_product/get_related_product_id.jmx - import org.apache.jmeter.samplers.SampleResult; -import java.util.Random; -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom}); -} -relatedIndex = random.nextInt(props.get("simple_products_list").size()); -vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id")); - - - true - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - Content-Type - application/json - - - Accept - */* - - - mpaf/tool/fragments/ce/api/header_manager_before_token.jmx - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/api/admin_token_retrieval.jmx - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - - Authorization - Bearer ${admin_token} - - - mpaf/tool/fragments/ce/api/header_manager.jmx - - - - - - - false - mycolor - = - true - searchCriteria[filterGroups][0][filters][0][value] - - - false - attribute_code - = - true - searchCriteria[filterGroups][0][filters][0][field] - - - false - mysize - = - true - searchCriteria[filterGroups][0][filters][1][value] - - - false - attribute_code - = - true - searchCriteria[filterGroups][0][filters][1][field] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/default/V1/products/attributes - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/get_product_attributes.jmx - - - product_attributes - $.items - - - BODY - - - - javascript - - - - -var attributesData = JSON.parse(vars.get("product_attributes")), -maxOptions = 2; - -attributes = []; -for (i in attributesData) { - if (i >= 2) { - break; - } - var data = attributesData[i], - attribute = { - "id": data.attribute_id, - "code": data.attribute_code, - "label": data.default_frontend_label, - "options": [] - }; - - var processedOptions = 0; - for (optionN in data.options) { - var option = data.options[optionN]; - if (parseInt(option.value) > 0 && processedOptions < maxOptions) { - processedOptions++; - attribute.options.push(option); - } - } - attributes.push(attribute); -} - -vars.putObject("product_attributes", attributes); - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product_set/index/filter/${attribute_set_filter} - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/configurable_setup_attribute_set.jmx - - - - false - attribute_set_id - catalog&#x2F;product_set&#x2F;edit&#x2F;id&#x2F;([\d]+)&#x2F;"[\D\d]*Attribute Set 1 - $1$ - - 1 - - - - false - - - import org.apache.commons.codec.binary.Base64; - -byte[] encodedBytes = Base64.encodeBase64("set_name=Attribute Set 1".getBytes()); -vars.put("attribute_set_filter", new String(encodedBytes)); - - - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - import org.apache.jmeter.samplers.SampleResult; -import java.util.Random; -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom}); -} -number = random.nextInt(props.get("simple_products_list_for_edit").size()); -simpleList = props.get("simple_products_list_for_edit").get(number); -vars.put("simple_product_1_id", simpleList.get("id")); -vars.put("simple_product_1_name", simpleList.get("title")); - -do { - number1 = random.nextInt(props.get("simple_products_list_for_edit").size()); -} while(number == number1); -simpleList = props.get("simple_products_list_for_edit").get(number1); -vars.put("simple_product_2_id", simpleList.get("id")); -vars.put("simple_product_2_name", simpleList.get("title")); - -number2 = random.nextInt(props.get("configurable_products_list").size()); -configurableList = props.get("configurable_products_list").get(number2); -vars.put("configurable_product_1_id", configurableList.get("id")); -vars.put("configurable_product_1_url_key", configurableList.get("url_key")); -vars.put("configurable_product_1_name", configurableList.get("title")); - -//Additional category to be added -//int categoryId = Integer.parseInt(vars.get("simple_product_category_id")); -//vars.put("category_additional", (categoryId+1).toString()); -//New price -vars.put("price_new", "9999"); -//New special price -vars.put("special_price_new", "8888"); -//New quantity -vars.put("quantity_new", "100600"); -vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNum}-${__Random(1,1000000)}"); - - - - - true - mpaf/tool/fragments/ce/admin_create_product/setup.jmx - - - - mpaf/tool/fragments/ce/admin_create_product/create_bundle_product.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/ - GET - true - false - true - false - false - - - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 42 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[configurable_variations] - - - true - 1 - = - true - affect_configurable_product_attributes - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - new-variations-attribute-set-id - - - true - 0 - = - true - product[shipment_type] - - - true - option title one - = - true - bundle_options[bundle_options][0][title] - - - true - - = - true - bundle_options[bundle_options][0][option_id] - - - true - - = - true - bundle_options[bundle_options][0][delete] - - - true - select - = - true - bundle_options[bundle_options][0][type] - - - true - 1 - = - true - bundle_options[bundle_options][0][required] - - - true - 0 - = - true - bundle_options[bundle_options][0][position] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][option_id] - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][0][bundle_selections][0][product_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][delete] - - - true - 25 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_value] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_type] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty] - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][0][position] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][option_id] - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][0][bundle_selections][1][product_id] - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][delete] - - - true - 10.99 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_value] - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_type] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty] - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][position] - - - true - option title two - = - true - bundle_options[bundle_options][1][title] - - - true - - = - true - bundle_options[bundle_options][1][option_id] - - - true - - = - true - bundle_options[bundle_options][1][delete] - - - true - select - = - true - bundle_options[bundle_options][1][type] - - - true - 1 - = - true - bundle_options[bundle_options][1][required] - - - true - 1 - = - true - bundle_options[bundle_options][1][position] - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][option_id] - true - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][1][bundle_selections][0][product_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][delete] - true - - - true - 5.00 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_value] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_type] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][position] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][option_id] - true - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][1][bundle_selections][1][product_id] - true - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][delete] - true - - - true - 7.00 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_value] - true - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_type] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty] - true - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][position] - true - - - true - 2 - = - true - affect_bundle_product_selections - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/4/ - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 42 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[configurable_variations] - - - true - 1 - = - true - affect_configurable_product_attributes - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - new-variations-attribute-set-id - - - true - 0 - = - true - product[shipment_type] - false - - - true - option title one - = - true - bundle_options[bundle_options][0][title] - false - - - true - - = - true - bundle_options[bundle_options][0][option_id] - false - - - true - - = - true - bundle_options[bundle_options][0][delete] - false - - - true - select - = - true - bundle_options[bundle_options][0][type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][required] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][position] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][option_id] - false - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][0][bundle_selections][0][product_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][0][delete] - false - - - true - 25 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_value] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][0][position] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][option_id] - false - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][0][bundle_selections][1][product_id] - false - - - true - - = - true - bundle_options[bundle_options][0][bundle_selections][1][delete] - false - - - true - 10.99 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][0][bundle_selections][1][position] - false - - - true - option title two - = - true - bundle_options[bundle_options][1][title] - false - - - true - - = - true - bundle_options[bundle_options][1][option_id] - false - - - true - - = - true - bundle_options[bundle_options][1][delete] - false - - - true - select - = - true - bundle_options[bundle_options][1][type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][required] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][position] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][option_id] - false - - - true - ${simple_product_1_id} - = - true - bundle_options[bundle_options][1][bundle_selections][0][product_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][0][delete] - false - - - true - 5.00 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][0][position] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][option_id] - false - - - true - ${simple_product_2_id} - = - true - bundle_options[bundle_options][1][bundle_selections][1][product_id] - false - - - true - - = - true - bundle_options[bundle_options][1][bundle_selections][1][delete] - false - - - true - 7.00 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_value] - false - - - true - 0 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_price_type] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty] - false - - - true - 1 - = - true - bundle_options[bundle_options][1][bundle_selections][1][position] - false - - - true - 2 - = - true - affect_bundle_product_selections - false - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - option title one - option title two - ${simple_product_2_name} - ${simple_product_1_name} - - - Assertion.response_data - false - 2 - - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/open_catalog_grid.jmx - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/${attribute_set_id}/type/configurable/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/new_configurable.jmx - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - 1 - = - true - affect_configurable_product_attributes - true - - - true - ${admin_form_key} - = - true - form_key - true - - - true - ${attribute_set_id} - = - true - new-variations-attribute-set-id - true - - - true - 1 - = - true - product[affect_product_custom_options] - true - - - true - ${attribute_set_id} - = - true - product[attribute_set_id] - true - - - true - 4 - = - true - product[category_ids][0] - true - - - true - - = - true - product[custom_layout_update] - true - - - true - - = - true - product[description] - true - - - true - 0 - = - true - product[gift_message_available] - true - - - true - 1 - = - true - product[gift_wrapping_available] - true - - - true - - = - true - product[gift_wrapping_price] - true - - - true - - = - true - product[image] - true - - - true - 2 - = - true - product[is_returnable] - true - - - true - ${configurable_sku} - Meta Description - = - true - product[meta_description] - true - - - true - ${configurable_sku} - Meta Keyword - = - true - product[meta_keyword] - true - - - true - ${configurable_sku} - Meta Title - = - true - product[meta_title] - true - - - true - ${configurable_sku} - = - true - product[name] - true - - - true - container2 - = - true - product[options_container] - true - - - true - ${price_new} - = - true - product[price] - true - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - true - - - true - 1000 - = - true - product[quantity_and_stock_status][qty] - true - - - true - - = - true - product[short_description] - true - - - true - ${configurable_sku} - = - true - product[sku] - true - - - true - - = - true - product[small_image] - true - - - true - ${special_price_new} - = - true - product[special_price] - true - - - true - 1 - = - true - product[status] - true - - - true - 0 - = - true - product[stock_data][backorders] - true - - - true - 1 - = - true - product[stock_data][deferred_stock_update] - true - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - true - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - true - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - true - - - true - 1 - = - true - product[stock_data][manage_stock] - true - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - true - - - true - 0 - = - true - product[stock_data][min_qty] - true - - - true - 1 - = - true - product[stock_data][min_sale_qty] - true - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - true - - - true - 1 - = - true - product[stock_data][qty_increments] - true - - - true - 1 - = - true - product[stock_data][use_config_backorders] - true - - - true - 1 - = - true - product[stock_data][use_config_deferred_stock_update] - true - - - true - 1 - = - true - product[stock_data][use_config_enable_qty_increments] - true - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - true - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - true - - - true - 2 - = - true - product[tax_class_id] - true - - - true - - = - true - product[thumbnail] - true - - - true - - = - true - product[url_key] - true - - - true - 1 - = - true - product[use_config_gift_message_available] - true - - - true - 1 - = - true - product[use_config_gift_wrapping_available] - true - - - true - 1 - = - true - product[use_config_is_returnable] - true - - - true - 4 - = - true - product[visibility] - true - - - true - 1 - = - true - product[website_ids][1] - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/${attribute_set_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/configurable_validate.jmx - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - javascript - - - - -attributes = vars.getObject("product_attributes"); - -for (i in attributes) { - var attribute = attributes[i]; - sampler.addArgument("attribute_codes[" + i + "]", attribute.code); - sampler.addArgument("attributes[" + i + "]", attribute.id); - sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value); - addConfigurableAttributeData(attribute); -} - -addConfigurableMatrix(attributes); - -function addConfigurableAttributeData(attribute) { - var attributeId = attribute.id; - - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0); - attribute.options.forEach(function (option, index) { - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value); - }); -} - -/** - * Build 4 simple products for Configurable - */ -function addConfigurableMatrix(attributes) { - - var attribute1 = attributes[0], - attribute2 = attributes[1], - productIndex = 1, - products = []; - var variationNames = []; - attribute1.options.forEach(function (option1) { - attribute2.options.forEach(function (option2) { - var productAttributes = {}, - namePart = option1.label + "+" + option2.label, - variationKey = option1.value + "-" + option2.value; - productAttributes[attribute1.code] = option1.value; - productAttributes[attribute2.code] = option2.value; - - variationNames.push(namePart + " - " + vars.get("configurable_sku")); - var product = { - "id": null, - "name": namePart + " - " + vars.get("configurable_sku"), - "sku": namePart + " - " + vars.get("configurable_sku"), - "status": 1, - "price": "100", - "price_currency": "$", - "price_string": "$100", - "weight": "6", - "qty": "50", - "variationKey": variationKey, - "configurable_attribute": JSON.stringify(productAttributes), - "thumbnail_image": "", - "media_gallery": {"images": {}}, - "image": [], - "was_changed": true, - "canEdit": 1, - "newProduct": 1, - "record_id": productIndex - }; - productIndex++; - products.push(product); - }); - }); - - sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products)); - vars.putObject("configurable_variations_assertion", variationNames); -} - - mpaf/tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - 1 - = - true - affect_configurable_product_attributes - true - - - true - ${admin_form_key} - = - true - form_key - true - - - true - ${attribute_set_id} - = - true - new-variations-attribute-set-id - true - - - true - 1 - = - true - product[affect_product_custom_options] - true - - - true - ${attribute_set_id} - = - true - product[attribute_set_id] - true - - - true - 2 - = - true - product[category_ids][0] - true - - - true - - = - true - product[custom_layout_update] - true - - - true - - = - true - product[description] - true - - - true - 0 - = - true - product[gift_message_available] - true - - - true - 1 - = - true - product[gift_wrapping_available] - true - - - true - - = - true - product[gift_wrapping_price] - true - - - true - - = - true - product[image] - true - - - true - 2 - = - true - product[is_returnable] - true - - - true - ${configurable_sku} - Meta Description - = - true - product[meta_description] - true - - - true - ${configurable_sku} - Meta Keyword - = - true - product[meta_keyword] - true - - - true - ${configurable_sku} - Meta Title - = - true - product[meta_title] - true - - - true - ${configurable_sku} - = - true - product[name] - true - - - true - container2 - = - true - product[options_container] - true - - - true - ${price_new} - = - true - product[price] - true - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - true - - - true - 1000 - = - true - product[quantity_and_stock_status][qty] - true - - - true - - = - true - product[short_description] - true - - - true - ${configurable_sku} - = - true - product[sku] - true - - - true - - = - true - product[small_image] - true - - - true - ${special_price_new} - = - true - product[special_price] - true - - - true - 1 - = - true - product[status] - true - - - true - 0 - = - true - product[stock_data][backorders] - true - - - true - 1 - = - true - product[stock_data][deferred_stock_update] - true - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - true - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - true - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - true - - - true - 1 - = - true - product[stock_data][manage_stock] - true - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - true - - - true - 0 - = - true - product[stock_data][min_qty] - true - - - true - 1 - = - true - product[stock_data][min_sale_qty] - true - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - true - - - true - 1 - = - true - product[stock_data][qty_increments] - true - - - true - 1 - = - true - product[stock_data][use_config_backorders] - true - - - true - 1 - = - true - product[stock_data][use_config_deferred_stock_update] - true - - - true - 1 - = - true - product[stock_data][use_config_enable_qty_increments] - true - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - true - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - true - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - true - - - true - 2 - = - true - product[tax_class_id] - true - - - true - - = - true - product[thumbnail] - true - - - true - - = - true - product[url_key] - true - - - true - 1 - = - true - product[use_config_gift_message_available] - true - - - true - 1 - = - true - product[use_config_gift_wrapping_available] - true - - - true - 1 - = - true - product[use_config_is_returnable] - true - - - true - 4 - = - true - product[visibility] - true - - - true - 1 - = - true - product[website_ids][1] - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/${attribute_set_id}/type/configurable/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_product/configurable_save.jmx - - - - You saved the product - - Assertion.response_data - false - 2 - - - - javascript - - - - -var configurableVariations = vars.getObject("configurable_variations_assertion"), -response = SampleResult.getResponseDataAsString(); - -configurableVariations.forEach(function (variation) { - if (response.indexOf(variation) == -1) { - AssertionResult.setFailureMessage("Cannot find variation \"" + variation + "\""); - AssertionResult.setFailure(true); - } -}); - - - - - - javascript - - - - -attributes = vars.getObject("product_attributes"); - -for (i in attributes) { - var attribute = attributes[i]; - sampler.addArgument("attribute_codes[" + i + "]", attribute.code); - sampler.addArgument("attributes[" + i + "]", attribute.id); - sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value); - addConfigurableAttributeData(attribute); -} - -addConfigurableMatrix(attributes); - -function addConfigurableAttributeData(attribute) { - var attributeId = attribute.id; - - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0); - attribute.options.forEach(function (option, index) { - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index); - sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value); - }); -} - -/** - * Build 4 simple products for Configurable - */ -function addConfigurableMatrix(attributes) { - - var attribute1 = attributes[0], - attribute2 = attributes[1], - productIndex = 1, - products = []; - var variationNames = []; - attribute1.options.forEach(function (option1) { - attribute2.options.forEach(function (option2) { - var productAttributes = {}, - namePart = option1.label + "+" + option2.label, - variationKey = option1.value + "-" + option2.value; - productAttributes[attribute1.code] = option1.value; - productAttributes[attribute2.code] = option2.value; - - variationNames.push(namePart + " - " + vars.get("configurable_sku")); - var product = { - "id": null, - "name": namePart + " - " + vars.get("configurable_sku"), - "sku": namePart + " - " + vars.get("configurable_sku"), - "status": 1, - "price": "100", - "price_currency": "$", - "price_string": "$100", - "weight": "6", - "qty": "50", - "variationKey": variationKey, - "configurable_attribute": JSON.stringify(productAttributes), - "thumbnail_image": "", - "media_gallery": {"images": {}}, - "image": [], - "was_changed": true, - "canEdit": 1, - "newProduct": 1, - "record_id": productIndex - }; - productIndex++; - products.push(product); - }); - }); - - sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products)); - vars.putObject("configurable_variations_assertion", variationNames); -} - - mpaf/tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx - - - - - - mpaf/tool/fragments/ce/admin_create_product/create_downloadable_product.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/4/type/downloadable/ - GET - true - false - true - false - false - - - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - ${files_folder}downloadable_original.txt - links - text/plain - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/downloadable_file/upload/type/links/?isAjax=true - POST - false - false - true - true - false - - - - - original_file - $.file - - - BODY - - - - - - - - ${files_folder}downloadable_sample.txt - samples - text/plain - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/downloadable_file/upload/type/samples/?isAjax=true - POST - false - false - true - true - false - - - - - sample_file - $.file - - - BODY - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 123 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - on - = - true - is_downloadable - - - true - Links - = - true - product[links_title] - - - true - 0 - = - true - product[links_purchased_separately] - - - true - ${original_file} - = - true - downloadable[link][0][file][0][file] - false - - - true - downloadable_original.txt - = - true - downloadable[link][0][file][0][name] - false - - - true - 13 - = - true - downloadable[link][0][file][0][size] - false - - - true - new - = - true - downloadable[link][0][file][0][status] - false - - - true - 1 - = - true - downloadable[link][0][is_shareable] - - - true - 0 - = - true - downloadable[link][0][is_unlimited] - - - true - - = - true - downloadable[link][0][link_url] - - - true - 0 - = - true - downloadable[link][0][number_of_downloads] - true - - - true - 120 - = - true - downloadable[link][0][price] - true - - - true - 0 - = - true - downloadable[link][0][record_id] - true - - - true - file - = - true - downloadable[link][0][sample][type] - - - true - - = - true - downloadable[link][0][sample][url] - - - true - 1 - = - true - downloadable[link][0][sort_order] - - - true - Original Link - = - true - downloadable[link][0][title] - - - true - file - = - true - downloadable[link][0][type] - - - true - ${sample_file} - = - true - downloadable[sample][0][file][0][file] - true - - - true - downloadable_sample.txt - = - true - downloadable[sample][0][file][0][name] - true - - - true - 14 - = - true - downloadable[sample][0][file][0][size] - true - - - true - new - = - true - downloadable[sample][0][file][0][status] - true - - - true - 0 - = - true - downloadable[sample][0][record_id] - true - - - true - - = - true - downloadable[sample][0][sample_url] - true - - - true - 1 - = - true - downloadable[sample][0][sort_order] - true - - - true - Sample Link - = - true - downloadable[sample][0][title] - true - - - true - file - = - true - downloadable[sample][0][type] - true - - - true - 1 - = - true - affect_configurable_product_attributes - false - - - true - 4 - = - true - new-variations-attribute-set-id - false - - - true - - = - true - product[configurable_variation] - false - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/4/type/downloadable/ - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 123 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - false - - - true - 1 - = - true - product[status] - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - ${original_file} - = - true - downloadable[link][0][file][0][file] - false - - - true - downloadable_original.txt - = - true - downloadable[link][0][file][0][name] - false - - - true - 13 - = - true - downloadable[link][0][file][0][size] - false - - - true - new - = - true - downloadable[link][0][file][0][status] - false - - - true - 1 - = - true - downloadable[link][0][is_shareable] - true - - - true - 0 - = - true - downloadable[link][0][is_unlimited] - true - - - true - - = - true - downloadable[link][0][link_url] - true - - - true - 0 - = - true - downloadable[link][0][number_of_downloads] - false - - - true - 120 - = - true - downloadable[link][0][price] - false - - - true - 0 - = - true - downloadable[link][0][record_id] - false - - - true - file - = - true - downloadable[link][0][sample][type] - true - - - true - - = - true - downloadable[link][0][sample][url] - true - - - true - 1 - = - true - downloadable[link][0][sort_order] - true - - - true - Original Link - = - true - downloadable[link][0][title] - true - - - true - file - = - true - downloadable[link][0][type] - true - - - true - ${sample_file} - = - true - downloadable[sample][0][file][0][file] - true - - - true - downloadable_sample.txt - = - true - downloadable[sample][0][file][0][name] - true - - - true - 14 - = - true - downloadable[sample][0][file][0][size] - true - - - true - new - = - true - downloadable[sample][0][file][0][status] - true - - - true - 0 - = - true - downloadable[sample][0][record_id] - true - - - true - - = - true - downloadable[sample][0][sample_url] - true - - - true - 1 - = - true - downloadable[sample][0][sort_order] - true - - - true - Sample Link - = - true - downloadable[sample][0][title] - true - - - true - file - = - true - downloadable[sample][0][type] - true - - - true - 1 - = - true - affect_configurable_product_attributes - false - - - true - 4 - = - true - new-variations-attribute-set-id - false - - - true - - = - true - product[configurable_variation] - false - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/4/type/downloadable/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - - Assertion.response_data - false - 2 - - - - - violation - - Assertion.response_data - false - 6 - - - - - - - mpaf/tool/fragments/ce/admin_create_product/create_simple_product.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/ - GET - true - false - true - false - false - - - - - - records found - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/new/set/4/type/simple/ - GET - true - false - true - false - false - - - - - - New Product - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 123 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - product[options][1][is_delete] - false - - - true - 1 - = - true - product[options][1][is_require] - false - - - true - select - = - true - product[options][1][previous_group] - false - - - true - drop_down - = - true - product[options][1][previous_type] - false - - - true - 0 - = - true - product[options][1][sort_order] - false - - - true - Product Option Title One - = - true - product[options][1][title] - false - - - true - drop_down - = - true - product[options][1][type] - false - - - true - - = - true - product[options][1][values][1][is_delete] - false - - - true - 200 - = - true - product[options][1][values][1][price] - false - - - true - fixed - = - true - product[options][1][values][1][price_type] - false - - - true - sku-one - = - true - product[options][1][values][1][sku] - false - - - true - 0 - = - true - product[options][1][values][1][sort_order] - false - - - true - Row Title - = - true - product[options][1][values][1][title] - false - - - true - - = - true - product[options][2][is_delete] - false - - - true - 1 - = - true - product[options][2][is_require] - false - - - true - 250 - = - true - product[options][2][max_characters] - false - - - true - text - = - true - product[options][2][previous_group] - false - - - true - field - = - true - product[options][2][previous_type] - false - - - true - 500 - = - true - product[options][2][price] - false - - - true - fixed - = - true - product[options][2][price_type] - false - - - true - sku-two - = - true - product[options][2][sku] - false - - - true - 1 - = - true - product[options][2][sort_order] - false - - - true - Field Title - = - true - product[options][2][title] - false - - - true - field - = - true - product[options][2][type] - false - - - true - 1 - = - true - affect_configurable_product_attributes - true - - - true - 4 - = - true - new-variations-attribute-set-id - true - - - true - - = - true - product[configurable_variation] - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/set/4/ - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[name] - false - - - true - SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[sku] - false - - - true - 123 - = - true - product[price] - - - true - 2 - = - true - product[tax_class_id] - - - true - 111 - = - true - product[quantity_and_stock_status][qty] - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - - - true - 1.0000 - = - true - product[weight] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 2 - = - true - product[category_ids][] - - - true - <p>Full simple product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[description] - - - true - <p>Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</p> - = - true - product[short_description] - - - true - 1 - = - true - product[status] - - - true - - = - true - product[image] - - - true - - = - true - product[small_image] - - - true - - = - true - product[thumbnail] - - - true - simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - product[url_key] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title - = - true - product[meta_title] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword - = - true - product[meta_keyword] - - - true - Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description - = - true - product[meta_description] - - - true - 1 - = - true - product[website_ids][] - - - true - 99 - = - true - product[special_price] - - - true - - = - true - product[special_from_date] - - - true - - = - true - product[special_to_date] - - - true - - = - true - product[cost] - - - true - 0 - = - true - product[tier_price][0][website_id] - - - true - 32000 - = - true - product[tier_price][0][cust_group] - - - true - 100 - = - true - product[tier_price][0][price_qty] - - - true - 90 - = - true - product[tier_price][0][price] - - - true - - = - true - product[tier_price][0][delete] - - - true - 0 - = - true - product[tier_price][1][website_id] - - - true - 1 - = - true - product[tier_price][1][cust_group] - - - true - 101 - = - true - product[tier_price][1][price_qty] - - - true - 99 - = - true - product[tier_price][1][price] - - - true - - = - true - product[tier_price][1][delete] - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - - - true - 100500 - = - true - product[stock_data][original_inventory_qty] - - - true - 100500 - = - true - product[stock_data][qty] - - - true - 0 - = - true - product[stock_data][min_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - - - true - 1 - = - true - product[stock_data][min_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - - - true - 0 - = - true - product[stock_data][backorders] - - - true - 1 - = - true - product[stock_data][use_config_backorders] - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - - - true - 0 - = - true - product[stock_data][qty_increments] - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - - - true - 1 - = - true - product[stock_data][is_in_stock] - - - true - - = - true - product[custom_design] - - - true - - = - true - product[custom_design_from] - - - true - - = - true - product[custom_design_to] - - - true - - = - true - product[custom_layout_update] - - - true - - = - true - product[page_layout] - - - true - container2 - = - true - product[options_container] - - - true - - = - true - product[options][1][is_delete] - true - - - true - 1 - = - true - product[options][1][is_require] - - - true - select - = - true - product[options][1][previous_group] - false - - - true - drop_down - = - true - product[options][1][previous_type] - false - - - true - 0 - = - true - product[options][1][sort_order] - false - - - true - Product Option Title One - = - true - product[options][1][title] - - - true - drop_down - = - true - product[options][1][type] - - - true - - = - true - product[options][1][values][1][is_delete] - false - - - true - 200 - = - true - product[options][1][values][1][price] - - - true - fixed - = - true - product[options][1][values][1][price_type] - - - true - sku-one - = - true - product[options][1][values][1][sku] - - - true - 0 - = - true - product[options][1][values][1][sort_order] - - - true - Row Title - = - true - product[options][1][values][1][title] - - - true - - = - true - product[options][2][is_delete] - false - - - true - 1 - = - true - product[options][2][is_require] - - - true - 250 - = - true - product[options][2][max_characters] - - - true - text - = - true - product[options][2][previous_group] - - - true - field - = - true - product[options][2][previous_type] - - - true - 500 - = - true - product[options][2][price] - - - true - fixed - = - true - product[options][2][price_type] - - - true - sku-two - = - true - product[options][2][sku] - - - true - 1 - = - true - product[options][2][sort_order] - - - true - Field Title - = - true - product[options][2][title] - - - true - field - = - true - product[options][2][type] - - - true - 1 - = - true - affect_configurable_product_attributes - true - - - true - 4 - = - true - new-variations-attribute-set-id - true - - - true - - = - true - product[configurable_variation] - true - - - true - ${related_product_id} - = - true - links[related][0][id] - - - true - 1 - = - true - links[related][0][position] - - - true - ${related_product_id} - = - true - links[upsell][0][id] - - - true - 1 - = - true - links[upsell][0][position] - - - true - ${related_product_id} - = - true - links[crosssell][0][id] - - - true - 1 - = - true - links[crosssell][0][position] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/set/4/type/simple/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - - Assertion.response_data - false - 2 - - - - - violation - - Assertion.response_data - false - 6 - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminProductEditingPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Edit Product"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - mpaf/tool/fragments/ce/admin_edit_product/admin_edit_product_updated.jmx - import java.util.ArrayList; - import java.util.HashMap; - import java.util.Random; - - try { - Random random = new Random(); - if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); - } - simpleCount = props.get("simple_products_list_for_edit").size(); - configCount = props.get("configurable_products_list_for_edit").size(); - productCount = 0; - if (simpleCount > configCount) { - productCount = configCount; - } else { - productCount = simpleCount; - } - int threadsNumber = ctx.getThreadGroup().getNumThreads(); - if (threadsNumber == 0) { - threadsNumber = 1; - } - //Current thread number starts from 0 - currentThreadNum = ctx.getThreadNum(); - - String siterator = vars.get("threadIterator_" + currentThreadNum.toString()); - iterator = 0; - if(siterator == null){ - vars.put("threadIterator_" + currentThreadNum.toString() , "0"); - } else { - iterator = Integer.parseInt(siterator); - iterator ++; - vars.put("threadIterator_" + currentThreadNum.toString() , iterator.toString()); - } - - //Number of products for one thread - productClusterLength = productCount / threadsNumber; - - if (iterator >= productClusterLength) { - vars.put("threadIterator_" + currentThreadNum.toString(), "0"); - iterator = 0; - } - - //Index of the current product from the cluster - i = productClusterLength * currentThreadNum + iterator; - - //ids of simple and configurable products to edit - vars.put("simple_product_id", props.get("simple_products_list_for_edit").get(i).get("id")); - vars.put("configurable_product_id", props.get("configurable_products_list_for_edit").get(i).get("id")); - - //id of related product - do { - relatedIndex = random.nextInt(props.get("simple_products_list_for_edit").size()); - } while(i == relatedIndex); - vars.put("related_product_id", props.get("simple_products_list_for_edit").get(relatedIndex).get("id")); - } catch (Exception ex) { - log.info("Script execution failed", ex); -} - - - false - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/edit/id/${simple_product_id}/ - GET - true - false - true - false - false - - - - - - Product - - Assertion.response_data - false - 16 - - - - false - simple_product_name - ,"name":"([^'"]+)", - $1$ - - 1 - - - - false - simple_product_sku - ,"sku":"([^'"]+)", - $1$ - - 1 - - - - false - simple_product_category_id - ,"category_ids":."(\d+)". - $1$ - - 1 - - - - - Passing arguments between threads - //Additional category to be added - import java.util.Random; - - Random randomGenerator = new Random(); - if (${seedForRandom} > 0) { - randomGenerator.setSeed(${seedForRandom} + ${__threadNum}); - } - - int categoryId = Integer.parseInt(vars.get("simple_product_category_id")); - categoryList = props.get("admin_category_ids_list"); - - if (categoryList.size() > 1) { - do { - int index = randomGenerator.nextInt(categoryList.size()); - newCategoryId = categoryList.get(index); - } while (categoryId == newCategoryId); - - vars.put("category_additional", newCategoryId.toString()); - } - - //New price - vars.put("price_new", "9999"); - //New special price - vars.put("special_price_new", "8888"); - //New quantity - vars.put("quantity_new", "100600"); - - - - false - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${simple_product_name} - = - true - product[name] - false - - - true - ${simple_product_sku} - = - true - product[sku] - false - - - true - ${price_new} - = - true - product[price] - false - - - true - 2 - = - true - product[tax_class_id] - false - - - true - ${quantity_new} - = - true - product[quantity_and_stock_status][qty] - false - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - false - - - true - 1.0000 - = - true - product[weight] - false - - - true - 1 - = - true - product[product_has_weight] - false - - - true - ${simple_product_category_id} - = - true - product[category_ids][] - false - - - true - <p>Full simple product Description ${simple_product_id} Edited</p> - = - true - product[description] - false - - - true - 1 - = - true - product[status] - false - - - true - - = - true - product[configurable_variations] - false - - - true - 1 - = - true - affect_configurable_product_attributes - false - - - true - - = - true - product[image] - false - - - true - - = - true - product[small_image] - false - - - true - - = - true - product[thumbnail] - false - - - true - ${simple_product_name} - = - true - product[url_key] - false - - - true - ${simple_product_name} Meta Title Edited - = - true - product[meta_title] - false - - - true - ${simple_product_name} Meta Keyword Edited - = - true - product[meta_keyword] - false - - - true - ${simple_product_name} Meta Description Edited - = - true - product[meta_description] - false - - - true - 1 - = - true - product[website_ids][] - false - - - true - ${special_price_new} - = - true - product[special_price] - false - - - true - - = - true - product[special_from_date] - false - - - true - - = - true - product[special_to_date] - false - - - true - - = - true - product[cost] - false - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - false - - - true - ${quantity_new} - = - true - product[stock_data][original_inventory_qty] - false - - - true - ${quantity_new} - = - true - product[stock_data][qty] - false - - - true - 0 - = - true - product[stock_data][min_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - false - - - true - 1 - = - true - product[stock_data][min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - false - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - false - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - false - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - false - - - true - 0 - = - true - product[stock_data][backorders] - false - - - true - 1 - = - true - product[stock_data][use_config_backorders] - false - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - false - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - false - - - true - 0 - = - true - product[stock_data][qty_increments] - false - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - false - - - true - 1 - = - true - product[stock_data][is_in_stock] - false - - - true - - = - true - product[custom_design] - false - - - true - - = - true - product[custom_design_from] - false - - - true - - = - true - product[custom_design_to] - false - - - true - - = - true - product[custom_layout_update] - false - - - true - - = - true - product[page_layout] - false - - - true - container2 - = - true - product[options_container] - false - - - true - - = - true - new-variations-attribute-set-id - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/id/${simple_product_id}/?isAjax=true - POST - true - false - true - false - false - - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${simple_product_name} - = - true - product[name] - false - - - true - ${simple_product_sku} - = - true - product[sku] - false - - - true - ${price_new} - = - true - product[price] - false - - - true - 2 - = - true - product[tax_class_id] - false - - - true - ${quantity_new} - = - true - product[quantity_and_stock_status][qty] - false - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - false - - - true - 1.0000 - = - true - product[weight] - false - - - true - 1 - = - true - product[product_has_weight] - false - - - true - ${simple_product_category_id} - = - true - product[category_ids][] - false - - - true - ${category_additional} - = - true - product[category_ids][] - - - true - <p>Full simple product Description ${simple_product_id} Edited</p> - = - true - product[description] - false - - - true - 1 - = - true - product[status] - false - - - true - - = - true - product[configurable_variations] - false - - - true - 1 - = - true - affect_configurable_product_attributes - false - - - true - - = - true - product[image] - false - - - true - - = - true - product[small_image] - false - - - true - - = - true - product[thumbnail] - false - - - true - ${simple_product_name} - = - true - product[url_key] - false - - - true - ${simple_product_name} Meta Title Edited - = - true - product[meta_title] - false - - - true - ${simple_product_name} Meta Keyword Edited - = - true - product[meta_keyword] - false - - - true - ${simple_product_name} Meta Description Edited - = - true - product[meta_description] - false - - - true - 1 - = - true - product[website_ids][] - false - - - true - ${special_price_new} - = - true - product[special_price] - false - - - true - - = - true - product[special_from_date] - false - - - true - - = - true - product[special_to_date] - false - - - true - - = - true - product[cost] - false - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - false - - - true - ${quantity_new} - = - true - product[stock_data][original_inventory_qty] - false - - - true - ${quantity_new} - = - true - product[stock_data][qty] - false - - - true - 0 - = - true - product[stock_data][min_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - false - - - true - 1 - = - true - product[stock_data][min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - false - - - true - 10000 - = - true - product[stock_data][max_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - false - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - false - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - false - - - true - 0 - = - true - product[stock_data][backorders] - false - - - true - 1 - = - true - product[stock_data][use_config_backorders] - false - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - false - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - false - - - true - 0 - = - true - product[stock_data][qty_increments] - false - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - false - - - true - 1 - = - true - product[stock_data][is_in_stock] - false - - - true - - = - true - product[custom_design] - false - - - true - - = - true - product[custom_design_from] - false - - - true - - = - true - product[custom_design_to] - false - - - true - - = - true - product[custom_layout_update] - false - - - true - - = - true - product[page_layout] - false - - - true - container2 - = - true - product[options_container] - false - - - true - - = - true - new-variations-attribute-set-id - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/id/${simple_product_id}/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - - You saved the product - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/edit/id/${configurable_product_id}/ - GET - true - false - true - false - false - - - - - - Product - - Assertion.response_data - false - 16 - - - - false - configurable_product_name - ,"name":"([^'"]+)", - $1$ - - 1 - - - - false - configurable_product_sku - ,"sku":"([^'"]+)", - $1$ - - 1 - - - - false - configurable_product_category_id - ,"category_ids":."(\d+)" - $1$ - - 1 - - - - false - configurable_attribute_id - ,"configurable_variation":"([^'"]+)", - $1$ - - 1 - true - - - - false - configurable_matrix - "configurable-matrix":(\[.*?\]) - $1$ - - 1 - true - - - - associated_products_ids - $.[*].id - - configurable_matrix - VAR - - - - false - configurable_product_data - (\{"product":.*?configurable_attributes_data.*?\})\s*< - $1$ - - 1 - - - - configurable_attributes_data - $.product.configurable_attributes_data - - configurable_product_data - VAR - - - - false - configurable_attribute_ids - "attribute_id":"(\d+)" - $1$ - - -1 - variable - configurable_attributes_data - - - - false - configurable_attribute_codes - "code":"(\w+)" - $1$ - - -1 - variable - configurable_attributes_data - - - - false - configurable_attribute_labels - "label":"(.*?)" - $1$ - - -1 - variable - configurable_attributes_data - - - - false - configurable_attribute_values - "values":(\{(?:\}|.*?\}\})) - $1$ - - -1 - variable - configurable_attributes_data - - - - - configurable_attribute_ids - configurable_attribute_id - true - - - - 1 - ${configurable_attribute_ids_matchNr} - 1 - attribute_counter - - true - true - - - - return vars.get("configurable_attribute_values_" + vars.get("attribute_counter")); - - - false - - - - false - attribute_${configurable_attribute_id}_values - "value_index":"(\d+)" - $1$ - - -1 - configurable_attribute_values_${attribute_counter} - - - - - - - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${configurable_product_name} - = - true - product[name] - false - - - true - ${configurable_product_sku} - = - true - product[sku] - false - - - true - ${price_new} - = - true - product[price] - false - - - true - 2 - = - true - product[tax_class_id] - false - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - false - - - true - 3 - = - true - product[weight] - false - - - true - ${configurable_product_category_id} - = - true - product[category_ids][] - false - - - true - ${category_additional} - = - true - product[category_ids][] - false - - - true - <p>Configurable product description ${configurable_product_id} Edited</p> - = - true - product[description] - false - - - true - 1 - = - true - product[status] - false - - - true - ${configurable_product_name} Meta Title Edited - = - true - product[meta_title] - false - - - true - ${configurable_product_name} Meta Keyword Edited - = - true - product[meta_keyword] - false - - - true - ${configurable_product_name} Meta Description Edited - = - true - product[meta_description] - false - - - true - 1 - = - true - product[website_ids][] - false - - - true - ${special_price_new} - = - true - product[special_price] - false - - - true - - = - true - product[special_from_date] - false - - - true - - = - true - product[special_to_date] - false - - - true - - = - true - product[cost] - false - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - false - - - true - 0 - = - true - product[stock_data][min_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - false - - - true - 1 - = - true - product[stock_data][min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - false - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - false - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - false - - - true - 0 - = - true - product[stock_data][backorders] - false - - - true - 1 - = - true - product[stock_data][use_config_backorders] - false - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - false - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - false - - - true - 0 - = - true - product[stock_data][qty_increments] - false - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - false - - - true - 1 - = - true - product[stock_data][is_in_stock] - false - - - true - - = - true - product[custom_design] - false - - - true - - = - true - product[custom_design_from] - false - - - true - - = - true - product[custom_design_to] - false - - - true - - = - true - product[custom_layout_update] - false - - - true - - = - true - product[page_layout] - false - - - true - container2 - = - true - product[options_container] - false - - - true - ${configurable_attribute_id} - = - true - product[configurable_variation] - false - - - true - ${configurable_product_name} - = - true - product[url_key] - - - true - 1 - = - true - product[use_config_gift_message_available] - - - true - 1 - = - true - product[use_config_gift_wrapping_available] - - - true - 4 - = - true - product[visibility] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 50 - = - true - product[stock_data][qty] - false - - - true - configurable - = - true - product[stock_data][type_id] - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/validate/id/${configurable_product_id}/ - POST - true - false - true - false - false - - - - - false - - - try { - int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr")); - for (int i = 1; i <= attributesCount; i++) { - attributeId = vars.get("configurable_attribute_ids_" + i.toString()); - attributeCode = vars.get("configurable_attribute_codes_" + i.toString()); - attributeLabel = vars.get("configurable_attribute_labels_" + i.toString()); - ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId); - ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode); - ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString()); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel); - - int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr")); - for (int j = 1; j <= valuesCount; j++) { - attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString()); - ctx.getCurrentSampler().addArgument( - "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]", - "1" - ); - ctx.getCurrentSampler().addArgument( - "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]", - attributeValue - ); - } - } - ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString()); - } catch (Exception e) { - log.error("error???", e); - } - - - - - {"error":false} - - Assertion.response_data - false - 2 - - - - - - - - true - true - = - true - ajax - false - - - true - true - = - true - isAjax - false - - - true - ${admin_form_key} - = - true - form_key - false - - - true - ${configurable_product_name} - = - true - product[name] - false - - - true - ${configurable_product_sku} - = - true - product[sku] - false - - - true - ${price_new} - = - true - product[price] - false - - - true - 2 - = - true - product[tax_class_id]admin - false - - - true - 1 - = - true - product[quantity_and_stock_status][is_in_stock] - false - - - true - 3 - = - true - product[weight] - false - - - true - ${configurable_product_category_id} - = - true - product[category_ids][] - false - - - true - ${category_additional} - = - true - product[category_ids][] - false - - - true - <p>Configurable product description ${configurable_product_id} Edited</p> - = - true - product[description] - false - - - true - 1 - = - true - product[status] - false - - - true - ${configurable_product_name} Meta Title Edited - = - true - product[meta_title] - false - - - true - ${configurable_product_name} Meta Keyword Edited - = - true - product[meta_keyword] - false - - - true - ${configurable_product_name} Meta Description Edited - = - true - product[meta_description] - false - - - true - 1 - = - true - product[website_ids][] - false - - - true - ${special_price_new} - = - true - product[special_price] - false - - - true - - = - true - product[special_from_date] - false - - - true - - = - true - product[special_to_date] - false - - - true - - = - true - product[cost] - false - - - true - 1 - = - true - product[stock_data][use_config_manage_stock] - false - - - true - 0 - = - true - product[stock_data][min_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_qty] - false - - - true - 1 - = - true - product[stock_data][min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_min_sale_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_max_sale_qty] - false - - - true - 0 - = - true - product[stock_data][is_qty_decimal] - false - - - true - 0 - = - true - product[stock_data][is_decimal_divided] - false - - - true - 0 - = - true - product[stock_data][backorders] - false - - - true - 1 - = - true - product[stock_data][use_config_backorders] - false - - - true - 1 - = - true - product[stock_data][notify_stock_qty] - false - - - true - 1 - = - true - product[stock_data][use_config_notify_stock_qty] - false - - - true - 0 - = - true - product[stock_data][enable_qty_increments] - false - - - true - 0 - = - true - product[stock_data][qty_increments] - false - - - true - 1 - = - true - product[stock_data][use_config_qty_increments] - false - - - true - 1 - = - true - product[stock_data][is_in_stock] - false - - - true - - = - true - product[custom_design] - false - - - true - - = - true - product[custom_design_from] - false - - - true - - = - true - product[custom_design_to] - false - - - true - - = - true - product[custom_layout_update] - false - - - true - - = - true - product[page_layout] - false - - - true - container2 - = - true - product[options_container] - false - - - true - ${configurable_attribute_id} - = - true - product[configurable_variation] - false - - - true - ${configurable_product_name} - = - true - product[url_key] - - - true - 1 - = - true - product[use_config_gift_message_available] - - - true - 1 - = - true - product[use_config_gift_wrapping_available] - - - true - 4 - = - true - product[visibility] - - - true - 1 - = - true - product[product_has_weight] - true - - - true - 50 - = - true - product[stock_data][qty] - false - - - true - configurable - = - true - product[stock_data][type_id] - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/product/save/id/${configurable_product_id}/back/edit/active_tab/product-details/ - POST - true - false - true - false - false - - - - - false - - - try { - int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr")); - for (int i = 1; i <= attributesCount; i++) { - attributeId = vars.get("configurable_attribute_ids_" + i.toString()); - attributeCode = vars.get("configurable_attribute_codes_" + i.toString()); - attributeLabel = vars.get("configurable_attribute_labels_" + i.toString()); - ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId); - ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode); - ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString()); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode); - ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel); - - int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr")); - for (int j = 1; j <= valuesCount; j++) { - attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString()); - ctx.getCurrentSampler().addArgument( - "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]", - "1" - ); - ctx.getCurrentSampler().addArgument( - "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]", - attributeValue - ); - } - } - ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString()); - } catch (Exception e) { - log.error("error???", e); - } - - - - - You saved the product - - Assertion.response_data - false - 2 - if have trouble see messages-message-error - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminReturnsManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Returns Management"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/orders_page.jmx - - - - Create New Order - - Assertion.response_data - false - 2 - - - - - - - - - true - sales_order_grid - = - true - namespace - - - true - - = - true - search - - - true - true - = - true - filters[placeholder] - - - true - 200 - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - increment_id - = - true - sorting[field] - - - true - desc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - true - ${admin_form_key} - = - true - form_key - false - - - true - pending - = - true - filters[status] - true - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/open_orders.jmx - - - - totalRecords - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - - - true - sales_order_grid - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - 200 - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - increment_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - true - pending - = - true - filters[status] - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/search_orders.jmx - - - - totalRecords - - Assertion.response_data - false - 2 - - - - false - order_numbers - \"increment_id\":\"(\d+)\"\, - $1$ - - -1 - simple_products - - - - false - order_ids - \"entity_id\":\"(\d+)\"\, - $1$ - - -1 - simple_products - - - - - - mpaf/tool/fragments/ce/admin_create_process_returns/setup.jmx - - import java.util.ArrayList; - import java.util.HashMap; - import org.apache.jmeter.protocol.http.util.Base64Encoder; - import java.util.Random; - - // get count of "order_numbers" variable defined in "Search Pending Orders Limit" - int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr")); - - - int clusterLength; - int threadsNumber = ctx.getThreadGroup().getNumThreads(); - if (threadsNumber == 0) { - //Number of orders for one thread - clusterLength = ordersCount; - } else { - clusterLength = Math.round(ordersCount / threadsNumber); - if (clusterLength == 0) { - clusterLength = 1; - } - } - - //Current thread number starts from 0 - int currentThreadNum = ctx.getThreadNum(); - - //Index of the current product from the cluster - Random random = new Random(); - if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); - } - int iterator = random.nextInt(clusterLength); - if (iterator == 0) { - iterator = 1; - } - - int i = clusterLength * currentThreadNum + iterator; - - orderNumber = vars.get("order_numbers_" + i.toString()); - orderId = vars.get("order_ids_" + i.toString()); - vars.put("order_number", orderNumber); - vars.put("order_id", orderId); - - - - - false - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/view/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/open_order.jmx - - - - #${order_number} - - Assertion.response_data - false - 2 - - - - false - order_status - <span id="order_status">([^<]+)</span> - $1$ - - 1 - simple_products - - - - - - "${order_status}" == "Pending" - false - mpaf/tool/fragments/ce/admin_edit_order/if_controller.jmx - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/invoice_start.jmx - - - - Invoice Totals - - Assertion.response_data - false - 2 - - - - false - item_ids - <div id="order_item_(\d+)_title"\s*class="product-title"> - $1$ - - -1 - simple_products - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - 1 - = - true - invoice[items][${item_ids_1}] - - - true - 1 - = - true - invoice[items][${item_ids_2}] - - - true - Invoiced - = - true - invoice[comment_text] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx - - - - The invoice has been created - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_creditmemo/start/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/credit_memo_start.jmx - - - - New Memo - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - 1 - = - true - creditmemo[items][${item_ids_1}][qty] - - - true - 1 - = - true - creditmemo[items][${item_ids_2}][qty] - - - true - 1 - = - true - creditmemo[do_offline] - - - true - Credit Memo added - = - true - creditmemo[comment_text] - - - true - 10 - = - true - creditmemo[shipping_amount] - - - true - 0 - = - true - creditmemo[adjustment_positive] - - - true - 0 - = - true - creditmemo[adjustment_negative] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/credit_memo_full_refund.jmx - - - - You created the credit memo - - Assertion.response_data - false - 2 - - - - - - 1 - 0 - ${__javaScript(Math.round(${adminCreateProcessReturnsDelay}*1000))} - mpaf/tool/fragments/ce/admin_create_process_returns/pause.jmx - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminBrowseCustomerGridPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Browse Customer Grid"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - - vars.put("gridEntityType" , "Customer"); - - pagesCount = parseInt(vars.get("customers_page_size")) || 20; - vars.put("grid_entity_page_size" , pagesCount); - vars.put("grid_namespace" , "customer_listing"); - vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_customer_filter_text")); - vars.put("grid_filter_field", "name"); - - // set sort fields and sort directions - vars.put("grid_sort_field_1", "name"); - vars.put("grid_sort_field_2", "group_id"); - vars.put("grid_sort_field_3", "billing_country_id"); - vars.put("grid_sort_order_1", "asc"); - vars.put("grid_sort_order_2", "desc"); - - javascript - mpaf/tool/fragments/ce/admin_browse_customers_grid/setup.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; - var totalsRecord = parseInt(vars.get("entity_total_records")); - var pageCount = Math.round(totalsRecord/pageSize); - - vars.put("grid_pages_count", pageCount); - - javascript - - - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - ${grid_admin_browse_filter_text} - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx - - - $.totalRecords - 0 - true - false - true - true - - - - entity_total_records - $.totalRecords - - - BODY - - - - - - - var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20; -var totalsRecord = parseInt(vars.get("entity_total_records")); -var pageCount = Math.round(totalsRecord/pageSize); - -vars.put("grid_pages_count_filtered", pageCount); - - javascript - - - - - - 1 - ${grid_pages_count} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_page_number.jmx - - - - - - - true - ${grid_namespace} - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - true - - - true - ${page_number} - = - true - paging[current] - true - - - true - entity_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - 1 - ${grid_pages_count_filtered} - 1 - page_number - - true - false - mpaf/tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx - - - - mpaf/tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx - - - - grid_sort_field - grid_sort_field - true - 0 - 3 - - - - grid_sort_order - grid_sort_order - true - 0 - 2 - - - - - - - true - ${grid_namespace} - = - true - namespace - false - - - true - ${grid_admin_browse_filter_text} - = - true - filters[${grid_filter_field}] - false - - - true - true - = - true - filters[placeholder] - false - - - true - ${grid_entity_page_size} - = - true - paging[pageSize] - false - - - true - ${page_number} - = - true - paging[current] - false - - - true - ${grid_sort_field} - = - true - sorting[field] - false - - - true - ${grid_sort_order} - = - true - sorting[direction] - false - - - true - true - = - true - isAjax - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - \"totalRecords\":[^0]\d* - - Assertion.response_data - false - 2 - - - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminCreateOrderPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Create Order"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - javascript - - - - - vars.put("alabama_region_id", props.get("alabama_region_id")); - vars.put("california_region_id", props.get("california_region_id")); - - mpaf/tool/fragments/ce/common/get_region_data.jmx - - - - - - mpaf/tool/fragments/ce/admin_create_order/admin_create_order.jmx - import org.apache.jmeter.samplers.SampleResult; -import java.util.Random; -Random random = new Random(); -if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom}); -} -number = random.nextInt(props.get("simple_products_list").size()); -simpleList = props.get("simple_products_list").get(number); -vars.put("simple_product_1_url_key", simpleList.get("url_key")); -vars.put("simple_product_1_name", simpleList.get("title")); -vars.put("simple_product_1_id", simpleList.get("id")); - -do { - number1 = random.nextInt(props.get("simple_products_list").size()); -} while(number == number1); -simpleList = props.get("simple_products_list").get(number1); -vars.put("simple_product_2_url_key", simpleList.get("url_key")); -vars.put("simple_product_2_name", simpleList.get("title")); -vars.put("simple_product_2_id", simpleList.get("id")); - -number = random.nextInt(props.get("configurable_products_list").size()); -configurableList = props.get("configurable_products_list").get(number); -vars.put("configurable_product_1_url_key", configurableList.get("url_key")); -vars.put("configurable_product_1_name", configurableList.get("title")); -vars.put("configurable_product_1_id", configurableList.get("id")); -vars.put("configurable_product_1_sku", configurableList.get("sku")); -vars.put("configurable_attribute_id", configurableList.get("attribute_id")); -vars.put("configurable_option_id", configurableList.get("attribute_option_id")); - - -customers_index = 0; -if (!props.containsKey("customer_ids_index")) { - props.put("customer_ids_index", customers_index); -} - -try { - customers_index = props.get("customer_ids_index"); - customers_list = props.get("customer_ids_list"); - - if (customers_index == customers_list.size()) { - customers_index=0; - } - vars.put("customer_id", customers_list.get(customers_index)); - props.put("customer_ids_index", ++customers_index); -} -catch (java.lang.Exception e) { - log.error("Caught Exception in 'Admin Create Order' thread."); - SampleResult.setStopThread(true); -} - - - true - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/start/ - GET - true - false - true - false - false - - Detected the start of a redirect chain - - - - - - - - Content-Type - application/json - - - Accept - */* - - - - - - true - - - - false - {"username":"${admin_user}","password":"${admin_password}"} - = - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/integration/admin/token - POST - true - false - true - false - false - - - - - admin_token - $ - - - BODY - - - - - ^[a-z0-9-]+$ - - Assertion.response_data - false - 1 - variable - admin_token - - - - - - - Authorization - Bearer ${admin_token} - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}rest/V1/configurable-products/${configurable_product_1_sku}/options/all - GET - true - false - true - false - false - - - - - attribute_ids - $.[*].attribute_id - NO_VALUE - - BODY - - - - option_values - $.[*].values[0].value_index - NO_VALUE - - BODY - - - - - - - - - true - item[${simple_product_1_id}][qty] - 1 - = - true - - - true - item[${simple_product_2_id}][qty] - 1 - = - true - - - true - item[${configurable_product_1_id}][qty] - 1 - = - true - - - true - customer_id - ${customer_id} - = - true - - - true - store_id - 1 - = - true - - - true - currency_id - - = - true - - - true - form_key - ${admin_form_key} - = - true - - - true - payment[method] - checkmo - = - true - - - true - reset_shipping - 1 - = - true - - - true - json - 1 - = - true - - - true - as_js_varname - iFrameResponse - = - true - - - true - form_key - ${admin_form_key} - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/loadBlock/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true - POST - true - false - true - false - false - - Detected the start of a redirect chain - - - - false - - - try { - attribute_ids = vars.get("attribute_ids"); - option_values = vars.get("option_values"); - attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", ""); - option_values = option_values.replace("[","").replace("]","").replace("\"", ""); - attribute_ids_array = attribute_ids.split(","); - option_values_array = option_values.split(","); - args = ctx.getCurrentSampler().getArguments(); - it = args.iterator(); - while (it.hasNext()) { - argument = it.next(); - if (argument.getStringValue().contains("${")) { - args.removeArgument(argument.getName()); - } - } - for (int i = 0; i < attribute_ids_array.length; i++) { - - ctx.getCurrentSampler().addArgument("item[" + vars.get("configurable_product_1_id") + "][super_attribute][" + attribute_ids_array[i] + "]", option_values_array[i]); - } -} catch (Exception e) { - log.error("error???", e); -} - - - - - - - - true - collect_shipping_rates - 1 - = - true - - - true - customer_id - ${customer_id} - = - true - - - true - store_id - 1 - = - true - - - true - currency_id - false - = - true - - - true - form_key - ${admin_form_key} - = - true - - - true - payment[method] - checkmo - = - true - - - true - json - true - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/loadBlock/block/shipping_method,totals?isAjax=true - POST - true - false - true - false - false - - - - - - shipping_method - Flat Rate - - Assertion.response_data - false - 2 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/index/ - GET - true - false - true - false - false - - Detected the start of a redirect chain - - - - - Select from existing customer addresses - Submit Order - Items Ordered - - Assertion.response_data - false - 2 - - - - - - - - true - form_key - ${admin_form_key} - = - true - - - true - limit - 20 - = - true - - - true - entity_id - - = - true - - - true - name - - = - true - - - true - email - - = - true - - - true - Telephone - - = - true - - - true - billing_postcode - - = - true - - - true - billing_country_id - - = - true - - - true - billing_region - - = - true - - - true - store_name - - = - true - - - true - page - 1 - = - true - - - true - order[currency] - USD - = - true - - - true - sku - - = - true - - - true - qty - - = - true - - - true - limit - 20 - = - true - - - true - entity_id - - = - true - - - true - name - - = - true - - - true - sku - - = - true - - - true - price[from] - - = - true - - - true - price[to] - - = - true - - - true - in_products - - = - true - - - true - page - 1 - = - true - - - true - coupon_code - - = - true - - - true - order[account][group_id] - 1 - = - true - - - true - order[account][email] - user_${customer_id}@example.com - = - true - - - true - order[billing_address][customer_address_id] - - = - true - - - true - order[billing_address][prefix] - - = - true - - - true - order[billing_address][firstname] - Anthony - = - true - - - true - order[billing_address][middlename] - - = - true - - - true - order[billing_address][lastname] - Nealy - = - true - - - true - order[billing_address][suffix] - - = - true - - - true - order[billing_address][company] - - = - true - - - true - order[billing_address][street][0] - 123 Freedom Blvd. #123 - = - true - - - true - order[billing_address][street][1] - - = - true - - - true - order[billing_address][city] - Fayetteville - = - true - - - true - order[billing_address][country_id] - US - = - true - - - true - order[billing_address][region] - - = - true - - - true - order[billing_address][region_id] - ${alabama_region_id} - = - true - - - true - order[billing_address][postcode] - 123123 - = - true - - - true - order[billing_address][telephone] - 022-333-4455 - = - true - - - true - order[billing_address][fax] - - = - true - - - true - order[billing_address][vat_id] - - = - true - - - true - shipping_same_as_billing - on - = - true - - - true - payment[method] - checkmo - = - true - - - true - order[shipping_method] - flatrate_flatrate - = - true - - - true - order[comment][customer_note] - - = - true - - - true - order[comment][customer_note_notify] - 1 - = - true - - - true - order[send_confirmation] - 1 - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_create/save/ - POST - true - false - true - true - false - - Detected the start of a redirect chain - - - - false - order_id - ${host}${base_path}${admin_path}/sales/order/index/order_id/(\d+)/ - $1$ - - 1 - - - - false - order_item_1 - order_item_(\d+)_title - $1$ - - 1 - - - - false - order_item_2 - order_item_(\d+)_title - $1$ - - 2 - - - - false - order_item_3 - order_item_(\d+)_title - $1$ - - 3 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_item_1 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_item_2 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - order_item_3 - - - - - You created the order. - - Assertion.response_data - false - 2 - - - - - - - - true - form_key - ${admin_form_key} - = - true - - - true - invoice[items][${order_item_1}] - 1 - = - true - - - true - invoice[items][${order_item_2}] - 1 - = - true - - - true - invoice[items][${order_item_3}] - 1 - = - true - - - true - invoice[comment_text] - - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/ - POST - true - false - true - false - false - - Detected the start of a redirect chain - - - - - The invoice has been created. - - Assertion.response_data - false - 2 - - - - - - - - true - form_key - ${admin_form_key} - = - true - - - true - shipment[items][${order_item_1}] - 1 - = - true - - - true - shipment[items][${order_item_2}] - 1 - = - true - - - true - shipment[items][${order_item_3}] - 1 - = - true - - - true - shipment[comment_text] - - = - true - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/ - POST - true - false - true - false - false - - Detected the start of a redirect chain - - - - - The shipment has been created. - - Assertion.response_data - false - 2 - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminCategoryManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Category Management"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_category_management/admin_category_management.jmx - - - - javascript - - - - random = new java.util.Random(); -if (${seedForRandom} > 0) { -random.setSeed(${seedForRandom} + ${__threadNum}); -} - -/** - * Get unique ids for fix concurrent category saving - */ -function getNextProductNumber(i) { - number = productsVariationsSize * ${__threadNum} - i; - if (number >= productsSize) { - log.info("${testLabel}: capacity of product list is not enough for support all ${adminPoolUsers} threads"); - return random.nextInt(productsSize); - } - return productsVariationsSize * ${__threadNum} - i; -} - -var productsVariationsSize = 5, - productsSize = props.get("simple_products_list_for_edit").size(); - - -for (i = 1; i<= productsVariationsSize; i++) { - var productVariablePrefix = "simple_product_" + i + "_"; - number = getNextProductNumber(i); - simpleList = props.get("simple_products_list_for_edit").get(number); - - vars.put(productVariablePrefix + "url_key", simpleList.get("url_key")); - vars.put(productVariablePrefix + "id", simpleList.get("id")); - vars.put(productVariablePrefix + "name", simpleList.get("title")); -} - -categoryIndex = random.nextInt(props.get("admin_category_ids_list").size()); -vars.put("parent_category_id", props.get("admin_category_ids_list").get(categoryIndex)); -do { -categoryIndexNew = random.nextInt(props.get("admin_category_ids_list").size()); -} while(categoryIndex == categoryIndexNew); -vars.put("new_parent_category_id", props.get("admin_category_ids_list").get(categoryIndexNew)); - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/ - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/edit/id/${parent_category_id}/ - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/add/store/0/parent/${parent_category_id} - GET - true - false - true - false - false - - - - - - <title>New Category - - Assertion.response_data - false - 2 - - - - - - - - true - - = - true - id - - - true - ${parent_category_id} - = - true - parent - - - true - - = - true - path - - - true - - = - true - store_id - - - true - 0 - = - true - is_active - - - true - 0 - = - true - include_in_menu - - - true - 1 - = - true - is_anchor - - - true - true - = - true - use_config[available_sort_by] - - - true - true - = - true - use_config[default_sort_by] - - - true - true - = - true - use_config[filter_price_range] - - - true - false - = - true - use_default[url_key] - - - true - 0 - = - true - url_key_create_redirect - - - true - 0 - = - true - custom_use_parent_settings - - - true - 0 - = - true - custom_apply_to_products - - - true - Admin Category Management ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - name - - - true - admin-category-management-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - url_key - - - true - - = - true - meta_title - - - true - - = - true - description - - - true - PRODUCTS - = - true - display_mode - - - true - position - = - true - default_sort_by - - - true - - = - true - meta_keywords - - - true - - = - true - meta_description - - - true - - = - true - custom_layout_update - - - false - {"${simple_product_1_id}":"","${simple_product_2_id}":"","${simple_product_3_id}":"","${simple_product_4_id}":"","${simple_product_5_id}":""} - = - true - category_products - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/save/ - POST - true - false - true - false - false - - - - - URL - admin_category_id - /catalog/category/edit/id/(\d+)/ - $1$ - - 1 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_id - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/edit/id/${admin_category_id}/ - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - false - admin_category_entity_id - "entity_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_attribute_set_id - "attribute_set_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_parent_id - "parent_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_created_at - "created_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_updated_at - "updated_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_path - "entity_id":(.+)"path":"([^\"]+)" - $2$ - - 1 - - - - false - admin_category_level - "level":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_name - "entity_id":(.+)"name":"([^"]+)" - $2$ - - 1 - - - - false - admin_category_url_key - "url_key":"([^"]+)" - $1$ - - 1 - - - - false - admin_category_url_path - "url_path":"([^"]+)" - $1$ - - 1 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_entity_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_attribute_set_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_parent_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_created_at - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_updated_at - - - - - ^[\d\\\/]+$ - - Assertion.response_data - false - 1 - variable - admin_category_path - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_category_level - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_name - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_url_key - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_category_url_path - - - - - ${simple_product_1_name} - ${simple_product_2_name} - ${simple_product_3_name} - ${simple_product_4_name} - ${simple_product_5_name} - - Assertion.response_data - false - 2 - - - - - - - - true - ${admin_category_id} - = - true - id - - - true - ${admin_form_key} - = - true - form_key - - - true - append - = - true - point - - - true - ${new_parent_category_id} - = - true - pid - - - true - ${parent_category_id} - = - true - paid - - - true - 0 - = - true - aid - - - true - true - = - true - isAjax - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/move/ - POST - true - false - true - false - false - - - - - - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/catalog/category/delete/id/${admin_category_id}/ - POST - true - false - true - false - false - - - - - - You deleted the category. - - Assertion.response_data - false - 2 - - - - - 1 - 0 - ${__javaScript(Math.round(${adminCategoryManagementDelay}*1000))} - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminPromotionRulesPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Promotion Rules"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_promotions_management/admin_promotions_management.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales_rule/promo_quote/ - GET - true - false - true - false - false - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales_rule/promo_quote/new - GET - true - false - true - false - false - - - - - - - - true - true - = - true - isAjax - - - true - ${admin_form_key} - = - true - form_key - true - - - true - 1--1 - = - true - id - - - true - Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal - = - true - type - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales_rule/promo_quote/newConditionHtml/form/sales_rule_formrule_conditions_fieldset_/form_namespace/sales_rule_form - POST - true - false - true - false - false - - - - - - - - true - Rule Name ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - name - - - true - 0 - = - true - is_active - - - true - 0 - = - true - use_auto_generation - - - true - 1 - = - true - is_rss - - - true - 0 - = - true - apply_to_shipping - - - true - 0 - = - true - stop_rules_processing - - - true - - = - true - coupon_code - - - true - - = - true - uses_per_coupon - - - true - - = - true - uses_per_customer - - - true - - = - true - sort_order - - - true - 5 - = - true - discount_amount - - - true - 0 - = - true - discount_qty - - - true - - = - true - discount_step - - - true - - = - true - reward_points_delta - - - true - - = - true - store_labels[0] - - - true - Rule Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} - = - true - description - - - true - 1 - = - true - coupon_type - - - true - cart_fixed - = - true - simple_action - - - true - 1 - = - true - website_ids[0] - - - true - 0 - = - true - customer_group_ids[0] - - - true - - = - true - from_date - - - true - - = - true - to_date - - - true - Magento\SalesRule\Model\Rule\Condition\Combine - = - true - rule[conditions][1][type] - - - true - all - = - true - rule[conditions][1][aggregator] - - - true - 1 - = - true - rule[conditions][1][value] - - - true - Magento\SalesRule\Model\Rule\Condition\Address - = - true - rule[conditions][1--1][type] - - - true - base_subtotal - = - true - rule[conditions][1--1][attribute] - - - true - >= - = - true - rule[conditions][1--1][operator] - - - true - 100 - = - true - rule[conditions][1--1][value] - - - true - - = - true - rule[conditions][1][new_chlid] - - - true - Magento\SalesRule\Model\Rule\Condition\Product\Combine - = - true - rule[actions][1][type] - - - true - all - = - true - rule[actions][1][aggregator] - - - true - 1 - = - true - rule[actions][1][value] - - - true - - = - true - rule[actions][1][new_child] - - - true - - = - true - store_labels[1] - - - true - - = - true - store_labels[2] - - - true - - = - true - related_banners - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales_rule/promo_quote/save/ - POST - true - false - true - false - false - - - - - - You saved the rule. - - Assertion.response_data - false - 16 - - - - - 1 - 0 - ${__javaScript(Math.round(${adminPromotionsManagementDelay}*1000))} - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminCustomerManagementPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Customer Management"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - mpaf/tool/fragments/ce/admin_customer_management/admin_customer_management.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/customer/index - GET - true - false - true - false - false - - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - - - - - true - customer_listing - = - true - namespace - - - true - - = - true - search - - - true - true - = - true - filters[placeholder] - - - true - 20 - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - entity_id - = - true - sorting[field] - - - true - asc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - - X-Requested-With - XMLHttpRequest - - - - - - - - - - true - customer_listing - = - true - namespace - - - true - Lastname - = - true - search - - - true - true - = - true - filters[placeholder] - - - true - 20 - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - entity_id - = - true - sorting[field] - - - true - asc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - - - - - - X-Requested-With - XMLHttpRequest - - - - - - false - customer_edit_url_path - actions":\{"edit":\{"href":"(?:http|https):\\/\\/(.*?)\\/customer\\/index\\/edit\\/id\\/(\d+)\\/", - /customer/index/edit/id/$2$/ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - customer_edit_url_path - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}${customer_edit_url_path} - GET - true - false - true - false - false - - - - - - Customer Information - - Assertion.response_data - false - 2 - - - - false - admin_customer_entity_id - "entity_id":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_website_id - "website_id":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_firstname - "firstname":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_lastname - "lastname":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_email - "email":"([^\@]+@[^.]+.[^"]+)" - $1$ - - 1 - - - - false - admin_customer_group_id - "group_id":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_store_id - "store_id":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_created_at - "created_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_updated_at - "updated_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_is_active - "is_active":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_disable_auto_group_change - "disable_auto_group_change":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_created_in - "created_in":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_dob - "dob":"(\d+)-(\d+)-(\d+)" - $2$/$3$/$1$ - - 1 - - - - false - admin_customer_default_billing - "default_billing":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_default_shipping - "default_shipping":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_gender - "gender":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_failures_num - "failures_num":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_address_entity_id - _address":\{"entity_id":"(\d+)".+?"parent_id":"${admin_customer_entity_id}" - $1$ - - 1 - - - - false - admin_customer_address_created_at - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"created_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_updated_at - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"updated_at":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_is_active - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"is_active":"(\d+)" - $1$ - - 1 - - - - false - admin_customer_address_city - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"city":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_country_id - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"country_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_firstname - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"firstname":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_lastname - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"lastname":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_postcode - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"postcode":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_region - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_region_id - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region_id":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_street - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"street":\["([^"]+)"\] - $1$ - - 1 - - - - false - admin_customer_address_telephone - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"telephone":"([^"]+)" - $1$ - - 1 - - - - false - admin_customer_address_customer_id - _address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"customer_id":"([^"]+)" - $1$ - - 1 - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_entity_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_website_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_firstname - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_lastname - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_email - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_group_id - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_store_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_created_at - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_updated_at - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_is_active - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_disable_auto_group_change - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_created_in - - - - - ^\d+/\d+/\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_dob - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_default_billing - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_default_shipping - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_gender - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_failures_num - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_entity_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_created_at - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_updated_at - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_is_active - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_city - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_country_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_firstname - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_lastname - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_postcode - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_region - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_region_id - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_street - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_telephone - - - - - ^\d+$ - - Assertion.response_data - false - 1 - variable - admin_customer_address_customer_id - - - - - - Accept-Language - en-US,en;q=0.5 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - - - User-Agent - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 - - - Accept-Encoding - gzip, deflate - - - - - - - - - - true - true - = - true - isAjax - - - true - ${admin_customer_entity_id} - = - true - customer[entity_id] - - - true - ${admin_customer_website_id} - = - true - customer[website_id] - - - true - ${admin_customer_email} - = - true - customer[email] - - - true - ${admin_customer_group_id} - = - true - customer[group_id] - - - true - ${admin_customer_store_id} - = - true - customer[store_id] - - - true - ${admin_customer_created_at} - = - true - customer[created_at] - - - true - ${admin_customer_updated_at} - = - true - customer[updated_at] - - - true - ${admin_customer_is_active} - = - true - customer[is_active] - - - true - ${admin_customer_disable_auto_group_change} - = - true - customer[disable_auto_group_change] - - - true - ${admin_customer_created_in} - = - true - customer[created_in] - - - true - - = - true - customer[prefix] - - - true - ${admin_customer_firstname} 1 - = - true - customer[firstname] - - - true - - = - true - customer[middlename] - - - true - ${admin_customer_lastname} 1 - = - true - customer[lastname] - - - true - - = - true - customer[suffix] - - - true - ${admin_customer_dob} - = - true - customer[dob] - - - true - ${admin_customer_default_billing} - = - true - customer[default_billing] - - - true - ${admin_customer_default_shipping} - = - true - customer[default_shipping] - - - true - - = - true - customer[taxvat] - - - true - ${admin_customer_gender} - = - true - customer[gender] - - - true - ${admin_customer_failures_num} - = - true - customer[failures_num] - - - true - ${admin_customer_store_id} - = - true - customer[sendemail_store_id] - - - true - ${admin_customer_address_entity_id} - = - true - address[${admin_customer_address_entity_id}][entity_id] - - - true - ${admin_customer_address_created_at} - = - true - address[${admin_customer_address_entity_id}][created_at] - - - true - ${admin_customer_address_updated_at} - = - true - address[${admin_customer_address_entity_id}][updated_at] - - - true - ${admin_customer_address_is_active} - = - true - address[${admin_customer_address_entity_id}][is_active] - - - true - ${admin_customer_address_city} - = - true - address[${admin_customer_address_entity_id}][city] - - - true - - = - true - address[${admin_customer_address_entity_id}][company] - - - true - ${admin_customer_address_country_id} - = - true - address[${admin_customer_address_entity_id}][country_id] - - - true - ${admin_customer_address_firstname} - = - true - address[${admin_customer_address_entity_id}][firstname] - - - true - ${admin_customer_address_lastname} - = - true - address[${admin_customer_address_entity_id}][lastname] - - - true - - = - true - address[${admin_customer_address_entity_id}][middlename] - - - true - ${admin_customer_address_postcode} - = - true - address[${admin_customer_address_entity_id}][postcode] - - - true - - = - true - address[${admin_customer_address_entity_id}][prefix] - - - true - ${admin_customer_address_region} - = - true - address[${admin_customer_address_entity_id}][region] - - - true - ${admin_customer_address_region_id} - = - true - address[${admin_customer_address_entity_id}][region_id] - - - true - ${admin_customer_address_street} - = - true - address[${admin_customer_address_entity_id}][street][0] - - - true - - = - true - address[${admin_customer_address_entity_id}][street][1] - - - true - - = - true - address[${admin_customer_address_entity_id}][suffix] - - - true - ${admin_customer_address_telephone} - = - true - address[${admin_customer_address_entity_id}][telephone] - - - true - - = - true - address[${admin_customer_address_entity_id}][vat_id] - - - true - ${admin_customer_address_customer_id} - = - true - address[${admin_customer_address_entity_id}][customer_id] - - - true - true - = - true - address[${admin_customer_address_entity_id}][default_billing] - - - true - true - = - true - address[${admin_customer_address_entity_id}][default_shipping] - - - true - - = - true - address[new_0][prefix] - - - true - John - = - true - address[new_0][firstname] - - - true - - = - true - address[new_0][middlename] - - - true - Doe - = - true - address[new_0][lastname] - - - true - - = - true - address[new_0][suffix] - - - true - Test Company - = - true - address[new_0][company] - - - true - Folsom - = - true - address[new_0][city] - - - true - 95630 - = - true - address[new_0][postcode] - - - true - 1234567890 - = - true - address[new_0][telephone] - - - true - - = - true - address[new_0][vat_id] - - - true - false - = - true - address[new_0][default_billing] - - - true - false - = - true - address[new_0][default_shipping] - - - true - 123 Main - = - true - address[new_0][street][0] - - - true - - = - true - address[new_0][street][1] - - - true - - = - true - address[new_0][region] - - - true - US - = - true - address[new_0][country_id] - - - true - ${admin_customer_address_region_id} - = - true - address[new_0][region_id] - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/customer/index/validate/ - POST - true - false - true - false - false - - - - - - 200 - - Assertion.response_code - false - 16 - - - - - - - - true - true - = - true - isAjax - - - true - ${admin_customer_entity_id} - = - true - customer[entity_id] - - - true - ${admin_customer_website_id} - = - true - customer[website_id] - - - true - ${admin_customer_email} - = - true - customer[email] - - - true - ${admin_customer_group_id} - = - true - customer[group_id] - - - true - ${admin_customer_store_id} - = - true - customer[store_id] - - - true - ${admin_customer_created_at} - = - true - customer[created_at] - - - true - ${admin_customer_updated_at} - = - true - customer[updated_at] - - - true - ${admin_customer_is_active} - = - true - customer[is_active] - - - true - ${admin_customer_disable_auto_group_change} - = - true - customer[disable_auto_group_change] - - - true - ${admin_customer_created_in} - = - true - customer[created_in] - - - true - - = - true - customer[prefix] - - - true - ${admin_customer_firstname} 1 - = - true - customer[firstname] - - - true - - = - true - customer[middlename] - - - true - ${admin_customer_lastname} 1 - = - true - customer[lastname] - - - true - - = - true - customer[suffix] - - - true - ${admin_customer_dob} - = - true - customer[dob] - - - true - ${admin_customer_default_billing} - = - true - customer[default_billing] - - - true - ${admin_customer_default_shipping} - = - true - customer[default_shipping] - - - true - - = - true - customer[taxvat] - - - true - ${admin_customer_gender} - = - true - customer[gender] - - - true - ${admin_customer_failures_num} - = - true - customer[failures_num] - - - true - ${admin_customer_store_id} - = - true - customer[sendemail_store_id] - - - true - ${admin_customer_address_entity_id} - = - true - address[${admin_customer_address_entity_id}][entity_id] - - - - true - ${admin_customer_address_created_at} - = - true - address[${admin_customer_address_entity_id}][created_at] - - - true - ${admin_customer_address_updated_at} - = - true - address[${admin_customer_address_entity_id}][updated_at] - - - true - ${admin_customer_address_is_active} - = - true - address[${admin_customer_address_entity_id}][is_active] - - - true - ${admin_customer_address_city} - = - true - address[${admin_customer_address_entity_id}][city] - - - true - - = - true - address[${admin_customer_address_entity_id}][company] - - - true - ${admin_customer_address_country_id} - = - true - address[${admin_customer_address_entity_id}][country_id] - - - true - ${admin_customer_address_firstname} - = - true - address[${admin_customer_address_entity_id}][firstname] - - - true - ${admin_customer_address_lastname} - = - true - address[${admin_customer_address_entity_id}][lastname] - - - true - - = - true - address[${admin_customer_address_entity_id}][middlename] - - - true - ${admin_customer_address_postcode} - = - true - address[${admin_customer_address_entity_id}][postcode] - - - true - - = - true - address[${admin_customer_address_entity_id}][prefix] - - - true - ${admin_customer_address_region} - = - true - address[${admin_customer_address_entity_id}][region] - - - true - ${admin_customer_address_region_id} - = - true - address[${admin_customer_address_entity_id}][region_id] - - - true - ${admin_customer_address_street} - = - true - address[${admin_customer_address_entity_id}][street][0] - - - true - - = - true - address[${admin_customer_address_entity_id}][street][1] - - - true - - = - true - address[${admin_customer_address_entity_id}][suffix] - - - true - ${admin_customer_address_telephone} - = - true - address[${admin_customer_address_entity_id}][telephone] - - - true - - = - true - address[${admin_customer_address_entity_id}][vat_id] - - - true - ${admin_customer_address_customer_id} - = - true - address[${admin_customer_address_entity_id}][customer_id] - - - true - true - = - true - address[${admin_customer_address_entity_id}][default_billing] - - - true - true - = - true - address[${admin_customer_address_entity_id}][default_shipping] - - - true - - = - true - address[new_0][prefix] - - - true - John - = - true - address[new_0][firstname] - - - true - - = - true - address[new_0][middlename] - - - true - Doe - = - true - address[new_0][lastname] - - - true - - = - true - address[new_0][suffix] - - - true - Test Company - = - true - address[new_0][company] - - - true - Folsom - = - true - address[new_0][city] - - - true - 95630 - = - true - address[new_0][postcode] - - - true - 1234567890 - = - true - address[new_0][telephone] - - - true - - = - true - address[new_0][vat_id] - - - true - false - = - true - address[new_0][default_billing] - - - true - false - = - true - address[new_0][default_shipping] - - - true - 123 Main - = - true - address[new_0][street][0] - - - true - - = - true - address[new_0][street][1] - - - true - - = - true - address[new_0][region] - - - true - US - = - true - address[new_0][country_id] - - - true - 12 - = - true - address[new_0][region_id] - - - true - ${admin_form_key} - = - true - form_key - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/customer/index/save/ - POST - true - false - true - true - false - - - - - - You saved the customer. - - Assertion.response_data - false - 2 - - - - - 1 - 0 - ${__javaScript(Math.round(${adminCustomerManagementDelay}*1000))} - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - 1 - false - 1 - ${cAdminEditOrderPercentage} - mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx - - - -var testLabel = "${testLabel}" ? " (${testLabel})" : ""; -if (testLabel - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' -) { - if (sampler.getName().indexOf(testLabel) == -1) { - sampler.setName(sampler.getName() + testLabel); - } -} else if (sampler.getName().indexOf("SetUp - ") == -1) { - sampler.setName("SetUp - " + sampler.getName()); -} - - javascript - mpaf/tool/fragments/_system/setup_label.jmx - - - - vars.put("testLabel", "[C] Admin Edit Order"); - - true - - - - - - function getFormKeyFromResponse() - { - var url = prev.getUrlAsString(), - responseCode = prev.getResponseCode(), - formKey = null; - searchPattern = /var FORM_KEY = '(.+)'/; - if (responseCode == "200" && url) { - response = prev.getResponseDataAsString(); - formKey = response && response.match(searchPattern) ? response.match(searchPattern)[1] : null; - } - return formKey; - } - - formKey = vars.get("form_key_storage"); - - currentFormKey = getFormKeyFromResponse(); - - if (currentFormKey != null && currentFormKey != formKey) { - vars.put("form_key_storage", currentFormKey); - } - - javascript - mpaf/tool/fragments/ce/admin/handle_admin_form_key.jmx - - - - formKey = vars.get("form_key_storage"); - if (formKey - && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy' - && sampler.getMethod() == "POST") - { - arguments = sampler.getArguments(); - for (i=0; i<arguments.getArgumentCount(); i++) - { - argument = arguments.getArgument(i); - if (argument.getName() == 'form_key' && argument.getValue() != formKey) { - log.info("admin form key updated: " + argument.getValue() + " => " + formKey); - argument.setValue(formKey); - } - } - } - - javascript - - - - - - false - mpaf/tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - get-admin-email - mpaf/tool/fragments/ce/lock_controller.jmx - - - - mpaf/tool/fragments/ce/get_admin_email.jmx - -adminUserList = props.get("adminUserList"); -adminUserListIterator = props.get("adminUserListIterator"); -adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - -if (adminUsersDistribution == 1) { - adminUser = adminUserList.poll(); -} else { - if (!adminUserListIterator.hasNext()) { - adminUserListIterator = adminUserList.descendingIterator(); - } - - adminUser = adminUserListIterator.next(); -} - -if (adminUser == null) { - SampleResult.setResponseMessage("adminUser list is empty"); - SampleResult.setResponseData("adminUser list is empty","UTF-8"); - IsSuccess=false; - SampleResult.setSuccessful(false); - SampleResult.setStopThread(true); -} -vars.put("admin_user", adminUser); - - - - true - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_login/admin_login.jmx - - - - Welcome - <title>Magento Admin</title> - - Assertion.response_data - false - 2 - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - - - - - ^.+$ - - Assertion.response_data - false - 1 - variable - admin_form_key - - - - - - - - - true - - = - true - dummy - - - true - ${admin_form_key} - = - true - form_key - - - true - ${admin_password} - = - true - login[password] - - - true - ${admin_user} - = - true - login[username] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/dashboard/ - POST - true - false - true - false - Java - false - - mpaf/tool/fragments/ce/admin_login/admin_login_submit_form.jmx - - - - false - admin_form_key - <input name="form_key" type="hidden" value="([^'"]+)" /> - $1$ - - 1 - mpaf/tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx - - - - - - mpaf/tool/fragments/ce/simple_controller.jmx - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/orders_page.jmx - - - - Create New Order - - Assertion.response_data - false - 2 - - - - - - - - - true - sales_order_grid - = - true - namespace - - - true - - = - true - search - - - true - true - = - true - filters[placeholder] - - - true - 200 - = - true - paging[pageSize] - - - true - 1 - = - true - paging[current] - - - true - increment_id - = - true - sorting[field] - - - true - desc - = - true - sorting[direction] - - - true - true - = - true - isAjax - - - true - ${admin_form_key} - = - true - form_key - false - - - true - pending - = - true - filters[status] - true - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/open_orders.jmx - - - - totalRecords - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - - - true - sales_order_grid - = - true - namespace - true - - - true - - = - true - search - true - - - true - true - = - true - filters[placeholder] - true - - - true - 200 - = - true - paging[pageSize] - true - - - true - 1 - = - true - paging[current] - true - - - true - increment_id - = - true - sorting[field] - true - - - true - asc - = - true - sorting[direction] - true - - - true - true - = - true - isAjax - true - - - true - pending - = - true - filters[status] - - - true - ${__time()}${__Random(1,1000000)} - = - true - _ - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/mui/index/render/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/search_orders.jmx - - - - totalRecords - - Assertion.response_data - false - 2 - - - - false - order_numbers - \"increment_id\":\"(\d+)\"\, - $1$ - - -1 - simple_products - - - - false - order_ids - \"entity_id\":\"(\d+)\"\, - $1$ - - -1 - simple_products - - - - - - mpaf/tool/fragments/ce/admin_create_process_returns/setup.jmx - - import java.util.ArrayList; - import java.util.HashMap; - import org.apache.jmeter.protocol.http.util.Base64Encoder; - import java.util.Random; - - // get count of "order_numbers" variable defined in "Search Pending Orders Limit" - int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr")); - - - int clusterLength; - int threadsNumber = ctx.getThreadGroup().getNumThreads(); - if (threadsNumber == 0) { - //Number of orders for one thread - clusterLength = ordersCount; - } else { - clusterLength = Math.round(ordersCount / threadsNumber); - if (clusterLength == 0) { - clusterLength = 1; - } - } - - //Current thread number starts from 0 - int currentThreadNum = ctx.getThreadNum(); - - //Index of the current product from the cluster - Random random = new Random(); - if (${seedForRandom} > 0) { - random.setSeed(${seedForRandom} + ${__threadNum}); - } - int iterator = random.nextInt(clusterLength); - if (iterator == 0) { - iterator = 1; - } - - int i = clusterLength * currentThreadNum + iterator; - - orderNumber = vars.get("order_numbers_" + i.toString()); - orderId = vars.get("order_ids_" + i.toString()); - vars.put("order_number", orderNumber); - vars.put("order_id", orderId); - - - - - false - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/view/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/open_order.jmx - - - - #${order_number} - - Assertion.response_data - false - 2 - - - - false - order_status - <span id="order_status">([^<]+)</span> - $1$ - - 1 - simple_products - - - - - - "${order_status}" == "Pending" - false - mpaf/tool/fragments/ce/admin_edit_order/if_controller.jmx - - - - - - true - pending - = - true - history[status] - false - - - true - Some text - = - true - history[comment] - - - true - ${admin_form_key} - = - true - form_key - false - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order/addComment/order_id/${order_id}/?isAjax=true - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_edit_order/add_comment.jmx - - - - Not Notified - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/invoice_start.jmx - - - - Invoice Totals - - Assertion.response_data - false - 2 - - - - false - item_ids - <div id="order_item_(\d+)_title"\s*class="product-title"> - $1$ - - -1 - simple_products - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - 1 - = - true - invoice[items][${item_ids_1}] - - - true - 1 - = - true - invoice[items][${item_ids_2}] - - - true - Invoiced - = - true - invoice[comment_text] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx - - - - The invoice has been created - - Assertion.response_data - false - 2 - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/order_shipment/start/order_id/${order_id}/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_edit_order/shipment_start.jmx - - - - New Shipment - - Assertion.response_data - false - 2 - - - - - - - - - true - ${admin_form_key} - = - true - form_key - false - - - true - 1 - = - true - shipment[items][${item_ids_1}] - - - true - 1 - = - true - shipment[items][${item_ids_2}] - - - true - Shipped - = - true - shipment[comment_text] - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/ - POST - true - false - true - false - false - - mpaf/tool/fragments/ce/admin_edit_order/shipment_submit.jmx - - - - The shipment has been created - - Assertion.response_data - false - 2 - - - - - - - - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}${admin_path}/admin/auth/logout/ - GET - true - false - true - false - false - - mpaf/tool/fragments/ce/setup/admin_logout.jmx - - - - false - - - - adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool")); - if (adminUsersDistribution == 1) { - adminUserList = props.get("adminUserList"); - adminUserList.add(vars.get("admin_user")); - } - - mpaf/tool/fragments/ce/common/return_admin_email_to_pool.jmx - - - - - - - - - stoptest - - false - 1 - - 1 - 1 - 1395324075000 - 1395324075000 - false - - - mpaf/tool/fragments/ce/tear_down.jmx - - - "${dashboard_enabled}" == "1" - false - - - - - - - true - ${__property(environment)} - = - true - environment - - - true - ${start_time} - = - true - startTime - - - true - ${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)} - = - true - endTime - - - true - ${redis_host} - = - true - stats_server - - - - - - 60000 - 200000 - ${request_protocol} - - ${base_path}DeploymentEvent.php - POST - true - false - true - false - false - - - - - - Errors: - - Assertion.response_data - false - 6 - - - - - - - 30 - ${host} - / - false - 0 - true - true - - - true - - - - - - false - - saveConfig - - - true - true - true - - true - true - true - true - false - true - true - false - false - false - false - false - false - false - false - 0 - true - true - true - true - - - ${response_time_file_name} - mpaf/tool/fragments/ce/common/aggregate_graph.jmx - - - - false - true - true - false - mpaf/tool/fragments/_system/debug.jmx - - - - true - - - From e4a856107e96bdfdb205fdc4da1301d264d3eff2 Mon Sep 17 00:00:00 2001 From: Anupam Bhatt <51681435+engcom-Echo@users.noreply.github.com> Date: Wed, 17 Jul 2024 12:36:22 +0530 Subject: [PATCH 10/10] Fixed static test failures --- .../Sales/Model/ResourceModel/Order/Customer/CollectionTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php b/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php index c7328bf8e9432..dde1fabc1988a 100644 --- a/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php +++ b/dev/tests/integration/testsuite/Magento/Sales/Model/ResourceModel/Order/Customer/CollectionTest.php @@ -32,7 +32,7 @@ class CollectionTest extends TestCase protected function setUp(): void { $this->objectManager = Bootstrap::getObjectManager(); - $this->collection = $objectManager->get(Collection::class); + $this->collection = $this->objectManager->get(Collection::class); } /**