diff --git a/Makefile b/Makefile index 048b0abb..da06fcc8 100644 --- a/Makefile +++ b/Makefile @@ -16,16 +16,16 @@ endif ## Run a command inside an alpine PHP 8 CLI image. ## 1. Command to execute, eg: "./vendor/bin/phpcs" 2. Working dir (optional) define execPhpAlpine - @docker image inspect qit-cli-php-xdebug > /dev/null 2>&1 || docker build --build-arg CI=${CI} -t qit-cli-php-xdebug ./_build/docker/php83 + @docker image inspect qit-cli-php-xdebug-pcntl > /dev/null 2>&1 || docker build --build-arg CI=${CI} -t qit-cli-php-xdebug-pcntl ./_build/docker/php83 docker run --rm \ --user $(DOCKER_USER) \ -v "${PWD}:/app" \ - -v "${PWD}/_build/docker/php83/ini:/usr/local/etc/php/conf.d/" \ + -v "${PWD}/_build/docker/php83/ini/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini" \ --env QIT_HOME=/tmp \ --env PHP_IDE_CONFIG=serverName=qit_cli \ --workdir "$(2:=/)" \ --add-host host.docker.internal:host-gateway \ - qit-cli-php-xdebug \ + qit-cli-php-xdebug-pcntl \ bash -c "php -d xdebug.start_with_request=$(if $(filter 1,$(DEBUG)),yes,no) -d memory_limit=1G $(1)" endef diff --git a/README.md b/README.md index 02044f3a..b127d9fb 100644 --- a/README.md +++ b/README.md @@ -11,20 +11,20 @@ ## Documentation -For more detailed information on QIT and how to use it, refer to the [official documentation](https://woocommerce.github.io/qit-documentation/#/). +For more detailed information on QIT and how to use it, refer to the [documentation](https://qit.woo.com/docs/). ## Quality Insights Toolkit (QIT) Official tool to streamline the testing of plugins and themes, ensuring they meet the high standards of the Woo.com Marketplace. - **Comprehensive Testing Suite**: Includes various tests to ensure thorough quality checks. - - [Woo E2E Test](https://woocommerce.github.io/qit-documentation/#/test-types/woo-e2e) - - [Woo API Test](https://woocommerce.github.io/qit-documentation/#/test-types/woo-api) - - [Activation Test](https://woocommerce.github.io/qit-documentation/#/test-types/activation) - - [Security Test](https://woocommerce.github.io/qit-documentation/#/test-types/security) - - [PHPStan Test](https://woocommerce.github.io/qit-documentation/#/test-types/phpstan) - - [PHP Compatibility Test](https://woocommerce.github.io/qit-documentation/#/test-types/phpcompatibility) - - [Malware Test](https://woocommerce.github.io/qit-documentation/#/test-types/malware) + - [Woo E2E Test](https://qit.woo.com/docs/test-types/woo-e2e) + - [Woo API Test](https://qit.woo.com/docs/test-types/woo-api) + - [Activation Test](https://qit.woo.com/docs/test-types/activation) + - [Security Test](https://qit.woo.com/docs/test-types/security) + - [PHPStan Test](https://qit.woo.com/docs/test-types/phpstan) + - [PHP Compatibility Test](https://qit.woo.com/docs/test-types/phpcompatibility) + - [Malware Test](https://qit.woo.com/docs/test-types/malware) - _Performance Tests (Work-in-progress)_ - _Custom E2E Tests (Work-in-progress)_ - **Configurable Environment**: Configurable PHP, WordPress, WooCommerce versions, and more. diff --git a/_build/docker/php83/Dockerfile b/_build/docker/php83/Dockerfile index c433f4be..0676b6bb 100644 --- a/_build/docker/php83/Dockerfile +++ b/_build/docker/php83/Dockerfile @@ -4,7 +4,10 @@ ARG CI RUN apt-get update \ && apt-get install -y libzip-dev \ - && docker-php-ext-install zip + && docker-php-ext-install zip \ + && docker-php-ext-enable zip \ + && docker-php-ext-install pcntl \ + && docker-php-ext-enable pcntl # Install Xdebug only if not in CI environment RUN if [ "$CI" != "true" ]; then \ diff --git a/_build/docker/php83/ini/xdebug.ini b/_build/docker/php83/ini/xdebug.ini index d71956be..fea14732 100644 --- a/_build/docker/php83/ini/xdebug.ini +++ b/_build/docker/php83/ini/xdebug.ini @@ -1,4 +1,3 @@ -zend_extension=xdebug.so xdebug.client_host = host.docker.internal xdebug.client_port = 9003 xdebug.output_dir = /app/_build/docker/php83/xdebug/output diff --git a/_build/docker/php83/ini/zip.ini b/_build/docker/php83/ini/zip.ini deleted file mode 100644 index b3df5138..00000000 --- a/_build/docker/php83/ini/zip.ini +++ /dev/null @@ -1,2 +0,0 @@ -# Enable zip extension -extension=zip.so \ No newline at end of file diff --git a/_tests/ParallelOutput.php b/_tests/ParallelOutput.php index 719af164..7125f5d5 100644 --- a/_tests/ParallelOutput.php +++ b/_tests/ParallelOutput.php @@ -8,6 +8,7 @@ class ParallelOutput { private $headers; private $processStatus; private $startTimes; + private $nonJsonOutput; public function __construct() { $this->rawOutput = ''; diff --git a/_tests/malware/jetpack_scan/woocommerce-product-feeds/suspicious-links.html b/_tests/malware/jetpack_scan/woocommerce-product-feeds/suspicious-links.html deleted file mode 100644 index 9ece759a..00000000 --- a/_tests/malware/jetpack_scan/woocommerce-product-feeds/suspicious-links.html +++ /dev/null @@ -1 +0,0 @@ -This a suspicious link: https://example.com/akismet-guaranteed-spam/ \ No newline at end of file diff --git a/_tests/malware/jetpack_scan/woocommerce-product-feeds/suspicious-tempalte.php b/_tests/malware/jetpack_scan/woocommerce-product-feeds/suspicious-tempalte.php deleted file mode 100644 index 8362912d..00000000 --- a/_tests/malware/jetpack_scan/woocommerce-product-feeds/suspicious-tempalte.php +++ /dev/null @@ -1,6 +0,0 @@ - -This file has a suspicious link \ No newline at end of file diff --git a/_tests/malware/jetpack_scan/woocommerce-product-feeds/woocommerce-product-feeds.php b/_tests/malware/jetpack_scan/woocommerce-product-feeds/woocommerce-product-feeds.php index f0cf707a..b8991e68 100644 --- a/_tests/malware/jetpack_scan/woocommerce-product-feeds/woocommerce-product-feeds.php +++ b/_tests/malware/jetpack_scan/woocommerce-product-feeds/woocommerce-product-feeds.php @@ -8,6 +8,3 @@ if ( false ) { eval( $_POST['foo'] ); } - - -$thisIsASuspiciousLink = 'https://example.com/akismet-guaranteed-spam/'; diff --git a/_tests/tests/QITE2ETestCase.php b/_tests/tests/QITE2ETestCase.php index 4c0e1bd4..a6e8b7b7 100644 --- a/_tests/tests/QITE2ETestCase.php +++ b/_tests/tests/QITE2ETestCase.php @@ -166,6 +166,13 @@ public function validate_and_normalize( string $file_path, ?callable $callback = continue; } + // Ignore containing "Maximum execution time of 30 seconds exceeded in" in E2E. + if ( stripos( $file_path, 'woo-e2e/' ) !== false && stripos( $debug_log['message'], 'Maximum execution time of 30 seconds exceeded in' ) !== false ) { + echo "Removing 'Maximum execution time of 30 seconds exceeded in' from debug_log.message\n"; + unset( $value[ $k ] ); + continue; + } + /* * Normalize PHP debug logs captured during test runs. * diff --git a/_tests/tests/__snapshots__/MalwareTest__test_malware_jetpack_scan_woo_php_wp_6721f9775c2073c083e409914f62ed75__1.php b/_tests/tests/__snapshots__/MalwareTest__test_malware_jetpack_scan_woo_php_wp_6721f9775c2073c083e409914f62ed75__1.php index cdeecd2b..4e7f78dc 100644 --- a/_tests/tests/__snapshots__/MalwareTest__test_malware_jetpack_scan_woo_php_wp_6721f9775c2073c083e409914f62ed75__1.php +++ b/_tests/tests/__snapshots__/MalwareTest__test_malware_jetpack_scan_woo_php_wp_6721f9775c2073c083e409914f62ed75__1.php @@ -41,30 +41,6 @@ }, { "test_result_json": [ - { - "path": "woocommerce-product-feeds\\/suspicious-links.html", - "rule": "Suspicious.Links", - "violations": [ - "LINES: \\n0: This a suspicious link: https:...\\n" - ], - "tool": "Jetpack Scan" - }, - { - "path": "woocommerce-product-feeds\\/suspicious-tempalte.php", - "rule": "Suspicious.Links", - "violations": [ - "LINES: \\n2: $link = \'https:\\/\\/example.com\\/a...\\n" - ], - "tool": "Jetpack Scan" - }, - { - "path": "woocommerce-product-feeds\\/woocommerce-product-feeds.php", - "rule": "php_backdoor_rce_004", - "violations": [ - "LINES: \\n8: if ( false ) {\\n9: \\teval( $_POST[\'foo\'] );\\n10: }\\n" - ], - "tool": "Jetpack Scan" - }, { "path": "woocommerce-product-feeds\\/woocommerce-product-feeds.php", "rule": "php_suspicious_evalGlobals_001", @@ -72,14 +48,6 @@ "LINES: \\n8: if ( false ) {\\n9: \\teval( $_POST[\'foo\'] );\\n10: }\\n" ], "tool": "Jetpack Scan" - }, - { - "path": "woocommerce-product-feeds\\/woocommerce-product-feeds.php", - "rule": "Suspicious.Links", - "violations": [ - "LINES: \\n12: $thisIsASuspiciousLink = \'http...\\n" - ], - "tool": "Jetpack Scan" } ] } diff --git a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_delete_products_woorc_php74_wprc_b153920e11128a2003ccfabb5a1c2b66__1.php b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_delete_products_woorc_php74_wprc_b153920e11128a2003ccfabb5a1c2b66__1.php index 068ade3a..8b4a7ec1 100644 --- a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_delete_products_woorc_php74_wprc_b153920e11128a2003ccfabb5a1c2b66__1.php +++ b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_delete_products_woorc_php74_wprc_b153920e11128a2003ccfabb5a1c2b66__1.php @@ -31,7 +31,7 @@ }, "test_results_manager_url": "https:\\/\\/test-results-manager.com", "test_results_manager_expiration": 1234567890, - "test_summary": "Test Suites: 0 skipped, 3 failed, 78 passed, 81 total | Tests: 254 skipped, 4 failed, 63 passed, 321 total.", + "test_summary": "Test Suites: 0 skipped, 9 failed, 81 passed, 90 total | Tests: 216 skipped, 20 failed, 94 passed, 330 total.", "version": "Undefined", "update_complete": true, "ai_suggestion_status": "none", @@ -41,14 +41,14 @@ }, { "test_result_json": { - "numFailedTestSuites": 3, - "numPassedTestSuites": 78, + "numFailedTestSuites": 9, + "numPassedTestSuites": 81, "numPendingTestSuites": 0, - "numTotalTestSuites": 81, - "numFailedTests": 4, - "numPassedTests": 63, - "numPendingTests": 254, - "numTotalTests": 321, + "numTotalTestSuites": 90, + "numFailedTests": 20, + "numPassedTests": 94, + "numPendingTests": 216, + "numTotalTests": 330, "testResults": [ { "file": "activate-and-setup\\/basic-setup.spec.js", @@ -75,7 +75,7 @@ "Store owner can complete the core profiler": [ { "title": "Can complete the core profiler skipping extension install", - "status": "passed" + "status": "pending" }, { "title": "Can complete the core profiler installing default extensions", @@ -224,11 +224,11 @@ "tests": { "Payment setup task": [ { - "title": "Can visit the payment setup task from the homescreen if the setup wizard has been skipped", + "title": "Saving valid bank account transfer details enables the payment method", "status": "passed" }, { - "title": "Saving valid bank account transfer details enables the payment method", + "title": "Can visit the payment setup task from the homescreen if the setup wizard has been skipped", "status": "passed" }, { @@ -348,6 +348,32 @@ ] } }, + { + "file": "merchant\\/create-cart-block.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Transform Classic Cart To Cart Block": [ + { + "title": "can transform classic cart to cart block", + "status": "passed" + } + ] + } + }, + { + "file": "merchant\\/create-checkout-block.spec.js", + "status": "failed", + "has_pending": false, + "tests": { + "Transform Classic Checkout To Checkout Block": [ + { + "title": "can transform classic checkout to checkout block", + "status": "failed" + } + ] + } + }, { "file": "merchant\\/create-coupon.spec.js", "status": "passed", @@ -489,7 +515,7 @@ { "file": "merchant\\/create-shipping-zones.spec.js", "status": "failed", - "has_pending": true, + "has_pending": false, "tests": { "WooCommerce Shipping Settings - Add new shipping zone": [ { @@ -520,32 +546,57 @@ }, { "title": "allows customer to benefit from a free Free shipping if in BC", - "status": "pending" + "status": "failed" }, { "title": "allows customer to pay for a Flat rate shipping method", - "status": "pending" + "status": "failed" } ] } }, { - "file": "merchant\\/customer-payment-page.spec.js", + "file": "merchant\\/customer-list.spec.js", "status": "passed", "has_pending": true, + "tests": { + "Merchant > Customer List": [ + { + "title": "Merchant can view an empty customer list", + "status": "pending" + }, + { + "title": "Merchant can view a list of all customers, filter and download", + "status": "passed" + }, + { + "title": "Merchant can view a single customer", + "status": "passed" + }, + { + "title": "Merchant can use advanced filters", + "status": "passed" + } + ] + } + }, + { + "file": "merchant\\/customer-payment-page.spec.js", + "status": "failed", + "has_pending": false, "tests": { "WooCommerce Merchant Flow: Orders > Customer Payment Page": [ { "title": "should show the customer payment page link on a pending order", - "status": "pending" + "status": "failed" }, { "title": "should load the customer payment page", - "status": "pending" + "status": "failed" }, { "title": "can pay for the order through the customer payment page", - "status": "pending" + "status": "failed" } ] } @@ -553,25 +604,25 @@ { "file": "merchant\\/order-bulk-edit.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Bulk edit orders": [ { "title": "can bulk update order status", - "status": "pending" + "status": "passed" } ] } }, { "file": "merchant\\/order-coupon.spec.js", - "status": "passed", + "status": "failed", "has_pending": true, "tests": { "WooCommerce Orders > Apply Coupon": [ { "title": "can apply a coupon", - "status": "pending" + "status": "failed" }, { "title": "can remove a coupon", @@ -582,59 +633,59 @@ }, { "file": "merchant\\/order-edit.spec.js", - "status": "passed", - "has_pending": true, + "status": "failed", + "has_pending": false, "tests": { "Edit order": [ { "title": "can view single order", - "status": "pending" + "status": "passed" }, { "title": "can update order status", - "status": "pending" + "status": "passed" }, { "title": "can update order status to cancelled", - "status": "pending" + "status": "passed" }, { "title": "can update order details", - "status": "pending" + "status": "passed" }, { "title": "can add and delete order notes", - "status": "pending" + "status": "passed" }, { "title": "can load billing details", - "status": "pending" + "status": "passed" } ], "Edit order > Downloadable product permissions": [ { "title": "can add downloadable product permissions to order without product", - "status": "pending" + "status": "failed" }, { "title": "can add downloadable product permissions to order with product", - "status": "pending" + "status": "failed" }, { "title": "can edit downloadable product permissions", - "status": "pending" + "status": "failed" }, { "title": "can revoke downloadable product permissions", - "status": "pending" + "status": "failed" }, { "title": "should not allow downloading a product if download attempts are exceeded", - "status": "pending" + "status": "failed" }, { "title": "should not allow downloading a product if expiration date has passed", - "status": "pending" + "status": "failed" } ] } @@ -647,7 +698,7 @@ "Merchant > Order Action emails received": [ { "title": "can receive new order email", - "status": "pending" + "status": "passed" }, { "title": "can receive completed email", @@ -655,28 +706,28 @@ }, { "title": "can receive cancelled order email", - "status": "pending" + "status": "passed" }, { "title": "can resend new order notification", - "status": "pending" + "status": "passed" }, { "title": "can email invoice\\/order details to customer", - "status": "pending" + "status": "passed" } ] } }, { "file": "merchant\\/order-refund.spec.js", - "status": "passed", + "status": "failed", "has_pending": true, "tests": { "WooCommerce Orders > Refund an order": [ { "title": "can issue a refund by quantity", - "status": "pending" + "status": "failed" }, { "title": "can delete an issued refund", @@ -686,88 +737,88 @@ "WooCommerce Orders > Refund and restock an order item": [ { "title": "can update order after refunding item without automatic stock adjustment", - "status": "pending" + "status": "failed" } ] } }, { "file": "merchant\\/order-search.spec.js", - "status": "passed", - "has_pending": true, + "status": "failed", + "has_pending": false, "tests": { "WooCommerce Orders > Search orders": [ { "title": "can search for order by order id", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"James\\" as the billing first name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Doe\\" as the billing last name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Automattic\\" as the billing company name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"address1\\" as the billing first address", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"address2\\" as the billing second address", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"San Francisco\\" as the billing city name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"94107\\" as the billing post code", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"john.doe.ordersearch@example.com\\" as the billing email", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"123456789\\" as the billing phone", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"CA\\" as the billing state", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Tim\\" as the shipping first name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Clark\\" as the shipping last name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Oxford Ave\\" as the shipping first address", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Linwood Ave\\" as the shipping second address", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Buffalo\\" as the shipping city name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"14201\\" as the shipping post code", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Wanted Product\\" as the shipping item name", - "status": "pending" + "status": "failed" } ] } @@ -1179,6 +1230,28 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/create-variable-product-block-editor.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Variations tab": [], + "Variations tab > Create variable product": [ + { + "title": "can create a variation option and publish the product", + "status": "pending" + }, + { + "title": "can edit a variation", + "status": "pending" + }, + { + "title": "can delete a variation", + "status": "pending" + } + ] + } + }, { "file": "merchant\\/products\\/block-editor\\/disable-block-product-editor.spec.js", "status": "passed", @@ -1218,6 +1291,26 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/organization-tab-product-block-editor.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "General tab": [], + "General tab > Create product - Organization tab": [ + { + "title": "can create a simple product with categories, tags and with password required", + "status": "pending" + } + ] + } + }, + { + "file": "merchant\\/products\\/block-editor\\/product-attributes-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "merchant\\/products\\/block-editor\\/product-edit-block-editor.spec.js", "status": "passed", @@ -1280,6 +1373,18 @@ ] } }, + { + "file": "merchant\\/users-create.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/users-manage.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "shopper\\/account-email-receiving.spec.js", "status": "passed", @@ -1368,11 +1473,7 @@ "tests": { "Cart Block page": [ { - "title": "can see empty cart block", - "status": "pending" - }, - { - "title": "can add product to cart block, increase quantity, manage cross-sell products and proceed to checkout", + "title": "can see empty cart, add and remove simple & cross sell product, increase to max quantity", "status": "pending" } ] @@ -1578,7 +1679,11 @@ "status": "pending" }, { - "title": "coupon cannot be used by any customer (email restricted)", + "title": "coupon cannot be used by any customer on cart (email restricted)", + "status": "pending" + }, + { + "title": "coupon cannot be used by any customer on checkout (email restricted)", "status": "pending" }, { @@ -1815,15 +1920,7 @@ "tests": { "Mini Cart block page": [ { - "title": "can see empty mini cart", - "status": "pending" - }, - { - "title": "can proceed to mini cart, observe it and proceed to the checkout", - "status": "pending" - }, - { - "title": "can see mini cart total price inclusive with tax", + "title": "can see empty customized mini cart, add and remove product, increase to max quantity, calculate tax and see redirection", "status": "pending" } ] @@ -2033,6 +2130,19 @@ ] } }, + { + "file": "shopper\\/shop-products-filter-by-price.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Filter items in the shop by product price": [ + { + "title": "filter products by prices on the created page", + "status": "pending" + } + ] + } + }, { "file": "shopper\\/shop-search-browse-sort.spec.js", "status": "passed", @@ -2098,7 +2208,7 @@ } } ], - "summary": "Test Suites: 0 skipped, 3 failed, 78 passed, 81 total | Tests: 254 skipped, 4 failed, 63 passed, 321 total." + "summary": "Test Suites: 0 skipped, 9 failed, 81 passed, 90 total | Tests: 216 skipped, 20 failed, 94 passed, 330 total." } }, { diff --git a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_delete_products_woostable_php74_wprc_2a952a960085a76868033dc54aa96159__1.php b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_delete_products_woostable_php74_wprc_2a952a960085a76868033dc54aa96159__1.php index 23a8f3d2..da381d7c 100644 --- a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_delete_products_woostable_php74_wprc_2a952a960085a76868033dc54aa96159__1.php +++ b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_delete_products_woostable_php74_wprc_2a952a960085a76868033dc54aa96159__1.php @@ -31,7 +31,7 @@ }, "test_results_manager_url": "https:\\/\\/test-results-manager.com", "test_results_manager_expiration": 1234567890, - "test_summary": "Test Suites: 0 skipped, 2 failed, 71 passed, 73 total | Tests: 238 skipped, 4 failed, 40 passed, 282 total.", + "test_summary": "Test Suites: 0 skipped, 8 failed, 73 passed, 81 total | Tests: 194 skipped, 20 failed, 107 passed, 321 total.", "version": "Undefined", "update_complete": true, "ai_suggestion_status": "none", @@ -41,14 +41,14 @@ }, { "test_result_json": { - "numFailedTestSuites": 2, - "numPassedTestSuites": 71, + "numFailedTestSuites": 8, + "numPassedTestSuites": 73, "numPendingTestSuites": 0, - "numTotalTestSuites": 73, - "numFailedTests": 4, - "numPassedTests": 40, - "numPendingTests": 238, - "numTotalTests": 282, + "numTotalTestSuites": 81, + "numFailedTests": 20, + "numPassedTests": 107, + "numPendingTests": 194, + "numTotalTests": 321, "testResults": [ { "file": "activate-and-setup\\/basic-setup.spec.js", @@ -297,14 +297,81 @@ ] } }, + { + "file": "js-file-monitor\\/monitor-js-file-number.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Keeps track of the number of JS files included on key shopper pages": [ + { + "title": "Check that Shop page has 50 JS files", + "status": "passed" + }, + { + "title": "Check that Cart has 54 JS files", + "status": "passed" + }, + { + "title": "Check that Checkout has 54 JS files", + "status": "passed" + } + ], + "Keeps track of the number of JS files on key admin pages": [ + { + "title": "Check that WC Dashboard has 50 JS files", + "status": "passed" + }, + { + "title": "Check that Reports has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Orders page has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Products page has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Add new product has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Analytics page has 120 JS files", + "status": "passed" + }, + { + "title": "Check that Marketing Overview has 120 JS files", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/create-coupon.spec.js", "status": "passed", "has_pending": false, "tests": { - "Add New Coupon Page": [ + "Coupon management": [ + { + "title": "can create new fixedCart coupon", + "status": "passed" + }, { - "title": "can create new coupon", + "title": "can create new fixedProduct coupon", + "status": "passed" + }, + { + "title": "can create new percentage coupon", + "status": "passed" + }, + { + "title": "can create new expiryDate coupon", + "status": "passed" + }, + { + "title": "can create new freeShipping coupon", "status": "passed" } ] @@ -353,6 +420,59 @@ ] } }, + { + "file": "merchant\\/create-restricted-coupons.spec.js", + "status": "failed", + "has_pending": false, + "tests": { + "Restricted coupon management": [ + { + "title": "can create new minimumSpend coupon", + "status": "passed" + }, + { + "title": "can create new maximumSpend coupon", + "status": "passed" + }, + { + "title": "can create new individualUse coupon", + "status": "passed" + }, + { + "title": "can create new excludeSaleItems coupon", + "status": "passed" + }, + { + "title": "can create new productCategories coupon", + "status": "passed" + }, + { + "title": "can create new excludeProductCategories coupon", + "status": "passed" + }, + { + "title": "can create new products coupon", + "status": "failed" + }, + { + "title": "can create new excludeProducts coupon", + "status": "failed" + }, + { + "title": "can create new allowedEmails coupon", + "status": "passed" + }, + { + "title": "can create new usageLimitPerCoupon coupon", + "status": "passed" + }, + { + "title": "can create new usageLimitPerUser coupon", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/create-shipping-classes.spec.js", "status": "passed", @@ -409,48 +529,23 @@ ] } }, - { - "file": "merchant\\/create-simple-product.spec.js", - "status": "passed", - "has_pending": true, - "tests": { - "Add New Simple Product Page": [ - { - "title": "can create simple virtual product", - "status": "pending" - }, - { - "title": "can have a shopper add the simple virtual product to the cart", - "status": "pending" - }, - { - "title": "can create simple non-virtual product", - "status": "pending" - }, - { - "title": "can have a shopper add the simple non-virtual product to the cart", - "status": "pending" - } - ] - } - }, { "file": "merchant\\/customer-payment-page.spec.js", - "status": "passed", - "has_pending": true, + "status": "failed", + "has_pending": false, "tests": { "WooCommerce Merchant Flow: Orders > Customer Payment Page": [ { "title": "should show the customer payment page link on a pending order", - "status": "pending" + "status": "failed" }, { "title": "should load the customer payment page", - "status": "pending" + "status": "failed" }, { "title": "can pay for the order through the customer payment page", - "status": "pending" + "status": "failed" } ] } @@ -458,25 +553,25 @@ { "file": "merchant\\/order-bulk-edit.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Bulk edit orders": [ { "title": "can bulk update order status", - "status": "pending" + "status": "passed" } ] } }, { "file": "merchant\\/order-coupon.spec.js", - "status": "passed", + "status": "failed", "has_pending": true, "tests": { "WooCommerce Orders > Apply Coupon": [ { "title": "can apply a coupon", - "status": "pending" + "status": "failed" }, { "title": "can remove a coupon", @@ -487,59 +582,59 @@ }, { "file": "merchant\\/order-edit.spec.js", - "status": "passed", - "has_pending": true, + "status": "failed", + "has_pending": false, "tests": { "Edit order": [ { "title": "can view single order", - "status": "pending" + "status": "passed" }, { "title": "can update order status", - "status": "pending" + "status": "passed" }, { "title": "can update order status to cancelled", - "status": "pending" + "status": "passed" }, { "title": "can update order details", - "status": "pending" + "status": "passed" }, { "title": "can add and delete order notes", - "status": "pending" + "status": "passed" }, { "title": "can load billing details", - "status": "pending" + "status": "passed" } ], "Edit order > Downloadable product permissions": [ { "title": "can add downloadable product permissions to order without product", - "status": "pending" + "status": "failed" }, { "title": "can add downloadable product permissions to order with product", - "status": "pending" + "status": "failed" }, { "title": "can edit downloadable product permissions", - "status": "pending" + "status": "failed" }, { "title": "can revoke downloadable product permissions", - "status": "pending" + "status": "failed" }, { "title": "should not allow downloading a product if download attempts are exceeded", - "status": "pending" + "status": "failed" }, { "title": "should not allow downloading a product if expiration date has passed", - "status": "pending" + "status": "failed" } ] } @@ -552,15 +647,23 @@ "Merchant > Order Action emails received": [ { "title": "can receive new order email", + "status": "passed" + }, + { + "title": "can receive completed email", "status": "pending" }, + { + "title": "can receive cancelled order email", + "status": "passed" + }, { "title": "can resend new order notification", - "status": "pending" + "status": "passed" }, { "title": "can email invoice\\/order details to customer", - "status": "pending" + "status": "passed" } ] } @@ -590,81 +693,81 @@ }, { "file": "merchant\\/order-search.spec.js", - "status": "passed", - "has_pending": true, + "status": "failed", + "has_pending": false, "tests": { "WooCommerce Orders > Search orders": [ { "title": "can search for order by order id", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"James\\" as the billing first name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Doe\\" as the billing last name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Automattic\\" as the billing company name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"address1\\" as the billing first address", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"address2\\" as the billing second address", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"San Francisco\\" as the billing city name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"94107\\" as the billing post code", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"john.doe.ordersearch@example.com\\" as the billing email", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"123456789\\" as the billing phone", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"CA\\" as the billing state", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Tim\\" as the shipping first name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Clark\\" as the shipping last name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Oxford Ave\\" as the shipping first address", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Linwood Ave\\" as the shipping second address", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Buffalo\\" as the shipping city name", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"14201\\" as the shipping post code", - "status": "pending" + "status": "passed" }, { "title": "can search for order containing \\"Wanted Product\\" as the shipping item name", - "status": "pending" + "status": "failed" } ] } @@ -672,95 +775,95 @@ { "file": "merchant\\/order-status-filter.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "WooCommerce Orders > Filter Order by Status": [ { "title": "should filter by All", - "status": "pending" + "status": "passed" }, { "title": "should filter by Pending payment", - "status": "pending" + "status": "passed" }, { "title": "should filter by Processing", - "status": "pending" + "status": "passed" }, { "title": "should filter by On hold", - "status": "pending" + "status": "passed" }, { "title": "should filter by Completed", - "status": "pending" + "status": "passed" }, { "title": "should filter by Cancelled", - "status": "pending" + "status": "passed" }, { "title": "should filter by Refunded", - "status": "pending" + "status": "passed" }, { "title": "should filter by Failed", - "status": "pending" + "status": "passed" } ] } }, { "file": "merchant\\/page-loads.spec.js", - "status": "passed", + "status": "failed", "has_pending": true, "tests": { "WooCommerce Page Load > Load WooCommerce sub pages": [ { "title": "Can load Home", - "status": "pending" + "status": "passed" }, { "title": "Can load Orders", - "status": "pending" + "status": "passed" }, { "title": "Can load Customers", - "status": "pending" + "status": "passed" }, { "title": "Can load Reports", - "status": "pending" + "status": "passed" }, { "title": "Can load Settings", - "status": "pending" + "status": "passed" }, { "title": "Can load Status", - "status": "pending" + "status": "failed" } ], "WooCommerce Page Load > Load Products sub pages": [ { "title": "Can load All Products", - "status": "pending" + "status": "failed" }, { "title": "Can load Add New", - "status": "pending" + "status": "passed" }, { "title": "Can load Categories", - "status": "pending" + "status": "passed" }, { "title": "Can load Tags", - "status": "pending" + "status": "passed" }, { "title": "Can load Attributes", - "status": "pending" + "status": "failed" } ], "WooCommerce Page Load > Load Marketing sub pages": [ @@ -775,6 +878,27 @@ ] } }, + { + "file": "merchant\\/product-create-simple.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Products > Add Simple Product": [ + { + "title": "can create a simple virtual product", + "status": "pending" + }, + { + "title": "can create a simple non virtual product", + "status": "pending" + }, + { + "title": "can create a simple downloadable product", + "status": "pending" + } + ] + } + }, { "file": "merchant\\/product-delete.spec.js", "status": "passed", @@ -805,6 +929,10 @@ { "title": "can edit a product and save the changes", "status": "pending" + }, + { + "title": "can bulk edit products", + "status": "pending" } ] } @@ -859,6 +987,60 @@ ] } }, + { + "file": "merchant\\/product-linked-producs.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Products > Related products": [ + { + "title": "add up-sells", + "status": "pending" + }, + { + "title": "remove up-sells", + "status": "pending" + }, + { + "title": "add cross-sells", + "status": "pending" + }, + { + "title": "remove cross-sells", + "status": "pending" + } + ] + } + }, + { + "file": "merchant\\/product-reviews.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Product Reviews > Edit Product Review": [ + { + "title": "can view products reviews list", + "status": "pending" + }, + { + "title": "can filter the reviews by product", + "status": "pending" + }, + { + "title": "can quick edit a product review", + "status": "pending" + }, + { + "title": "can edit a product review", + "status": "pending" + }, + { + "title": "can delete a product review", + "status": "pending" + } + ] + } + }, { "file": "merchant\\/product-search.spec.js", "status": "passed", @@ -1036,6 +1218,24 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/product-edit-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/products\\/block-editor\\/product-images-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/products\\/block-editor\\/product-inventory-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "merchant\\/settings-general.spec.js", "status": "passed", @@ -1080,6 +1280,29 @@ ] } }, + { + "file": "shopper\\/account-email-receiving.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Shopper Account Email Receiving": [ + { + "title": "should receive an email when creating an account", + "status": "pending" + }, + { + "title": "should receive an email when password reset initiated from admin", + "status": "pending" + } + ], + "Shopper Password Reset Email Receiving": [ + { + "title": "should receive an email when initiating a password reset", + "status": "pending" + } + ] + } + }, { "file": "shopper\\/cart-block-calculate-shipping.spec.js", "status": "passed", @@ -1235,6 +1458,54 @@ ] } }, + { + "file": "shopper\\/cart-checkout-calculate-tax.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Tax rates in the cart and checkout": [], + "Tax rates in the cart and checkout > Shopper Tax Display Tests": [ + { + "title": "checks that taxes are calculated properly on totals, inclusive tax displayed properly", + "status": "pending" + }, + { + "title": "checks that taxes are calculated and displayed correctly exclusive on shop, cart and checkout", + "status": "pending" + }, + { + "title": "checks that display suffix is shown", + "status": "pending" + } + ], + "Tax rates in the cart and checkout > Shopper Tax Rounding": [ + { + "title": "checks rounding at subtotal level", + "status": "pending" + }, + { + "title": "checks rounding off at subtotal level", + "status": "pending" + } + ], + "Tax rates in the cart and checkout > Shopper Tax Levels": [ + { + "title": "checks applying taxes of 4 different levels", + "status": "pending" + }, + { + "title": "checks applying taxes of 2 different levels (2 excluded)", + "status": "pending" + } + ], + "Tax rates in the cart and checkout > Shipping Tax": [ + { + "title": "checks that tax is applied to shipping as well as order", + "status": "pending" + } + ] + } + }, { "file": "shopper\\/cart-checkout-coupons.spec.js", "status": "passed", @@ -1783,54 +2054,6 @@ ] } }, - { - "file": "shopper\\/tax\\/checkout-calculate-tax.spec.js", - "status": "passed", - "has_pending": true, - "tests": { - "Tax rates in the cart and checkout": [], - "Tax rates in the cart and checkout > Shopper Tax Display Tests": [ - { - "title": "checks that taxes are calculated properly on totals, inclusive tax displayed properly", - "status": "pending" - }, - { - "title": "checks that taxes are calculated and displayed correctly exclusive on shop, cart and checkout", - "status": "pending" - }, - { - "title": "checks that display suffix is shown", - "status": "pending" - } - ], - "Tax rates in the cart and checkout > Shopper Tax Rounding": [ - { - "title": "checks rounding at subtotal level", - "status": "pending" - }, - { - "title": "checks rounding off at subtotal level", - "status": "pending" - } - ], - "Tax rates in the cart and checkout > Shopper Tax Levels": [ - { - "title": "checks applying taxes of 4 different levels", - "status": "pending" - }, - { - "title": "checks applying taxes of 2 different levels (2 excluded)", - "status": "pending" - } - ], - "Tax rates in the cart and checkout > Shipping Tax": [ - { - "title": "checks that tax is applied to shipping as well as order", - "status": "pending" - } - ] - } - }, { "file": "shopper\\/wordpress-post.spec.js", "status": "passed", @@ -1875,7 +2098,7 @@ } } ], - "summary": "Test Suites: 0 skipped, 2 failed, 71 passed, 73 total | Tests: 238 skipped, 4 failed, 40 passed, 282 total." + "summary": "Test Suites: 0 skipped, 8 failed, 73 passed, 81 total | Tests: 194 skipped, 20 failed, 107 passed, 321 total." } }, { diff --git a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_php82_woorc_php82_wprc_4ee1157429027befae37425348f5bd84__1.php b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_php82_woorc_php82_wprc_4ee1157429027befae37425348f5bd84__1.php index 9d55ad26..faddddcf 100644 --- a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_php82_woorc_php82_wprc_4ee1157429027befae37425348f5bd84__1.php +++ b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_php82_woorc_php82_wprc_4ee1157429027befae37425348f5bd84__1.php @@ -31,7 +31,7 @@ }, "test_results_manager_url": "https:\\/\\/test-results-manager.com", "test_results_manager_expiration": 1234567890, - "test_summary": "Test Suites: 0 skipped, 0 failed, 81 passed, 81 total | Tests: 19 skipped, 0 failed, 302 passed, 321 total.", + "test_summary": "Test Suites: 0 skipped, 0 failed, 90 passed, 90 total | Tests: 22 skipped, 0 failed, 308 passed, 330 total.", "version": "Undefined", "update_complete": true, "ai_suggestion_status": "none", @@ -42,13 +42,13 @@ { "test_result_json": { "numFailedTestSuites": 0, - "numPassedTestSuites": 81, + "numPassedTestSuites": 90, "numPendingTestSuites": 0, - "numTotalTestSuites": 81, + "numTotalTestSuites": 90, "numFailedTests": 0, - "numPassedTests": 302, - "numPendingTests": 19, - "numTotalTests": 321, + "numPassedTests": 308, + "numPendingTests": 22, + "numTotalTests": 330, "testResults": [ { "file": "activate-and-setup\\/basic-setup.spec.js", @@ -75,7 +75,7 @@ "Store owner can complete the core profiler": [ { "title": "Can complete the core profiler skipping extension install", - "status": "passed" + "status": "pending" }, { "title": "Can complete the core profiler installing default extensions", @@ -224,11 +224,11 @@ "tests": { "Payment setup task": [ { - "title": "Can visit the payment setup task from the homescreen if the setup wizard has been skipped", + "title": "Saving valid bank account transfer details enables the payment method", "status": "passed" }, { - "title": "Saving valid bank account transfer details enables the payment method", + "title": "Can visit the payment setup task from the homescreen if the setup wizard has been skipped", "status": "passed" }, { @@ -348,6 +348,32 @@ ] } }, + { + "file": "merchant\\/create-cart-block.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Transform Classic Cart To Cart Block": [ + { + "title": "can transform classic cart to cart block", + "status": "passed" + } + ] + } + }, + { + "file": "merchant\\/create-checkout-block.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Transform Classic Checkout To Checkout Block": [ + { + "title": "can transform classic checkout to checkout block", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/create-coupon.spec.js", "status": "passed", @@ -529,6 +555,31 @@ ] } }, + { + "file": "merchant\\/customer-list.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Merchant > Customer List": [ + { + "title": "Merchant can view an empty customer list", + "status": "pending" + }, + { + "title": "Merchant can view a list of all customers, filter and download", + "status": "passed" + }, + { + "title": "Merchant can view a single customer", + "status": "passed" + }, + { + "title": "Merchant can use advanced filters", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/customer-payment-page.spec.js", "status": "passed", @@ -671,22 +722,22 @@ { "file": "merchant\\/order-refund.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "WooCommerce Orders > Refund an order": [ { "title": "can issue a refund by quantity", - "status": "pending" + "status": "passed" }, { "title": "can delete an issued refund", - "status": "pending" + "status": "passed" } ], "WooCommerce Orders > Refund and restock an order item": [ { "title": "can update order after refunding item without automatic stock adjustment", - "status": "pending" + "status": "passed" } ] } @@ -1179,6 +1230,28 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/create-variable-product-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Variations tab": [], + "Variations tab > Create variable product": [ + { + "title": "can create a variation option and publish the product", + "status": "passed" + }, + { + "title": "can edit a variation", + "status": "passed" + }, + { + "title": "can delete a variation", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/products\\/block-editor\\/disable-block-product-editor.spec.js", "status": "passed", @@ -1218,6 +1291,26 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/organization-tab-product-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "General tab": [], + "General tab > Create product - Organization tab": [ + { + "title": "can create a simple product with categories, tags and with password required", + "status": "passed" + } + ] + } + }, + { + "file": "merchant\\/products\\/block-editor\\/product-attributes-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "merchant\\/products\\/block-editor\\/product-edit-block-editor.spec.js", "status": "passed", @@ -1280,6 +1373,18 @@ ] } }, + { + "file": "merchant\\/users-create.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/users-manage.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "shopper\\/account-email-receiving.spec.js", "status": "passed", @@ -1368,11 +1473,7 @@ "tests": { "Cart Block page": [ { - "title": "can see empty cart block", - "status": "passed" - }, - { - "title": "can add product to cart block, increase quantity, manage cross-sell products and proceed to checkout", + "title": "can see empty cart, add and remove simple & cross sell product, increase to max quantity", "status": "passed" } ] @@ -1410,7 +1511,7 @@ { "file": "shopper\\/cart-checkout-block-calculate-tax.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Shopper Cart & Checkout Block Tax Display": [ { @@ -1453,7 +1554,7 @@ "Shipping Cart & Checkout Block Tax": [ { "title": "that tax is applied in Cart Block to shipping as well as order", - "status": "pending" + "status": "passed" } ] } @@ -1578,7 +1679,11 @@ "status": "passed" }, { - "title": "coupon cannot be used by any customer (email restricted)", + "title": "coupon cannot be used by any customer on cart (email restricted)", + "status": "passed" + }, + { + "title": "coupon cannot be used by any customer on checkout (email restricted)", "status": "passed" }, { @@ -1707,7 +1812,7 @@ }, { "title": "can choose different shipping types in the checkout", - "status": "pending" + "status": "passed" }, { "title": "allows guest customer to place an order", @@ -1753,7 +1858,7 @@ { "file": "shopper\\/checkout.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "Checkout page": [ { @@ -1782,7 +1887,7 @@ }, { "title": "allows existing customer to place order", - "status": "passed" + "status": "pending" } ] } @@ -1790,20 +1895,20 @@ { "file": "shopper\\/dashboard-access.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "Customer-role users are blocked from accessing the WP Dashboard.": [ { "title": "Customer is redirected from WP Admin home back to the My Account page.", - "status": "passed" + "status": "pending" }, { "title": "Customer is redirected from WP Admin profile page back to the My Account page.", - "status": "passed" + "status": "pending" }, { "title": "Customer is redirected from WP Admin using ajax query param back to the My Account page.", - "status": "passed" + "status": "pending" } ] } @@ -1811,20 +1916,12 @@ { "file": "shopper\\/mini-cart.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "Mini Cart block page": [ { - "title": "can see empty mini cart", - "status": "passed" - }, - { - "title": "can proceed to mini cart, observe it and proceed to the checkout", - "status": "passed" - }, - { - "title": "can see mini cart total price inclusive with tax", - "status": "passed" + "title": "can see empty customized mini cart, add and remove product, increase to max quantity, calculate tax and see redirection", + "status": "pending" } ] } @@ -1888,12 +1985,12 @@ { "file": "shopper\\/my-account.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "My account page": [ { "title": "allows customer to login", - "status": "passed" + "status": "pending" }, { "title": "allows customer to see Orders page", @@ -2033,15 +2130,28 @@ ] } }, + { + "file": "shopper\\/shop-products-filter-by-price.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Filter items in the shop by product price": [ + { + "title": "filter products by prices on the created page", + "status": "passed" + } + ] + } + }, { "file": "shopper\\/shop-search-browse-sort.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Search, browse by categories and sort items in the shop": [ { "title": "should let user search the store", - "status": "pending" + "status": "passed" }, { "title": "should let user browse products by categories", @@ -2057,12 +2167,12 @@ { "file": "shopper\\/wordpress-post.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "WordPress": [ { "title": "logged-in customer can comment on a post", - "status": "passed" + "status": "pending" } ] } @@ -2098,11 +2208,16 @@ } } ], - "summary": "Test Suites: 0 skipped, 0 failed, 81 passed, 81 total | Tests: 19 skipped, 0 failed, 302 passed, 321 total." + "summary": "Test Suites: 0 skipped, 0 failed, 90 passed, 90 total | Tests: 22 skipped, 0 failed, 308 passed, 330 total." } }, { - "debug_log": [] + "debug_log": [ + { + "count": "20", + "message": "PHP Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in \\/var\\/www\\/html\\/wp-includes\\/formatting.php on line 3557" + } + ] } ] ]'; diff --git a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_php82_woostable_php82_wprc_960168535790f3a7eff463fb11517d63__1.php b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_php82_woostable_php82_wprc_960168535790f3a7eff463fb11517d63__1.php index bfc46741..9d55ad26 100644 --- a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_php82_woostable_php82_wprc_960168535790f3a7eff463fb11517d63__1.php +++ b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_php82_woostable_php82_wprc_960168535790f3a7eff463fb11517d63__1.php @@ -31,7 +31,7 @@ }, "test_results_manager_url": "https:\\/\\/test-results-manager.com", "test_results_manager_expiration": 1234567890, - "test_summary": "Test Suites: 0 skipped, 0 failed, 73 passed, 73 total | Tests: 19 skipped, 0 failed, 263 passed, 282 total.", + "test_summary": "Test Suites: 0 skipped, 0 failed, 81 passed, 81 total | Tests: 19 skipped, 0 failed, 302 passed, 321 total.", "version": "Undefined", "update_complete": true, "ai_suggestion_status": "none", @@ -42,13 +42,13 @@ { "test_result_json": { "numFailedTestSuites": 0, - "numPassedTestSuites": 73, + "numPassedTestSuites": 81, "numPendingTestSuites": 0, - "numTotalTestSuites": 73, + "numTotalTestSuites": 81, "numFailedTests": 0, - "numPassedTests": 263, + "numPassedTests": 302, "numPendingTests": 19, - "numTotalTests": 282, + "numTotalTests": 321, "testResults": [ { "file": "activate-and-setup\\/basic-setup.spec.js", @@ -297,14 +297,81 @@ ] } }, + { + "file": "js-file-monitor\\/monitor-js-file-number.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Keeps track of the number of JS files included on key shopper pages": [ + { + "title": "Check that Shop page has 50 JS files", + "status": "passed" + }, + { + "title": "Check that Cart has 54 JS files", + "status": "passed" + }, + { + "title": "Check that Checkout has 54 JS files", + "status": "passed" + } + ], + "Keeps track of the number of JS files on key admin pages": [ + { + "title": "Check that WC Dashboard has 50 JS files", + "status": "passed" + }, + { + "title": "Check that Reports has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Orders page has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Products page has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Add new product has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Analytics page has 120 JS files", + "status": "passed" + }, + { + "title": "Check that Marketing Overview has 120 JS files", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/create-coupon.spec.js", "status": "passed", "has_pending": false, "tests": { - "Add New Coupon Page": [ + "Coupon management": [ { - "title": "can create new coupon", + "title": "can create new fixedCart coupon", + "status": "passed" + }, + { + "title": "can create new fixedProduct coupon", + "status": "passed" + }, + { + "title": "can create new percentage coupon", + "status": "passed" + }, + { + "title": "can create new expiryDate coupon", + "status": "passed" + }, + { + "title": "can create new freeShipping coupon", "status": "passed" } ] @@ -353,6 +420,59 @@ ] } }, + { + "file": "merchant\\/create-restricted-coupons.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Restricted coupon management": [ + { + "title": "can create new minimumSpend coupon", + "status": "passed" + }, + { + "title": "can create new maximumSpend coupon", + "status": "passed" + }, + { + "title": "can create new individualUse coupon", + "status": "passed" + }, + { + "title": "can create new excludeSaleItems coupon", + "status": "passed" + }, + { + "title": "can create new productCategories coupon", + "status": "passed" + }, + { + "title": "can create new excludeProductCategories coupon", + "status": "passed" + }, + { + "title": "can create new products coupon", + "status": "passed" + }, + { + "title": "can create new excludeProducts coupon", + "status": "passed" + }, + { + "title": "can create new allowedEmails coupon", + "status": "passed" + }, + { + "title": "can create new usageLimitPerCoupon coupon", + "status": "passed" + }, + { + "title": "can create new usageLimitPerUser coupon", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/create-shipping-classes.spec.js", "status": "passed", @@ -409,31 +529,6 @@ ] } }, - { - "file": "merchant\\/create-simple-product.spec.js", - "status": "passed", - "has_pending": false, - "tests": { - "Add New Simple Product Page": [ - { - "title": "can create simple virtual product", - "status": "passed" - }, - { - "title": "can have a shopper add the simple virtual product to the cart", - "status": "passed" - }, - { - "title": "can create simple non-virtual product", - "status": "passed" - }, - { - "title": "can have a shopper add the simple non-virtual product to the cart", - "status": "passed" - } - ] - } - }, { "file": "merchant\\/customer-payment-page.spec.js", "status": "passed", @@ -547,13 +642,21 @@ { "file": "merchant\\/order-emails.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "Merchant > Order Action emails received": [ { "title": "can receive new order email", "status": "passed" }, + { + "title": "can receive completed email", + "status": "pending" + }, + { + "title": "can receive cancelled order email", + "status": "passed" + }, { "title": "can resend new order notification", "status": "passed" @@ -775,10 +878,31 @@ ] } }, + { + "file": "merchant\\/product-create-simple.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Products > Add Simple Product": [ + { + "title": "can create a simple virtual product", + "status": "passed" + }, + { + "title": "can create a simple non virtual product", + "status": "passed" + }, + { + "title": "can create a simple downloadable product", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/product-delete.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Products > Delete Product": [ { @@ -787,7 +911,7 @@ }, { "title": "can quick delete a product from product list", - "status": "pending" + "status": "passed" }, { "title": "can permanently delete a product from trash list", @@ -805,6 +929,10 @@ { "title": "can edit a product and save the changes", "status": "passed" + }, + { + "title": "can bulk edit products", + "status": "passed" } ] } @@ -859,6 +987,60 @@ ] } }, + { + "file": "merchant\\/product-linked-producs.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Products > Related products": [ + { + "title": "add up-sells", + "status": "passed" + }, + { + "title": "remove up-sells", + "status": "passed" + }, + { + "title": "add cross-sells", + "status": "passed" + }, + { + "title": "remove cross-sells", + "status": "passed" + } + ] + } + }, + { + "file": "merchant\\/product-reviews.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Product Reviews > Edit Product Review": [ + { + "title": "can view products reviews list", + "status": "passed" + }, + { + "title": "can filter the reviews by product", + "status": "passed" + }, + { + "title": "can quick edit a product review", + "status": "passed" + }, + { + "title": "can edit a product review", + "status": "passed" + }, + { + "title": "can delete a product review", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/product-search.spec.js", "status": "passed", @@ -1036,6 +1218,24 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/product-edit-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/products\\/block-editor\\/product-images-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/products\\/block-editor\\/product-inventory-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "merchant\\/settings-general.spec.js", "status": "passed", @@ -1080,6 +1280,29 @@ ] } }, + { + "file": "shopper\\/account-email-receiving.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Shopper Account Email Receiving": [ + { + "title": "should receive an email when creating an account", + "status": "pending" + }, + { + "title": "should receive an email when password reset initiated from admin", + "status": "pending" + } + ], + "Shopper Password Reset Email Receiving": [ + { + "title": "should receive an email when initiating a password reset", + "status": "pending" + } + ] + } + }, { "file": "shopper\\/cart-block-calculate-shipping.spec.js", "status": "passed", @@ -1235,6 +1458,54 @@ ] } }, + { + "file": "shopper\\/cart-checkout-calculate-tax.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Tax rates in the cart and checkout": [], + "Tax rates in the cart and checkout > Shopper Tax Display Tests": [ + { + "title": "checks that taxes are calculated properly on totals, inclusive tax displayed properly", + "status": "passed" + }, + { + "title": "checks that taxes are calculated and displayed correctly exclusive on shop, cart and checkout", + "status": "passed" + }, + { + "title": "checks that display suffix is shown", + "status": "passed" + } + ], + "Tax rates in the cart and checkout > Shopper Tax Rounding": [ + { + "title": "checks rounding at subtotal level", + "status": "passed" + }, + { + "title": "checks rounding off at subtotal level", + "status": "passed" + } + ], + "Tax rates in the cart and checkout > Shopper Tax Levels": [ + { + "title": "checks applying taxes of 4 different levels", + "status": "passed" + }, + { + "title": "checks applying taxes of 2 different levels (2 excluded)", + "status": "passed" + } + ], + "Tax rates in the cart and checkout > Shipping Tax": [ + { + "title": "checks that tax is applied to shipping as well as order", + "status": "passed" + } + ] + } + }, { "file": "shopper\\/cart-checkout-coupons.spec.js", "status": "passed", @@ -1271,7 +1542,7 @@ { "file": "shopper\\/cart-checkout-restricted-coupons.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Cart & Checkout Restricted Coupons": [ { @@ -1308,11 +1579,11 @@ }, { "title": "coupon cannot be used by any customer (email restricted)", - "status": "pending" + "status": "passed" }, { "title": "coupon can be used by the right customer (email restricted) but only once", - "status": "pending" + "status": "passed" } ] } @@ -1444,7 +1715,7 @@ }, { "title": "allows existing customer to place an order", - "status": "passed" + "status": "pending" }, { "title": "can create an account during checkout", @@ -1482,7 +1753,7 @@ { "file": "shopper\\/checkout.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Checkout page": [ { @@ -1507,7 +1778,7 @@ }, { "title": "allows guest customer to place an order", - "status": "pending" + "status": "passed" }, { "title": "allows existing customer to place order", @@ -1783,54 +2054,6 @@ ] } }, - { - "file": "shopper\\/tax\\/checkout-calculate-tax.spec.js", - "status": "passed", - "has_pending": true, - "tests": { - "Tax rates in the cart and checkout": [], - "Tax rates in the cart and checkout > Shopper Tax Display Tests": [ - { - "title": "checks that taxes are calculated properly on totals, inclusive tax displayed properly", - "status": "passed" - }, - { - "title": "checks that taxes are calculated and displayed correctly exclusive on shop, cart and checkout", - "status": "passed" - }, - { - "title": "checks that display suffix is shown", - "status": "passed" - } - ], - "Tax rates in the cart and checkout > Shopper Tax Rounding": [ - { - "title": "checks rounding at subtotal level", - "status": "passed" - }, - { - "title": "checks rounding off at subtotal level", - "status": "passed" - } - ], - "Tax rates in the cart and checkout > Shopper Tax Levels": [ - { - "title": "checks applying taxes of 4 different levels", - "status": "passed" - }, - { - "title": "checks applying taxes of 2 different levels (2 excluded)", - "status": "passed" - } - ], - "Tax rates in the cart and checkout > Shipping Tax": [ - { - "title": "checks that tax is applied to shipping as well as order", - "status": "pending" - } - ] - } - }, { "file": "shopper\\/wordpress-post.spec.js", "status": "passed", @@ -1875,7 +2098,7 @@ } } ], - "summary": "Test Suites: 0 skipped, 0 failed, 73 passed, 73 total | Tests: 19 skipped, 0 failed, 263 passed, 282 total." + "summary": "Test Suites: 0 skipped, 0 failed, 81 passed, 81 total | Tests: 19 skipped, 0 failed, 302 passed, 321 total." } }, { diff --git a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_woorc_php74_wprc_818ebdd6b04d0991fd37d3414ff14307__1.php b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_woorc_php74_wprc_818ebdd6b04d0991fd37d3414ff14307__1.php index ec54e018..a91aed30 100644 --- a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_woorc_php74_wprc_818ebdd6b04d0991fd37d3414ff14307__1.php +++ b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_woorc_php74_wprc_818ebdd6b04d0991fd37d3414ff14307__1.php @@ -31,7 +31,7 @@ }, "test_results_manager_url": "https:\\/\\/test-results-manager.com", "test_results_manager_expiration": 1234567890, - "test_summary": "Test Suites: 0 skipped, 0 failed, 81 passed, 81 total | Tests: 19 skipped, 0 failed, 302 passed, 321 total.", + "test_summary": "Test Suites: 0 skipped, 0 failed, 90 passed, 90 total | Tests: 22 skipped, 0 failed, 308 passed, 330 total.", "version": "Undefined", "update_complete": true, "ai_suggestion_status": "none", @@ -42,13 +42,13 @@ { "test_result_json": { "numFailedTestSuites": 0, - "numPassedTestSuites": 81, + "numPassedTestSuites": 90, "numPendingTestSuites": 0, - "numTotalTestSuites": 81, + "numTotalTestSuites": 90, "numFailedTests": 0, - "numPassedTests": 302, - "numPendingTests": 19, - "numTotalTests": 321, + "numPassedTests": 308, + "numPendingTests": 22, + "numTotalTests": 330, "testResults": [ { "file": "activate-and-setup\\/basic-setup.spec.js", @@ -75,7 +75,7 @@ "Store owner can complete the core profiler": [ { "title": "Can complete the core profiler skipping extension install", - "status": "passed" + "status": "pending" }, { "title": "Can complete the core profiler installing default extensions", @@ -224,11 +224,11 @@ "tests": { "Payment setup task": [ { - "title": "Can visit the payment setup task from the homescreen if the setup wizard has been skipped", + "title": "Saving valid bank account transfer details enables the payment method", "status": "passed" }, { - "title": "Saving valid bank account transfer details enables the payment method", + "title": "Can visit the payment setup task from the homescreen if the setup wizard has been skipped", "status": "passed" }, { @@ -348,6 +348,32 @@ ] } }, + { + "file": "merchant\\/create-cart-block.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Transform Classic Cart To Cart Block": [ + { + "title": "can transform classic cart to cart block", + "status": "passed" + } + ] + } + }, + { + "file": "merchant\\/create-checkout-block.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Transform Classic Checkout To Checkout Block": [ + { + "title": "can transform classic checkout to checkout block", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/create-coupon.spec.js", "status": "passed", @@ -529,6 +555,31 @@ ] } }, + { + "file": "merchant\\/customer-list.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Merchant > Customer List": [ + { + "title": "Merchant can view an empty customer list", + "status": "pending" + }, + { + "title": "Merchant can view a list of all customers, filter and download", + "status": "passed" + }, + { + "title": "Merchant can view a single customer", + "status": "passed" + }, + { + "title": "Merchant can use advanced filters", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/customer-payment-page.spec.js", "status": "passed", @@ -671,22 +722,22 @@ { "file": "merchant\\/order-refund.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "WooCommerce Orders > Refund an order": [ { "title": "can issue a refund by quantity", - "status": "pending" + "status": "passed" }, { "title": "can delete an issued refund", - "status": "pending" + "status": "passed" } ], "WooCommerce Orders > Refund and restock an order item": [ { "title": "can update order after refunding item without automatic stock adjustment", - "status": "pending" + "status": "passed" } ] } @@ -1179,6 +1230,28 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/create-variable-product-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Variations tab": [], + "Variations tab > Create variable product": [ + { + "title": "can create a variation option and publish the product", + "status": "passed" + }, + { + "title": "can edit a variation", + "status": "passed" + }, + { + "title": "can delete a variation", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/products\\/block-editor\\/disable-block-product-editor.spec.js", "status": "passed", @@ -1218,6 +1291,26 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/organization-tab-product-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "General tab": [], + "General tab > Create product - Organization tab": [ + { + "title": "can create a simple product with categories, tags and with password required", + "status": "passed" + } + ] + } + }, + { + "file": "merchant\\/products\\/block-editor\\/product-attributes-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "merchant\\/products\\/block-editor\\/product-edit-block-editor.spec.js", "status": "passed", @@ -1280,6 +1373,18 @@ ] } }, + { + "file": "merchant\\/users-create.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/users-manage.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "shopper\\/account-email-receiving.spec.js", "status": "passed", @@ -1368,11 +1473,7 @@ "tests": { "Cart Block page": [ { - "title": "can see empty cart block", - "status": "passed" - }, - { - "title": "can add product to cart block, increase quantity, manage cross-sell products and proceed to checkout", + "title": "can see empty cart, add and remove simple & cross sell product, increase to max quantity", "status": "passed" } ] @@ -1410,7 +1511,7 @@ { "file": "shopper\\/cart-checkout-block-calculate-tax.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Shopper Cart & Checkout Block Tax Display": [ { @@ -1453,7 +1554,7 @@ "Shipping Cart & Checkout Block Tax": [ { "title": "that tax is applied in Cart Block to shipping as well as order", - "status": "pending" + "status": "passed" } ] } @@ -1578,7 +1679,11 @@ "status": "passed" }, { - "title": "coupon cannot be used by any customer (email restricted)", + "title": "coupon cannot be used by any customer on cart (email restricted)", + "status": "passed" + }, + { + "title": "coupon cannot be used by any customer on checkout (email restricted)", "status": "passed" }, { @@ -1707,7 +1812,7 @@ }, { "title": "can choose different shipping types in the checkout", - "status": "pending" + "status": "passed" }, { "title": "allows guest customer to place an order", @@ -1753,7 +1858,7 @@ { "file": "shopper\\/checkout.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "Checkout page": [ { @@ -1782,7 +1887,7 @@ }, { "title": "allows existing customer to place order", - "status": "passed" + "status": "pending" } ] } @@ -1790,20 +1895,20 @@ { "file": "shopper\\/dashboard-access.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "Customer-role users are blocked from accessing the WP Dashboard.": [ { "title": "Customer is redirected from WP Admin home back to the My Account page.", - "status": "passed" + "status": "pending" }, { "title": "Customer is redirected from WP Admin profile page back to the My Account page.", - "status": "passed" + "status": "pending" }, { "title": "Customer is redirected from WP Admin using ajax query param back to the My Account page.", - "status": "passed" + "status": "pending" } ] } @@ -1811,20 +1916,12 @@ { "file": "shopper\\/mini-cart.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "Mini Cart block page": [ { - "title": "can see empty mini cart", - "status": "passed" - }, - { - "title": "can proceed to mini cart, observe it and proceed to the checkout", - "status": "passed" - }, - { - "title": "can see mini cart total price inclusive with tax", - "status": "passed" + "title": "can see empty customized mini cart, add and remove product, increase to max quantity, calculate tax and see redirection", + "status": "pending" } ] } @@ -1888,12 +1985,12 @@ { "file": "shopper\\/my-account.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "My account page": [ { "title": "allows customer to login", - "status": "passed" + "status": "pending" }, { "title": "allows customer to see Orders page", @@ -2033,15 +2130,28 @@ ] } }, + { + "file": "shopper\\/shop-products-filter-by-price.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Filter items in the shop by product price": [ + { + "title": "filter products by prices on the created page", + "status": "passed" + } + ] + } + }, { "file": "shopper\\/shop-search-browse-sort.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Search, browse by categories and sort items in the shop": [ { "title": "should let user search the store", - "status": "pending" + "status": "passed" }, { "title": "should let user browse products by categories", @@ -2057,12 +2167,12 @@ { "file": "shopper\\/wordpress-post.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "WordPress": [ { "title": "logged-in customer can comment on a post", - "status": "passed" + "status": "pending" } ] } @@ -2098,7 +2208,7 @@ } } ], - "summary": "Test Suites: 0 skipped, 0 failed, 81 passed, 81 total | Tests: 19 skipped, 0 failed, 302 passed, 321 total." + "summary": "Test Suites: 0 skipped, 0 failed, 90 passed, 90 total | Tests: 22 skipped, 0 failed, 308 passed, 330 total." } }, { diff --git a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_woostable_php74_wprc_865de3b217a16a96d42609a9ca8ebcf0__1.php b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_woostable_php74_wprc_865de3b217a16a96d42609a9ca8ebcf0__1.php index 2d9b9b53..ec54e018 100644 --- a/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_woostable_php74_wprc_865de3b217a16a96d42609a9ca8ebcf0__1.php +++ b/_tests/tests/__snapshots__/Wooe2eTest__test_woo_e2e_no_op_woostable_php74_wprc_865de3b217a16a96d42609a9ca8ebcf0__1.php @@ -31,7 +31,7 @@ }, "test_results_manager_url": "https:\\/\\/test-results-manager.com", "test_results_manager_expiration": 1234567890, - "test_summary": "Test Suites: 0 skipped, 0 failed, 73 passed, 73 total | Tests: 19 skipped, 0 failed, 263 passed, 282 total.", + "test_summary": "Test Suites: 0 skipped, 0 failed, 81 passed, 81 total | Tests: 19 skipped, 0 failed, 302 passed, 321 total.", "version": "Undefined", "update_complete": true, "ai_suggestion_status": "none", @@ -42,13 +42,13 @@ { "test_result_json": { "numFailedTestSuites": 0, - "numPassedTestSuites": 73, + "numPassedTestSuites": 81, "numPendingTestSuites": 0, - "numTotalTestSuites": 73, + "numTotalTestSuites": 81, "numFailedTests": 0, - "numPassedTests": 263, + "numPassedTests": 302, "numPendingTests": 19, - "numTotalTests": 282, + "numTotalTests": 321, "testResults": [ { "file": "activate-and-setup\\/basic-setup.spec.js", @@ -297,14 +297,81 @@ ] } }, + { + "file": "js-file-monitor\\/monitor-js-file-number.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Keeps track of the number of JS files included on key shopper pages": [ + { + "title": "Check that Shop page has 50 JS files", + "status": "passed" + }, + { + "title": "Check that Cart has 54 JS files", + "status": "passed" + }, + { + "title": "Check that Checkout has 54 JS files", + "status": "passed" + } + ], + "Keeps track of the number of JS files on key admin pages": [ + { + "title": "Check that WC Dashboard has 50 JS files", + "status": "passed" + }, + { + "title": "Check that Reports has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Orders page has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Products page has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Add new product has 150 JS files", + "status": "passed" + }, + { + "title": "Check that Analytics page has 120 JS files", + "status": "passed" + }, + { + "title": "Check that Marketing Overview has 120 JS files", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/create-coupon.spec.js", "status": "passed", "has_pending": false, "tests": { - "Add New Coupon Page": [ + "Coupon management": [ { - "title": "can create new coupon", + "title": "can create new fixedCart coupon", + "status": "passed" + }, + { + "title": "can create new fixedProduct coupon", + "status": "passed" + }, + { + "title": "can create new percentage coupon", + "status": "passed" + }, + { + "title": "can create new expiryDate coupon", + "status": "passed" + }, + { + "title": "can create new freeShipping coupon", "status": "passed" } ] @@ -353,6 +420,59 @@ ] } }, + { + "file": "merchant\\/create-restricted-coupons.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Restricted coupon management": [ + { + "title": "can create new minimumSpend coupon", + "status": "passed" + }, + { + "title": "can create new maximumSpend coupon", + "status": "passed" + }, + { + "title": "can create new individualUse coupon", + "status": "passed" + }, + { + "title": "can create new excludeSaleItems coupon", + "status": "passed" + }, + { + "title": "can create new productCategories coupon", + "status": "passed" + }, + { + "title": "can create new excludeProductCategories coupon", + "status": "passed" + }, + { + "title": "can create new products coupon", + "status": "passed" + }, + { + "title": "can create new excludeProducts coupon", + "status": "passed" + }, + { + "title": "can create new allowedEmails coupon", + "status": "passed" + }, + { + "title": "can create new usageLimitPerCoupon coupon", + "status": "passed" + }, + { + "title": "can create new usageLimitPerUser coupon", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/create-shipping-classes.spec.js", "status": "passed", @@ -409,31 +529,6 @@ ] } }, - { - "file": "merchant\\/create-simple-product.spec.js", - "status": "passed", - "has_pending": false, - "tests": { - "Add New Simple Product Page": [ - { - "title": "can create simple virtual product", - "status": "passed" - }, - { - "title": "can have a shopper add the simple virtual product to the cart", - "status": "passed" - }, - { - "title": "can create simple non-virtual product", - "status": "passed" - }, - { - "title": "can have a shopper add the simple non-virtual product to the cart", - "status": "passed" - } - ] - } - }, { "file": "merchant\\/customer-payment-page.spec.js", "status": "passed", @@ -547,13 +642,21 @@ { "file": "merchant\\/order-emails.spec.js", "status": "passed", - "has_pending": false, + "has_pending": true, "tests": { "Merchant > Order Action emails received": [ { "title": "can receive new order email", "status": "passed" }, + { + "title": "can receive completed email", + "status": "pending" + }, + { + "title": "can receive cancelled order email", + "status": "passed" + }, { "title": "can resend new order notification", "status": "passed" @@ -775,10 +878,31 @@ ] } }, + { + "file": "merchant\\/product-create-simple.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Products > Add Simple Product": [ + { + "title": "can create a simple virtual product", + "status": "passed" + }, + { + "title": "can create a simple non virtual product", + "status": "passed" + }, + { + "title": "can create a simple downloadable product", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/product-delete.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Products > Delete Product": [ { @@ -787,7 +911,7 @@ }, { "title": "can quick delete a product from product list", - "status": "pending" + "status": "passed" }, { "title": "can permanently delete a product from trash list", @@ -805,6 +929,10 @@ { "title": "can edit a product and save the changes", "status": "passed" + }, + { + "title": "can bulk edit products", + "status": "passed" } ] } @@ -859,6 +987,60 @@ ] } }, + { + "file": "merchant\\/product-linked-producs.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Products > Related products": [ + { + "title": "add up-sells", + "status": "passed" + }, + { + "title": "remove up-sells", + "status": "passed" + }, + { + "title": "add cross-sells", + "status": "passed" + }, + { + "title": "remove cross-sells", + "status": "passed" + } + ] + } + }, + { + "file": "merchant\\/product-reviews.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Product Reviews > Edit Product Review": [ + { + "title": "can view products reviews list", + "status": "passed" + }, + { + "title": "can filter the reviews by product", + "status": "passed" + }, + { + "title": "can quick edit a product review", + "status": "passed" + }, + { + "title": "can edit a product review", + "status": "passed" + }, + { + "title": "can delete a product review", + "status": "passed" + } + ] + } + }, { "file": "merchant\\/product-search.spec.js", "status": "passed", @@ -1036,6 +1218,24 @@ ] } }, + { + "file": "merchant\\/products\\/block-editor\\/product-edit-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/products\\/block-editor\\/product-images-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, + { + "file": "merchant\\/products\\/block-editor\\/product-inventory-block-editor.spec.js", + "status": "passed", + "has_pending": false, + "tests": [] + }, { "file": "merchant\\/settings-general.spec.js", "status": "passed", @@ -1080,6 +1280,29 @@ ] } }, + { + "file": "shopper\\/account-email-receiving.spec.js", + "status": "passed", + "has_pending": true, + "tests": { + "Shopper Account Email Receiving": [ + { + "title": "should receive an email when creating an account", + "status": "pending" + }, + { + "title": "should receive an email when password reset initiated from admin", + "status": "pending" + } + ], + "Shopper Password Reset Email Receiving": [ + { + "title": "should receive an email when initiating a password reset", + "status": "pending" + } + ] + } + }, { "file": "shopper\\/cart-block-calculate-shipping.spec.js", "status": "passed", @@ -1235,6 +1458,54 @@ ] } }, + { + "file": "shopper\\/cart-checkout-calculate-tax.spec.js", + "status": "passed", + "has_pending": false, + "tests": { + "Tax rates in the cart and checkout": [], + "Tax rates in the cart and checkout > Shopper Tax Display Tests": [ + { + "title": "checks that taxes are calculated properly on totals, inclusive tax displayed properly", + "status": "passed" + }, + { + "title": "checks that taxes are calculated and displayed correctly exclusive on shop, cart and checkout", + "status": "passed" + }, + { + "title": "checks that display suffix is shown", + "status": "passed" + } + ], + "Tax rates in the cart and checkout > Shopper Tax Rounding": [ + { + "title": "checks rounding at subtotal level", + "status": "passed" + }, + { + "title": "checks rounding off at subtotal level", + "status": "passed" + } + ], + "Tax rates in the cart and checkout > Shopper Tax Levels": [ + { + "title": "checks applying taxes of 4 different levels", + "status": "passed" + }, + { + "title": "checks applying taxes of 2 different levels (2 excluded)", + "status": "passed" + } + ], + "Tax rates in the cart and checkout > Shipping Tax": [ + { + "title": "checks that tax is applied to shipping as well as order", + "status": "passed" + } + ] + } + }, { "file": "shopper\\/cart-checkout-coupons.spec.js", "status": "passed", @@ -1271,7 +1542,7 @@ { "file": "shopper\\/cart-checkout-restricted-coupons.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Cart & Checkout Restricted Coupons": [ { @@ -1308,11 +1579,11 @@ }, { "title": "coupon cannot be used by any customer (email restricted)", - "status": "pending" + "status": "passed" }, { "title": "coupon can be used by the right customer (email restricted) but only once", - "status": "pending" + "status": "passed" } ] } @@ -1444,7 +1715,7 @@ }, { "title": "allows existing customer to place an order", - "status": "passed" + "status": "pending" }, { "title": "can create an account during checkout", @@ -1482,7 +1753,7 @@ { "file": "shopper\\/checkout.spec.js", "status": "passed", - "has_pending": true, + "has_pending": false, "tests": { "Checkout page": [ { @@ -1507,7 +1778,7 @@ }, { "title": "allows guest customer to place an order", - "status": "pending" + "status": "passed" }, { "title": "allows existing customer to place order", @@ -1783,54 +2054,6 @@ ] } }, - { - "file": "shopper\\/tax\\/checkout-calculate-tax.spec.js", - "status": "passed", - "has_pending": true, - "tests": { - "Tax rates in the cart and checkout": [], - "Tax rates in the cart and checkout > Shopper Tax Display Tests": [ - { - "title": "checks that taxes are calculated properly on totals, inclusive tax displayed properly", - "status": "passed" - }, - { - "title": "checks that taxes are calculated and displayed correctly exclusive on shop, cart and checkout", - "status": "passed" - }, - { - "title": "checks that display suffix is shown", - "status": "passed" - } - ], - "Tax rates in the cart and checkout > Shopper Tax Rounding": [ - { - "title": "checks rounding at subtotal level", - "status": "passed" - }, - { - "title": "checks rounding off at subtotal level", - "status": "passed" - } - ], - "Tax rates in the cart and checkout > Shopper Tax Levels": [ - { - "title": "checks applying taxes of 4 different levels", - "status": "passed" - }, - { - "title": "checks applying taxes of 2 different levels (2 excluded)", - "status": "passed" - } - ], - "Tax rates in the cart and checkout > Shipping Tax": [ - { - "title": "checks that tax is applied to shipping as well as order", - "status": "pending" - } - ] - } - }, { "file": "shopper\\/wordpress-post.spec.js", "status": "passed", @@ -1875,7 +2098,7 @@ } } ], - "summary": "Test Suites: 0 skipped, 0 failed, 73 passed, 73 total | Tests: 19 skipped, 0 failed, 263 passed, 282 total." + "summary": "Test Suites: 0 skipped, 0 failed, 81 passed, 81 total | Tests: 19 skipped, 0 failed, 302 passed, 321 total." } }, { diff --git a/src/.phpcs.xml.dist b/src/.phpcs.xml.dist index c3d819c4..000f2ebf 100644 --- a/src/.phpcs.xml.dist +++ b/src/.phpcs.xml.dist @@ -5,7 +5,7 @@ - + diff --git a/src/src/Commands/Backend/AddBackend.php b/src/src/Commands/Backend/AddBackend.php index 690193bd..7d0ce3de 100644 --- a/src/src/Commands/Backend/AddBackend.php +++ b/src/src/Commands/Backend/AddBackend.php @@ -125,12 +125,12 @@ protected function execute( InputInterface $input, OutputInterface $output ): in try { $this->woo_extensions_list->fetch_woo_extensions_available(); if ( empty( $this->woo_extensions_list->get_woo_extension_list() ) ) { - throw new \RuntimeException(); + throw new \RuntimeException( 'Failed to get the list of Extensions. Do you have any?' ); } } catch ( \Exception $e ) { $this->auth->delete_manager_secret(); $this->cache->delete( 'manager_url' ); - $output->writeln( sprintf( 'We could not authenticate to %s using the provided Manager Secret.', escapeshellarg( $manager_url ) ) ); + $output->writeln( sprintf( 'We could not authenticate to %s using the provided Manager Secret. Error: %s', escapeshellarg( $manager_url ), $e->getMessage() ) ); return Command::FAILURE; } diff --git a/src/src/Commands/Partner/AddPartner.php b/src/src/Commands/Partner/AddPartner.php index 893890b9..a9fcdb63 100644 --- a/src/src/Commands/Partner/AddPartner.php +++ b/src/src/Commands/Partner/AddPartner.php @@ -42,7 +42,7 @@ public function __construct( ManagerBackend $manager_backend, Cache $cache, Auth protected function configure() { $this ->setDescription( 'Configure a new WCCOM Marketplace Partner that the QIT CLI can connect to.' ) - ->setHelp( sprintf( "Configure the QIT CLI to be able to interact with %s on behalf of a given partner.\nAuthenticating documentation: https://woocommerce.github.io/qit-documentation/#/authenticating", get_wccom_url() ) ) + ->setHelp( sprintf( "Configure the QIT CLI to be able to interact with %s on behalf of a given partner.\nAuthenticating documentation: https://qit.woo.com/docs/support/authenticating", get_wccom_url() ) ) ->addOption( 'user', 'u', InputOption::VALUE_OPTIONAL, '(Optional) Woo.com Partner Developer username.' ) ->addOption( 'qit_token', 't', InputOption::VALUE_OPTIONAL, '(Optional) Woo.com Partner Developer QIT Token.' ) ->addOption( 'application_password', 'p', InputOption::VALUE_OPTIONAL, '(DEPRECATED) This has been renamed to "QIT Token" and will be removed. A regular application password will not work.' ); @@ -95,11 +95,11 @@ protected function execute( InputInterface $input, OutputInterface $output ): in $question->setValidator( function ( $qit_token ) { if ( empty( $qit_token ) ) { - throw new \RuntimeException( 'Invalid QIT Token. Questions? https://woocommerce.github.io/qit-documentation/#/authenticating' ); + throw new \RuntimeException( 'Invalid QIT Token. Questions? https://qit.woo.com/docs/support/authenticating' ); } if ( ! preg_match( '#^[a-z0-9 ]+$#i', $qit_token ) ) { - throw new \RuntimeException( 'A QIT Token should consist of alpha-numeric characters and spaces. Questions? https://woocommerce.github.io/qit-documentation/#/authenticating' ); + throw new \RuntimeException( 'A QIT Token should consist of alpha-numeric characters and spaces. Questions? https://qit.woo.com/docs/support/authenticating' ); } return $qit_token; @@ -117,7 +117,7 @@ protected function execute( InputInterface $input, OutputInterface $output ): in $user = strtolower( $user ); if ( ! filter_var( $user, FILTER_VALIDATE_EMAIL ) && ! preg_match( '#^[a-z0-9_-]{1,70}$#i', $user ) ) { - throw new \InvalidArgumentException( 'The username must be either a valid e-mail, or contain only letters, numbers, underscores or dashes. Questions? https://woocommerce.github.io/qit-documentation/#/authenticating' ); + throw new \InvalidArgumentException( 'The username must be either a valid e-mail, or contain only letters, numbers, underscores or dashes. Questions? https://qit.woo.com/docs/support/authenticating' ); } // Remove any non-alphanumeric characters from the username. @@ -167,8 +167,8 @@ protected function execute( InputInterface $input, OutputInterface $output ): in $io->section( <<
output->writeln( sprintf( "Current version: %s\nLatest version: %s", $current_version, $latest_version ) ); $this->output->writeln( "\nUpdate today to take advantage of the latest features!" ); - $this->output->writeln( "How to update: https://woocommerce.github.io/qit-documentation/#/cli/getting-started?id=updating-qit\n" ); + $this->output->writeln( "How to update: https://qit.woo.com/docs/cli/getting-started#updating-qit\n" ); if ( version_compare( $current_version, $minimum_cli_version, '<' ) ) { if ( ! Config::is_development_mode() ) { $this->output->writeln( sprintf( 'You are using an outdated version of the CLI. Please update to the latest version (%s).', $latest_version ) ); diff --git a/src/src/helpers.php b/src/src/helpers.php index 89afad29..6e5b459f 100644 --- a/src/src/helpers.php +++ b/src/src/helpers.php @@ -49,7 +49,7 @@ function validate_authentication( string $username, string $qit_token ): void { ->with_timeout_in_seconds( 300 ) // Depending on how many extensions the user has, this can take a while. ->request(); } catch ( \Exception $e ) { - throw new \Exception( $e->getMessage() ); + throw new \Exception( sprintf( 'Could not authenticate to %s using the provided username and QIT Token. Questions? https://qit.woo.com/docs/support/authenticating', get_wccom_url() ) ); } }