diff --git a/composer.json b/composer.json index 10c9be56a53..4daa8132829 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "pelago/emogrifier": "3.1.0", "psr/container": "1.0.0", "woocommerce/action-scheduler": "3.1.6", - "woocommerce/woocommerce-admin": "2.2.2-rc.1", + "woocommerce/woocommerce-admin": "2.2.2", "woocommerce/woocommerce-blocks": "4.9.1" }, "require-dev": { diff --git a/composer.lock b/composer.lock index e74cb27df92..57039bbbbce 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "be33d948ed1d2ee3a7a23ef657f3148d", + "content-hash": "a604678b268820c78736d599e1eb6726", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -503,16 +503,16 @@ }, { "name": "woocommerce/woocommerce-admin", - "version": "2.2.2-rc.1", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-admin.git", - "reference": "0d305d1716481a0cc2010ec7b0a608a2d3c8ebe4" + "reference": "161e6afa01a3fb69533cfa2b245a71df7512ec3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/0d305d1716481a0cc2010ec7b0a608a2d3c8ebe4", - "reference": "0d305d1716481a0cc2010ec7b0a608a2d3c8ebe4", + "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/161e6afa01a3fb69533cfa2b245a71df7512ec3f", + "reference": "161e6afa01a3fb69533cfa2b245a71df7512ec3f", "shasum": "" }, "require": { @@ -544,7 +544,7 @@ ], "description": "A modern, javascript-driven WooCommerce Admin experience.", "homepage": "https://github.com/woocommerce/woocommerce-admin", - "time": "2021-04-28T19:39:33+00:00" + "time": "2021-04-29T14:11:48+00:00" }, { "name": "woocommerce/woocommerce-blocks", diff --git a/tests/e2e/core-tests/package-lock.json b/tests/e2e/core-tests/package-lock.json new file mode 100644 index 00000000000..a160bfadc3e --- /dev/null +++ b/tests/e2e/core-tests/package-lock.json @@ -0,0 +1,454 @@ +{ + "name": "@woocommerce/e2e-core-tests", + "version": "0.1.3", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/environment": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.5.2.tgz", + "integrity": "sha512-YjhCD/Zhkz0/1vdlS/QN6QmuUdDkpgBdK4SdiVg4Y19e29g4VQYN5Xg8+YuHjdoWGY7wJHMxc79uDTeTOy9Ngw==", + "requires": { + "@jest/fake-timers": "^26.5.2", + "@jest/types": "^26.5.2", + "@types/node": "*", + "jest-mock": "^26.5.2" + } + }, + "@jest/fake-timers": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.5.2.tgz", + "integrity": "sha512-09Hn5Oraqt36V1akxQeWMVL0fR9c6PnEhpgLaYvREXZJAh2H2Y+QLCsl0g7uMoJeoWJAuz4tozk1prbR1Fc1sw==", + "requires": { + "@jest/types": "^26.5.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.5.2", + "jest-mock": "^26.5.2", + "jest-util": "^26.5.2" + } + }, + "@jest/globals": { + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.5.3.tgz", + "integrity": "sha512-7QztI0JC2CuB+Wx1VdnOUNeIGm8+PIaqngYsZXQCkH2QV0GFqzAYc9BZfU0nuqA6cbYrWh5wkuMzyii3P7deug==", + "requires": { + "@jest/environment": "^26.5.2", + "@jest/types": "^26.5.2", + "expect": "^26.5.3" + } + }, + "@jest/types": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.5.2.tgz", + "integrity": "sha512-QDs5d0gYiyetI8q+2xWdkixVQMklReZr4ltw7GFDtb4fuJIBCE6mzj2LnitGqCuAlLap6wPyb8fpoHgwZz5fdg==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/node": { + "version": "14.14.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", + "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==" + }, + "@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==" + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "config": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/config/-/config-3.3.3.tgz", + "integrity": "sha512-T3RmZQEAji5KYqUQpziWtyGJFli6Khz7h0rpxDwYNjSkr5ynyTWwO7WpfjHzTXclNCDfSWQRcwMb+NwxJesCKw==", + "requires": { + "json5": "^2.1.1" + } + }, + "diff-sequences": { + "version": "26.5.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.5.0.tgz", + "integrity": "sha512-ZXx86srb/iYy6jG71k++wBN9P9J05UNQ5hQHQd9MtMPvcqXPx/vKU69jfHV637D00Q2gSgPk2D+jSx3l1lDW/Q==" + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "expect": { + "version": "26.5.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.5.3.tgz", + "integrity": "sha512-kkpOhGRWGOr+TEFUnYAjfGvv35bfP+OlPtqPIJpOCR9DVtv8QV+p8zG0Edqafh80fsjeE+7RBcVUq1xApnYglw==", + "requires": { + "@jest/types": "^26.5.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.5.2", + "jest-message-util": "^26.5.2", + "jest-regex-util": "^26.0.0" + } + }, + "faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "jest-diff": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.5.2.tgz", + "integrity": "sha512-HCSWDUGwsov5oTlGzrRM+UPJI/Dpqi9jzeV0fdRNi3Ch5bnoXhnyJMmVg2juv9081zLIy3HGPI5mcuGgXM2xRA==", + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.5.0", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.5.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-matcher-utils": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.5.2.tgz", + "integrity": "sha512-W9GO9KBIC4gIArsNqDUKsLnhivaqf8MSs6ujO/JDcPIQrmY+aasewweXVET8KdrJ6ADQaUne5UzysvF/RR7JYA==", + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.5.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.5.2" + } + }, + "jest-message-util": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.5.2.tgz", + "integrity": "sha512-Ocp9UYZ5Jl15C5PNsoDiGEk14A4NG0zZKknpWdZGoMzJuGAkVt10e97tnEVMYpk7LnQHZOfuK2j/izLBMcuCZw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.5.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-mock": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.5.2.tgz", + "integrity": "sha512-9SiU4b5PtO51v0MtJwVRqeGEroH66Bnwtq4ARdNP7jNXbpT7+ByeWNAk4NeT/uHfNSVDXEXgQo1XRuwEqS6Rdw==", + "requires": { + "@jest/types": "^26.5.2", + "@types/node": "*" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==" + }, + "jest-util": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.5.2.tgz", + "integrity": "sha512-WTL675bK+GSSAYgS8z9FWdCT2nccO1yTIplNLPlP0OD8tUk/H5IrWKMMRudIQQ0qp8bb4k+1Qa8CxGKq9qnYdg==", + "requires": { + "@jest/types": "^26.5.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==" + }, + "pretty-format": { + "version": "26.5.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.5.2.tgz", + "integrity": "sha512-VizyV669eqESlkOikKJI8Ryxl/kPpbdLwNdPs2GrbQs18MpySB5S0Yo0N7zkg2xTRiFq4CFw8ct5Vg4a0xP0og==", + "requires": { + "@jest/types": "^26.5.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "stack-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz", + "integrity": "sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg==", + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + } + } +} diff --git a/tests/e2e/core-tests/specs/index.js b/tests/e2e/core-tests/specs/index.js index 4380bb79d4f..a0eca5a730f 100644 --- a/tests/e2e/core-tests/specs/index.js +++ b/tests/e2e/core-tests/specs/index.js @@ -73,7 +73,7 @@ const runShopperTests = () => { runCheckoutCreateAccountTest(); runCheckoutLoginAccountTest(); runCartCalculateShippingTest(); - runCartRedirectionTest(); + runCartRedirectionTest(); runOrderEmailReceivingTest(); }; diff --git a/tests/e2e/core-tests/specs/keep/onboarding-tasklist.test.js b/tests/e2e/core-tests/specs/keep/onboarding-tasklist.test.js new file mode 100644 index 00000000000..47aeecb715f --- /dev/null +++ b/tests/e2e/core-tests/specs/keep/onboarding-tasklist.test.js @@ -0,0 +1,83 @@ +/* eslint-disable jest/no-export, jest/no-disabled-tests */ + +/** + * Internal dependencies + */ +const { + merchant, + completeOnboardingWizard, + withRestApi, + addShippingZoneAndMethod, + IS_RETEST_MODE, +} = require( '@woocommerce/e2e-utils' ); + +/** + * External dependencies + */ +const config = require( 'config' ); +const { + it, + describe, +} = require( '@jest/globals' ); + +const shippingZoneNameUS = config.get( 'addresses.customer.shipping.country' ); + +const runOnboardingFlowTest = () => { + describe('Store owner can go through store Onboarding', () => { + if ( IS_RETEST_MODE ) { + it('can reset onboarding to default settings', async () => { + await withRestApi.resetOnboarding(); + }); + + it('can reset shipping zones to default settings', async () => { + await withRestApi.deleteAllShippingZones(); + }); + + it('can reset to default settings', async () => { + await withRestApi.resetSettingsGroupToDefault('general'); + await withRestApi.resetSettingsGroupToDefault('products'); + await withRestApi.resetSettingsGroupToDefault('tax'); + }); + } + + it('can start and complete onboarding when visiting the site for the first time.', async () => { + await completeOnboardingWizard(); + }); + }); +}; + +const runTaskListTest = () => { + describe('Store owner can go through setup Task List', () => { + it('can setup shipping', async () => { + await page.evaluate(() => { + document.querySelector('.woocommerce-list__item-title').scrollIntoView(); + }); + // Query for all tasks on the list + const taskListItems = await page.$$('.woocommerce-list__item-title'); + expect(taskListItems.length).toBeInRange( 5, 6 ); + + // Work around for https://github.com/woocommerce/woocommerce-admin/issues/6761 + if ( taskListItems.length == 6 ) { + // Click on "Set up shipping" task to move to the next step + const [ setupTaskListItem ] = await page.$x( '//div[contains(text(),"Set up shipping")]' ); + await setupTaskListItem.click(); + + // Wait for "Proceed" button to become active + await page.waitForSelector('button.is-primary:not(:disabled)'); + await page.waitFor(3000); + + // Click on "Proceed" button to save shipping settings + await page.click('button.is-primary'); + await page.waitFor(3000); + } else { + await merchant.openNewShipping(); + await addShippingZoneAndMethod(shippingZoneNameUS); + } + }); + }); +}; + +module.exports = { + runOnboardingFlowTest, + runTaskListTest, +}; diff --git a/tests/e2e/core-tests/specs/merchant/wp-admin-order-apply-coupon.test.js b/tests/e2e/core-tests/specs/merchant/wp-admin-order-apply-coupon.test.js index 8c1eaa8b06c..3aa75b25b57 100644 --- a/tests/e2e/core-tests/specs/merchant/wp-admin-order-apply-coupon.test.js +++ b/tests/e2e/core-tests/specs/merchant/wp-admin-order-apply-coupon.test.js @@ -42,15 +42,14 @@ const runOrderApplyCouponTest = () => { } ); it('can apply a coupon', async () => { + await page.waitForSelector('button.add-coupon'); const couponDialog = await expect(page).toDisplayDialog(async () => { await evalAndClick('button.add-coupon'); }); - expect(couponDialog.message()).toMatch(couponDialogMessage); // Accept the dialog with the coupon code await couponDialog.accept(couponCode); - await uiUnblocked(); // Verify the coupon list is showing diff --git a/tests/e2e/core-tests/specs/merchant/wp-admin-order-searching.test.js b/tests/e2e/core-tests/specs/merchant/wp-admin-order-searching.test.js index 77ce98fd0f4..97c5e14a7b7 100644 --- a/tests/e2e/core-tests/specs/merchant/wp-admin-order-searching.test.js +++ b/tests/e2e/core-tests/specs/merchant/wp-admin-order-searching.test.js @@ -1,4 +1,4 @@ -/* eslint-disable jest/no-export, jest/no-disabled-tests, */ +/* eslint-disable jest/no-export, jest/no-disabled-tests, jest/expect-expect */ /** * Internal dependencies diff --git a/tests/e2e/core-tests/specs/merchant/wp-admin-order-status-filters.test.js b/tests/e2e/core-tests/specs/merchant/wp-admin-order-status-filters.test.js index e97a3a96a54..2870fe20830 100644 --- a/tests/e2e/core-tests/specs/merchant/wp-admin-order-status-filters.test.js +++ b/tests/e2e/core-tests/specs/merchant/wp-admin-order-status-filters.test.js @@ -57,7 +57,7 @@ const runOrderStatusFiltersTest = () => { await createSimpleOrder(orderStatus.cancelled.description.text); await createSimpleOrder(orderStatus.refunded.description.text); await createSimpleOrder(orderStatus.failed.description.text); - }, 40000); + }, 60000); afterAll( async () => { // Make sure we're on the all orders view and cleanup the orders we created diff --git a/tests/e2e/core-tests/specs/merchant/wp-admin-product-edit-details.test.js b/tests/e2e/core-tests/specs/merchant/wp-admin-product-edit-details.test.js index 238fa9ba425..78e4fef92da 100644 --- a/tests/e2e/core-tests/specs/merchant/wp-admin-product-edit-details.test.js +++ b/tests/e2e/core-tests/specs/merchant/wp-admin-product-edit-details.test.js @@ -35,7 +35,6 @@ const runProductEditDetailsTest = () => { await expect(page).toFill('#_regular_price', '100.05'); // Save the changes - await expect(page).toClick('#publish'); await verifyAndPublish('Product updated.'); await uiUnblocked(); diff --git a/tests/e2e/core-tests/specs/merchant/wp-admin-product-new.test.js b/tests/e2e/core-tests/specs/merchant/wp-admin-product-new.test.js index 5155fbae0b6..360bb7c8df2 100644 --- a/tests/e2e/core-tests/specs/merchant/wp-admin-product-new.test.js +++ b/tests/e2e/core-tests/specs/merchant/wp-admin-product-new.test.js @@ -84,12 +84,19 @@ const runAddSimpleProductTest = () => { const runAddVariableProductTest = () => { describe('Add New Variable Product Page', () => { - it('can create product with variations', async () => { + beforeAll(async () => { + await merchant.login(); + }); + + it('can create variable product', async () => { await openNewProductAndVerify(); // Set product data await expect(page).toFill('#title', 'Variable Product with Three Variations'); await expect(page).toSelect('#product-type', 'Variable product'); + }); + + it('can create set variable product attributes', async () => { // Create attributes for variations await waitAndClick( page, '.attribute_tab a' ); @@ -111,7 +118,9 @@ const runAddVariableProductTest = () => { // Wait for attribute form to save (triggers 2 UI blocks) await uiUnblocked(); await uiUnblocked(); + }); + it('can create variable product variations', async () => { // Create variations from attributes await waitForSelector( page, '.variations_tab' ); await waitAndClick( page, '.variations_tab a' ); @@ -129,8 +138,11 @@ const runAddVariableProductTest = () => { // Set some variation data await uiUnblocked(); await uiUnblocked(); + }); + it('can create variation attributes', async () => { await waitAndClick( page, '.variations_tab a' ); + await uiUnblocked(); await waitForSelector( page, 'select[name="attribute_attr-1[0]"]', diff --git a/tests/e2e/core-tests/specs/shopper/front-end-cart-coupons.test.js b/tests/e2e/core-tests/specs/shopper/front-end-cart-coupons.test.js index 3e07011d800..c234767f3d6 100644 --- a/tests/e2e/core-tests/specs/shopper/front-end-cart-coupons.test.js +++ b/tests/e2e/core-tests/specs/shopper/front-end-cart-coupons.test.js @@ -41,7 +41,7 @@ const runCartApplyCouponsTest = () => { await shopper.goToCart(); }); - it('allows customer to apply fixed cart coupon', async () => { + it('allows cart to apply fixed cart coupon', async () => { await applyCoupon(couponFixedCart); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); @@ -52,7 +52,7 @@ const runCartApplyCouponsTest = () => { await removeCoupon(couponFixedCart); }); - it('allows customer to apply percentage coupon', async () => { + it('allows cart to apply percentage coupon', async () => { await applyCoupon(couponPercentage); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); @@ -63,7 +63,7 @@ const runCartApplyCouponsTest = () => { await removeCoupon(couponPercentage); }); - it('allows customer to apply fixed product coupon', async () => { + it('allows cart to apply fixed product coupon', async () => { await applyCoupon(couponFixedProduct); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); @@ -74,7 +74,7 @@ const runCartApplyCouponsTest = () => { await removeCoupon(couponFixedProduct); }); - it('prevents customer applying same coupon twice', async () => { + it('prevents cart applying same coupon twice', async () => { await applyCoupon(couponFixedCart); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); await applyCoupon(couponFixedCart); @@ -84,7 +84,7 @@ const runCartApplyCouponsTest = () => { await expect(page).toMatchElement('.order-total .amount', {text: '$4.99'}); }); - it('allows customer to apply multiple coupons', async () => { + it('allows cart to apply multiple coupons', async () => { await applyCoupon(couponFixedProduct); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); diff --git a/tests/e2e/core-tests/specs/shopper/front-end-checkout-coupons.test.js b/tests/e2e/core-tests/specs/shopper/front-end-checkout-coupons.test.js index 9b009823b96..5722a4f1956 100644 --- a/tests/e2e/core-tests/specs/shopper/front-end-checkout-coupons.test.js +++ b/tests/e2e/core-tests/specs/shopper/front-end-checkout-coupons.test.js @@ -41,7 +41,7 @@ const runCheckoutApplyCouponsTest = () => { await shopper.goToCheckout(); }); - it('allows customer to apply fixed cart coupon', async () => { + it('allows checkout to apply fixed cart coupon', async () => { await applyCoupon(couponFixedCart); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); @@ -54,7 +54,7 @@ const runCheckoutApplyCouponsTest = () => { await removeCoupon(couponFixedCart); }); - it('allows customer to apply percentage coupon', async () => { + it('allows checkout to apply percentage coupon', async () => { await applyCoupon(couponPercentage); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); @@ -64,7 +64,7 @@ const runCheckoutApplyCouponsTest = () => { await removeCoupon(couponPercentage); }); - it('allows customer to apply fixed product coupon', async () => { + it('allows checkout to apply fixed product coupon', async () => { await applyCoupon(couponFixedProduct); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); @@ -75,7 +75,7 @@ const runCheckoutApplyCouponsTest = () => { await removeCoupon(couponFixedProduct); }); - it('prevents customer applying same coupon twice', async () => { + it('prevents checkout applying same coupon twice', async () => { await applyCoupon(couponFixedCart); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); await applyCoupon(couponFixedCart); @@ -85,7 +85,7 @@ const runCheckoutApplyCouponsTest = () => { await expect(page).toMatchElement('.order-total .amount', {text: '$4.99'}); }); - it('allows customer to apply multiple coupons', async () => { + it('allows checkout to apply multiple coupons', async () => { await applyCoupon(couponFixedProduct); await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); @@ -94,7 +94,7 @@ const runCheckoutApplyCouponsTest = () => { await expect(page).toMatchElement('.order-total .amount', {text: '$0.00'}); }); - it('restores cart total when coupons are removed', async () => { + it('restores checkout total when coupons are removed', async () => { await removeCoupon(couponFixedCart); await removeCoupon(couponFixedProduct); await expect(page).toMatchElement('.order-total .amount', {text: '$9.99'}); diff --git a/tests/e2e/env/CHANGELOG.md b/tests/e2e/env/CHANGELOG.md index 23718b7cd8d..bf567bbe49a 100644 --- a/tests/e2e/env/CHANGELOG.md +++ b/tests/e2e/env/CHANGELOG.md @@ -3,6 +3,8 @@ ## Added - `takeScreenshotFor` utility function to take screenshots within tests +- `sendFailedTestScreenshotToSlack` to send the screenshot to the configured Slack channel +- `sendFailedTestMessageToSlack` to send the context for screenshot to the configured Slack channel - `toBeInRange` expect numeric range matcher # 0.2.1 diff --git a/tests/e2e/env/index.js b/tests/e2e/env/index.js index 286f449ee03..d7289c77e66 100644 --- a/tests/e2e/env/index.js +++ b/tests/e2e/env/index.js @@ -5,6 +5,7 @@ const babelConfig = require( './babel.config' ); const esLintConfig = require( './.eslintrc.js' ); const allE2EConfig = require( './config' ); const allE2EUtils = require( './utils' ); +const slackUtils = require( './src/slack' ); /** * External dependencies */ @@ -16,4 +17,5 @@ module.exports = { ...allE2EConfig, ...allE2EUtils, ...allPuppeteerUtils, + ...slackUtils, }; diff --git a/tests/e2e/env/src/setup/jest.setup.js b/tests/e2e/env/src/setup/jest.setup.js index 2fca6769587..0e438dfff54 100644 --- a/tests/e2e/env/src/setup/jest.setup.js +++ b/tests/e2e/env/src/setup/jest.setup.js @@ -51,37 +51,6 @@ async function setupBrowser() { await setBrowserViewport( 'large' ); } -/** - * Navigates to woocommerce import page and imports sample products. - * - * @return {Promise} Promise resolving once products have been imported. - */ -async function importSampleProducts() { - await switchUserToAdmin(); - // Visit Import Products page. - await visitAdminPage( - 'edit.php', - 'post_type=product&page=product_importer' - ); - await page.click( 'a.woocommerce-importer-toggle-advanced-options' ); - await page.focus( '#woocommerce-importer-file-url' ); - // local path for sample data that is included with woo. - await page.keyboard.type( - 'wp-content/plugins/woocommerce/sample-data/sample_products.csv' - ); - await page.click( '.wc-actions .button-next' ); - await page.waitForSelector( '.wc-importer-mapping-table' ); - await page.select( - '.wc-importer-mapping-table tr:nth-child(29) select', - '' - ); - await page.click( '.wc-actions .button-next' ); - await page.waitForXPath( - "//*[@class='woocommerce-importer-done' and contains(., 'Import complete! ')]" - ); - await switchUserToTest(); -} - /** * Adds an event listener to the page to handle additions of page event * handlers, to assure that they are removed at test teardown. diff --git a/tests/e2e/env/src/slack/index.js b/tests/e2e/env/src/slack/index.js index aeab8f42dd6..f03502673ed 100644 --- a/tests/e2e/env/src/slack/index.js +++ b/tests/e2e/env/src/slack/index.js @@ -1 +1,3 @@ -export * from './reporter'; +const slackUtils = require( './reporter' ); + +module.exports = slackUtils; diff --git a/tests/e2e/env/src/slack/reporter.js b/tests/e2e/env/src/slack/reporter.js index e3503f21de6..79655089a14 100644 --- a/tests/e2e/env/src/slack/reporter.js +++ b/tests/e2e/env/src/slack/reporter.js @@ -69,7 +69,7 @@ const initializeSlack = () => { * @param testName * @returns {Promise} */ -export async function sendFailedTestMessageToSlack( testName ) { +async function sendFailedTestMessageToSlack( testName ) { const { branch, commit, webUrl } = initializeSlack(); if ( ! branch ) { return; @@ -127,7 +127,7 @@ export async function sendFailedTestMessageToSlack( testName ) { * @param screenshotOfFailedTest * @returns {Promise} */ -export async function sendFailedTestScreenshotToSlack( screenshotOfFailedTest ) { +async function sendFailedTestScreenshotToSlack( screenshotOfFailedTest ) { const pr = initializeSlack(); if ( ! pr ) { return; @@ -154,3 +154,8 @@ export async function sendFailedTestScreenshotToSlack( screenshotOfFailedTest ) } } } + +module.exports = { + sendFailedTestMessageToSlack, + sendFailedTestScreenshotToSlack, +}; diff --git a/tests/e2e/env/utils/take-screenshot.js b/tests/e2e/env/utils/take-screenshot.js index 634da95dfab..25ac2fca905 100644 --- a/tests/e2e/env/utils/take-screenshot.js +++ b/tests/e2e/env/utils/take-screenshot.js @@ -24,7 +24,7 @@ const takeScreenshotFor = async ( message ) => { }); } catch ( error ) { return { - title: 'no screenshot', + title, filePath: '', }; } diff --git a/tests/e2e/utils/src/components.js b/tests/e2e/utils/src/components.js index dc4a550e2c6..c5e3daf7f51 100644 --- a/tests/e2e/utils/src/components.js +++ b/tests/e2e/utils/src/components.js @@ -18,7 +18,9 @@ import { waitForSelectorWithoutThrow, } from './page-utils'; import factories from './factories'; +import { Coupon } from '@woocommerce/api'; +const client = factories.api.withDefaultPermalinks; const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; @@ -429,7 +431,8 @@ const addProductToOrder = async ( orderId, productName ) => { await expect( page ).toClick( 'button.add-order-item' ); await page.waitForSelector( '.wc-backbone-modal-header' ); await expect( page ).toClick( '.wc-backbone-modal-content .wc-product-search' ); - await expect( page ).toFill( '#wc-backbone-modal-dialog + .select2-container .select2-search__field', productName ); + await expect( page ).toFill('#wc-backbone-modal-dialog + .select2-container .select2-search__field', productName); + await page.waitForSelector( 'li[aria-selected="true"]', { timeout: 10000 } ); await expect( page ).toClick( 'li[aria-selected="true"]' ); await page.click( '.wc-backbone-modal-content #btn-ok' ); @@ -446,23 +449,29 @@ const addProductToOrder = async ( orderId, productName ) => { * @param discountType Type of a coupon. Defaults to Fixed cart discount. */ const createCoupon = async ( couponAmount = '5', discountType = 'Fixed cart discount' ) => { - await merchant.openNewCoupon(); + let couponType; + switch ( discountType ) { + case "Fixed cart discount": + couponType = 'fixed_cart'; + break; + case "Fixed product discount": + couponType = 'fixed_product'; + break; + case "Percentage discount": + couponType = 'percent'; + break; + default: + couponType = discountType; + } // Fill in coupon code - let couponCode = 'Code-' + discountType + new Date().getTime().toString(); - await expect(page).toFill( '#title', couponCode ); - - // Set general coupon data - await clickTab( 'General' ); - await expect(page).toSelect( '#discount_type', discountType ); - await expect(page).toFill( '#coupon_amount', couponAmount ); - - // Publish coupon - await expect( page ).toClick( '#publish' ); - await page.waitForSelector( '.updated.notice' ); - - // Verify - await expect( page ).toMatchElement( '.updated.notice', { text: 'Coupon updated.' } ); + let couponCode = 'code-' + couponType + new Date().getTime().toString(); + const repository = Coupon.restRepository( client ); + await repository.create( { + code: couponCode, + discountType: couponType, + amount: couponAmount, + }); return couponCode; }; diff --git a/tests/e2e/utils/src/page-utils.js b/tests/e2e/utils/src/page-utils.js index 8ff1373a4dd..bafd685287e 100644 --- a/tests/e2e/utils/src/page-utils.js +++ b/tests/e2e/utils/src/page-utils.js @@ -247,9 +247,8 @@ export const selectOptionInSelect2 = async ( value, selector = 'input.select2-se export const searchForOrder = async (value, orderId, customerName) => { await clearAndFillInput('#post-search-input', value); await expect(page).toMatchElement('#post-search-input', value); - await expect(page).toClick('#search-submit'); - await page.waitForSelector('#the-list'); - await page.waitFor(1000); + await expect(page).toClick('#search-submit' ); + await page.waitForSelector('#the-list', { timeout: 10000 } ); await expect(page).toMatchElement('.order_number > a.order-view', {text: `#${orderId} ${customerName}`}); };