From d0802fa0ce65d13929bfad81650999f14cce19ea Mon Sep 17 00:00:00 2001 From: akshitasingh Date: Fri, 5 Feb 2021 22:41:29 +0530 Subject: [PATCH 1/4] tests for hyperlink --- .../common-transforms/proper-display.spec.js | 17 + main/tests/cypress/package-lock.json | 1607 +++++++++++++++++ main/tests/cypress/package.json | 2 +- .../core/scripts/views/data-table/cell-ui.js | 43 +- 4 files changed, 1658 insertions(+), 11 deletions(-) create mode 100644 main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js create mode 100644 main/tests/cypress/package-lock.json diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js new file mode 100644 index 000000000..4674c0d14 --- /dev/null +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js @@ -0,0 +1,17 @@ +describe(__filename, function () { + it('Ensure multiple whitespaces are collapsed', function () { + const fixture = [ + ['tests'], + ['2021-01-31https://www.google.com'], + ['https://www.wikidata.org/wiki/Property:P670 https://www.wikidata.org/wiki/Property:P669 are now mapped to https://schema.org/streetAddress via https://www.wikidata.org/wiki/Property:P2235'], + ['vhjhjjj https://github.com/OpenRefine/OpenRefine/issues/2519'], + ] + cy.loadAndVisitProject(fixture) + + + cy.getCell(0,'tests').contains('2021-01-31https://www.google.com') + cy.getCell(1,'tests').children('div').children('a').should('have.attr','href'); + cy.getCell(2,'tests').children('div').children('a').should('have.attr','href'); + + }) +}) diff --git a/main/tests/cypress/package-lock.json b/main/tests/cypress/package-lock.json new file mode 100644 index 000000000..f72b6c0a6 --- /dev/null +++ b/main/tests/cypress/package-lock.json @@ -0,0 +1,1607 @@ +{ + "name": "openrefine-cypress-test-suite", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "@cypress/request": { + "version": "2.88.5", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz", + "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "requires": { + "any-observable": "^0.3.0" + } + }, + "@types/sinonjs__fake-timers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz", + "integrity": "sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg==" + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==" + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "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==" + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "optional": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cypress": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.2.1.tgz", + "integrity": "sha512-OYkSgzA4J4Q7eMjZvNf5qWpBLR4RXrkqjL3UZ1UzGGLAskO0nFTi/RomNTG6TKvL3Zp4tw4zFY1gp5MtmkCZrA==", + "requires": { + "@cypress/listr-verbose-renderer": "^0.4.1", + "@cypress/request": "^2.88.5", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "^6.0.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.1.2", + "blob-util": "2.0.2", + "bluebird": "^3.7.2", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-table3": "~0.6.0", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "debug": "^4.1.1", + "eventemitter2": "^6.4.2", + "execa": "^4.0.2", + "executable": "^4.1.1", + "extract-zip": "^1.7.0", + "fs-extra": "^9.0.1", + "getos": "^3.2.1", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.2", + "lazy-ass": "^1.6.0", + "listr": "^0.14.3", + "lodash": "^4.17.19", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "moment": "^2.27.0", + "ospath": "^1.2.2", + "pretty-bytes": "^5.4.1", + "ramda": "~0.26.1", + "request-progress": "^3.0.0", + "supports-color": "^7.2.0", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "url": "^0.11.0", + "yauzl": "^2.10.0" + } + }, + "cypress-file-upload": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.2.tgz", + "integrity": "sha512-QRPnQPeEaW+HMVB62/htIsKh7Kd/x2uzoHKEQxh7LCD+4IaG0rAjLZupCIjjUh+JnRymgfir8wOYtFSJCNWlpA==", + "requires": { + "mime": "^2.5.0" + } + }, + "cypress-wait-until": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/cypress-wait-until/-/cypress-wait-until-1.7.1.tgz", + "integrity": "sha512-8DL5IsBTbAxBjfYgCzdbohPq/bY+IKc63fxtso1C8RWhLnQkZbVESyaclNr76jyxfId6uyzX8+Xnt0ZwaXNtkA==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "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=" + }, + "eventemitter2": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", + "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==" + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + } + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "requires": { + "pify": "^2.2.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "requires": { + "async": "^3.2.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "requires": { + "ini": "1.3.7" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" + }, + "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-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=" + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.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" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.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=" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "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" + } + } + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "requires": { + "chalk": "^4.0.0" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "mime": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", + "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==" + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "requires": { + "mime-db": "1.45.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=" + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "dev": true + }, + "pretty-bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz", + "integrity": "sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "requires": { + "throttleit": "^1.0.0" + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "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" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uniqid": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.2.0.tgz", + "integrity": "sha512-LH8zsvwJ/GL6YtNfSOmMCrI9piraAUjBfw2MCvleNE6a4pVKJwXjG2+HWhkVeFcSg+nmaPKbMrMOoxwQluZ1Mg==" + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/main/tests/cypress/package.json b/main/tests/cypress/package.json index 45eeaf67a..26729afbd 100644 --- a/main/tests/cypress/package.json +++ b/main/tests/cypress/package.json @@ -9,7 +9,7 @@ "test": "cypress run --browser electron --headless --quiet", "lint": "prettier --write .", "check-lint": "prettier --check ." - }, + }, "dependencies": { "cypress": "6.2.1", "cypress-file-upload": "^5.0.2", diff --git a/main/webapp/modules/core/scripts/views/data-table/cell-ui.js b/main/webapp/modules/core/scripts/views/data-table/cell-ui.js index d4564644b..bfba49da1 100644 --- a/main/webapp/modules/core/scripts/views/data-table/cell-ui.js +++ b/main/webapp/modules/core/scripts/views/data-table/cell-ui.js @@ -96,16 +96,39 @@ DataTableCellUI.prototype._render = function() { nonstringSpan.className = 'data-table-value-nonstring'; nonstringSpan.textContent = cell.v; divContent.appendChild(nonstringSpan); - } else if (URL.looksLikeUrl(cell.v)) { - var url = document.createElement('a'); - url.textContent = cell.v; - url.setAttribute('href', cell.v); - url.setAttribute('target', '_blank'); - divContent.appendChild(url); - } else { - var span = document.createElement('span'); - span.textContent = cell.v; - divContent.appendChild(span); + } + else{ + var arr = cell.v.split(" "); + var spanArr =[]; + for( var i=0;i Date: Sat, 6 Feb 2021 08:16:30 +0530 Subject: [PATCH 2/4] lint fix --- .../grid/column/edit-cells/blank-down.spec.js | 44 +- .../collapse-consecutive-whitespace.spec.js | 38 +- .../common-transforms/proper-display.spec.js | 32 +- .../common-transforms/to-date.spec.js | 46 +- .../common-transforms/to-number.spec.js | 88 +-- .../trim-leading-whitespace.spec.js | 32 +- .../unescape-html-entities.spec.js | 34 +- .../grid/column/edit-cells/fill-down.spec.js | 44 +- .../project/grid/column/facet/facets.spec.js | 714 +++++++++--------- .../project/grid/misc/expressions.spec.js | 526 ++++++------- 10 files changed, 802 insertions(+), 796 deletions(-) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/blank-down.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/blank-down.spec.js index 5920fdec0..77cc94d16 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/blank-down.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/blank-down.spec.js @@ -1,28 +1,28 @@ describe(__filename, function () { - it('Ensure cells are blanked down', function () { - const fixture = [ - ['a', 'b', 'c'], + it('Ensure cells are blanked down', function () { + const fixture = [ + ['a', 'b', 'c'], - ['0a', 'identical', '0c'], - ['1a', 'identical', '1c'], - ['2a', '2b', '2c'], - ['3a', 'also identical', '3c'], - ['4a', 'also identical', '4c'], - ['5a', 'also identical', '5c'], - ] + ['0a', 'identical', '0c'], + ['1a', 'identical', '1c'], + ['2a', '2b', '2c'], + ['3a', 'also identical', '3c'], + ['4a', 'also identical', '4c'], + ['5a', 'also identical', '5c'], + ] - cy.loadAndVisitProject(fixture) + cy.loadAndVisitProject(fixture) - // click - cy.columnActionClick('b', ['Edit cells', 'Blank down']) + // click + cy.columnActionClick('b', ['Edit cells', 'Blank down']) - // ensure notification and cell content - cy.assertNotificationContainingText('Blank down 3 cells') - cy.assertCellEquals(0, 'b', 'identical') // untouched - cy.assertCellEquals(1, 'b', null) // blanked - cy.assertCellEquals(2, 'b', '2b') // untouched - cy.assertCellEquals(3, 'b', 'also identical') // untouched - cy.assertCellEquals(4, 'b', null) // blanked - cy.assertCellEquals(5, 'b', null) // blanked - }) + // ensure notification and cell content + cy.assertNotificationContainingText('Blank down 3 cells') + cy.assertCellEquals(0, 'b', 'identical') // untouched + cy.assertCellEquals(1, 'b', null) // blanked + cy.assertCellEquals(2, 'b', '2b') // untouched + cy.assertCellEquals(3, 'b', 'also identical') // untouched + cy.assertCellEquals(4, 'b', null) // blanked + cy.assertCellEquals(5, 'b', null) // blanked + }) }) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/collapse-consecutive-whitespace.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/collapse-consecutive-whitespace.spec.js index 0e69c9ee1..9d989bc7f 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/collapse-consecutive-whitespace.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/collapse-consecutive-whitespace.spec.js @@ -1,23 +1,23 @@ describe(__filename, function () { - it('Ensure multiple whitespaces are collapsed', function () { - const fixture = [ - ['NDB_No', 'Shrt_Desc'], - ['01001', 'THIS IS A TEST'], - ['01002', 'THIS IS ANOTHER TEST'], - ['01003', 'THIS IS a THIRD TEST'], - ] - cy.loadAndVisitProject(fixture) + it('Ensure multiple whitespaces are collapsed', function () { + const fixture = [ + ['NDB_No', 'Shrt_Desc'], + ['01001', 'THIS IS A TEST'], + ['01002', 'THIS IS ANOTHER TEST'], + ['01003', 'THIS IS a THIRD TEST'], + ] + cy.loadAndVisitProject(fixture) - cy.columnActionClick('Shrt_Desc', [ - 'Edit cells', - 'Common transforms', - 'Collapse consecutive whitespace', - ]) + cy.columnActionClick('Shrt_Desc', [ + 'Edit cells', + 'Common transforms', + 'Collapse consecutive whitespace', + ]) - // Check notification and cell content - cy.assertNotificationContainingText('Text transform on 2 cells') - cy.assertCellEquals(0, 'Shrt_Desc', 'THIS IS A TEST') - cy.assertCellEquals(1, 'Shrt_Desc', 'THIS IS ANOTHER TEST') - cy.assertCellEquals(2, 'Shrt_Desc', 'THIS IS a THIRD TEST') - }) + // Check notification and cell content + cy.assertNotificationContainingText('Text transform on 2 cells') + cy.assertCellEquals(0, 'Shrt_Desc', 'THIS IS A TEST') + cy.assertCellEquals(1, 'Shrt_Desc', 'THIS IS ANOTHER TEST') + cy.assertCellEquals(2, 'Shrt_Desc', 'THIS IS a THIRD TEST') + }) }) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js index 4674c0d14..2fe90956e 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js @@ -1,17 +1,23 @@ describe(__filename, function () { - it('Ensure multiple whitespaces are collapsed', function () { - const fixture = [ + it('Ensure multiple whitespaces are collapsed', function () { + const fixture = [ ['tests'], - ['2021-01-31https://www.google.com'], - ['https://www.wikidata.org/wiki/Property:P670 https://www.wikidata.org/wiki/Property:P669 are now mapped to https://schema.org/streetAddress via https://www.wikidata.org/wiki/Property:P2235'], - ['vhjhjjj https://github.com/OpenRefine/OpenRefine/issues/2519'], - ] - cy.loadAndVisitProject(fixture) + ['2021-01-31https://www.google.com'], + [ + 'https://www.wikidata.org/wiki/Property:P670 https://www.wikidata.org/wiki/Property:P669 are now mapped to https://schema.org/streetAddress via https://www.wikidata.org/wiki/Property:P2235', + ], + ['vhjhjjj https://github.com/OpenRefine/OpenRefine/issues/2519'], + ] + cy.loadAndVisitProject(fixture) - - cy.getCell(0,'tests').contains('2021-01-31https://www.google.com') - cy.getCell(1,'tests').children('div').children('a').should('have.attr','href'); - cy.getCell(2,'tests').children('div').children('a').should('have.attr','href'); - - }) + cy.getCell(0, 'tests').contains('2021-01-31https://www.google.com') + cy.getCell(1, 'tests') + .children('div') + .children('a') + .should('have.attr', 'href') + cy.getCell(2, 'tests') + .children('div') + .children('a') + .should('have.attr', 'href') + }) }) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/to-date.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/to-date.spec.js index b07513c7a..88e0142de 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/to-date.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/to-date.spec.js @@ -1,28 +1,28 @@ describe(__filename, function () { - it('Ensure only some cells are converted to dates', function () { - const fixture = [ - ['NDB_No', 'A Date'], - ['01001', '2021-01-01'], - ['01002', '2021-01-01 05:35:15'], - ['01003', 'THIS SHOULD NOT BE TOUCHED'], - ] - cy.loadAndVisitProject(fixture) + it('Ensure only some cells are converted to dates', function () { + const fixture = [ + ['NDB_No', 'A Date'], + ['01001', '2021-01-01'], + ['01002', '2021-01-01 05:35:15'], + ['01003', 'THIS SHOULD NOT BE TOUCHED'], + ] + cy.loadAndVisitProject(fixture) - // Update grid - cy.columnActionClick('A Date', [ - 'Edit cells', - 'Common transforms', - 'To date', - ]) + // Update grid + cy.columnActionClick('A Date', [ + 'Edit cells', + 'Common transforms', + 'To date', + ]) - // Check notification and cell content - cy.assertNotificationContainingText('Text transform on 2 cells') - cy.assertCellEquals(0, 'A Date', '2021-01-01T00:00:00Z') - cy.assertCellEquals(1, 'A Date', '2021-01-01T05:35:15Z') - cy.assertCellEquals(2, 'A Date', 'THIS SHOULD NOT BE TOUCHED') + // Check notification and cell content + cy.assertNotificationContainingText('Text transform on 2 cells') + cy.assertCellEquals(0, 'A Date', '2021-01-01T00:00:00Z') + cy.assertCellEquals(1, 'A Date', '2021-01-01T05:35:15Z') + cy.assertCellEquals(2, 'A Date', 'THIS SHOULD NOT BE TOUCHED') - // ensure cells are marked as non-string - cy.assertCellNotString(0, 'A Date') - cy.assertCellNotString(1, 'A Date') - }) + // ensure cells are marked as non-string + cy.assertCellNotString(0, 'A Date') + cy.assertCellNotString(1, 'A Date') + }) }) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/to-number.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/to-number.spec.js index 911c4702d..67245bcd6 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/to-number.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/to-number.spec.js @@ -1,52 +1,52 @@ describe(__filename, function () { - it('Ensure some cells are converted to numbers, and some remains untouched (int)', function () { - const fixture = [ - ['NDB_No', 'A Number'], - ['01001', 'This is not a number'], - ['01002', '42'], - ['01003', '43'], - ] - cy.loadAndVisitProject(fixture) + it('Ensure some cells are converted to numbers, and some remains untouched (int)', function () { + const fixture = [ + ['NDB_No', 'A Number'], + ['01001', 'This is not a number'], + ['01002', '42'], + ['01003', '43'], + ] + cy.loadAndVisitProject(fixture) - // click - cy.columnActionClick('A Number', [ - 'Edit cells', - 'Common transforms', - 'To number', - ]) + // click + cy.columnActionClick('A Number', [ + 'Edit cells', + 'Common transforms', + 'To number', + ]) - // Ensure notification and cell content - cy.assertNotificationContainingText('Text transform on 2 cells') - cy.assertCellEquals(0, 'A Number', 'This is not a number') - cy.assertCellEquals(1, 'A Number', '42') - cy.assertCellEquals(2, 'A Number', '43') + // Ensure notification and cell content + cy.assertNotificationContainingText('Text transform on 2 cells') + cy.assertCellEquals(0, 'A Number', 'This is not a number') + cy.assertCellEquals(1, 'A Number', '42') + cy.assertCellEquals(2, 'A Number', '43') - // Ensure a numeric type is applied to the cell - cy.assertCellNotString(1, 'A Number') - cy.assertCellNotString(2, 'A Number') - }) + // Ensure a numeric type is applied to the cell + cy.assertCellNotString(1, 'A Number') + cy.assertCellNotString(2, 'A Number') + }) - it('Ensure toNumber works with floats', function () { - const fixture = [ - ['NDB_No', 'A Number'], - ['01001', '42.2'], - ['01002', '43.5'], - ['01002', '43.50000'], - ['01002', '43.500001'], - ] - cy.loadAndVisitProject(fixture) + it('Ensure toNumber works with floats', function () { + const fixture = [ + ['NDB_No', 'A Number'], + ['01001', '42.2'], + ['01002', '43.5'], + ['01002', '43.50000'], + ['01002', '43.500001'], + ] + cy.loadAndVisitProject(fixture) - // click - cy.columnActionClick('A Number', [ - 'Edit cells', - 'Common transforms', - 'To number', - ]) + // click + cy.columnActionClick('A Number', [ + 'Edit cells', + 'Common transforms', + 'To number', + ]) - // Ensure cell content - cy.assertCellEquals(0, 'A Number', '42.2') - cy.assertCellEquals(1, 'A Number', '43.5') - cy.assertCellEquals(2, 'A Number', '43.5') - cy.assertCellEquals(3, 'A Number', '43.500001') - }) + // Ensure cell content + cy.assertCellEquals(0, 'A Number', '42.2') + cy.assertCellEquals(1, 'A Number', '43.5') + cy.assertCellEquals(2, 'A Number', '43.5') + cy.assertCellEquals(3, 'A Number', '43.500001') + }) }) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/trim-leading-whitespace.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/trim-leading-whitespace.spec.js index 63cabf70e..80478e4c8 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/trim-leading-whitespace.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/trim-leading-whitespace.spec.js @@ -1,21 +1,21 @@ describe(__filename, function () { - it('Ensure multiple leading/tailing whitespaces are trimmed', function () { - const fixture = [ - ['NDB_No', 'A column'], - ['01001', 'TEST'], - ] + it('Ensure multiple leading/tailing whitespaces are trimmed', function () { + const fixture = [ + ['NDB_No', 'A column'], + ['01001', 'TEST'], + ] - cy.loadAndVisitProject(fixture) - cy.editCell(0, 'A column', ' TEST ') + cy.loadAndVisitProject(fixture) + cy.editCell(0, 'A column', ' TEST ') - cy.columnActionClick('A column', [ - 'Edit cells', - 'Common transforms', - 'Trim leading and trailing whitespace', - ]) + cy.columnActionClick('A column', [ + 'Edit cells', + 'Common transforms', + 'Trim leading and trailing whitespace', + ]) - // ensure notification and cell content - cy.assertNotificationContainingText('Text transform on 1 cells') - cy.assertCellEquals(0, 'A column', 'TEST') - }) + // ensure notification and cell content + cy.assertNotificationContainingText('Text transform on 1 cells') + cy.assertCellEquals(0, 'A column', 'TEST') + }) }) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/unescape-html-entities.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/unescape-html-entities.spec.js index 5565fe8cf..4e6171c7c 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/unescape-html-entities.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/unescape-html-entities.spec.js @@ -1,22 +1,22 @@ describe(__filename, function () { - it('Ensure escaped html entities are unescaped', function () { - const fixture = [ - ['NDB_No', 'A column'], - ['01001', ''], - ['01001', '<img src="test" />'], - ] + it('Ensure escaped html entities are unescaped', function () { + const fixture = [ + ['NDB_No', 'A column'], + ['01001', ''], + ['01001', '<img src="test" />'], + ] - cy.loadAndVisitProject(fixture, 'ok') + cy.loadAndVisitProject(fixture, 'ok') - cy.columnActionClick('A column', [ - 'Edit cells', - 'Common transforms', - 'Unescape HTML entities', - ]) + cy.columnActionClick('A column', [ + 'Edit cells', + 'Common transforms', + 'Unescape HTML entities', + ]) - // ensure notification and cell content - cy.assertNotificationContainingText('Text transform on 1 cells') - cy.assertCellEquals(0, 'A column', '') - cy.assertCellEquals(1, 'A column', '') - }) + // ensure notification and cell content + cy.assertNotificationContainingText('Text transform on 1 cells') + cy.assertCellEquals(0, 'A column', '') + cy.assertCellEquals(1, 'A column', '') + }) }) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/fill-down.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/fill-down.spec.js index 1a8856ec4..2c7c5e733 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/fill-down.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/fill-down.spec.js @@ -1,27 +1,27 @@ describe(__filename, function () { - it('Ensure cells are filled down', function () { - const fixture = [ - ['a', 'b', 'c'], + it('Ensure cells are filled down', function () { + const fixture = [ + ['a', 'b', 'c'], - ['0a', '0b', '0c'], - ['1a', null, '1c'], - ['2a', '2b', '2c'], - ['3a', null, '3c'], - ['4a', null, '4c'], - ['5a', '5b', '5c'], - ] + ['0a', '0b', '0c'], + ['1a', null, '1c'], + ['2a', '2b', '2c'], + ['3a', null, '3c'], + ['4a', null, '4c'], + ['5a', '5b', '5c'], + ] - cy.loadAndVisitProject(fixture) - // click - cy.columnActionClick('b', ['Edit cells', 'Fill down']) + cy.loadAndVisitProject(fixture) + // click + cy.columnActionClick('b', ['Edit cells', 'Fill down']) - // ensure notification and cell content - cy.assertNotificationContainingText('Fill down 3 cells in column b') - cy.assertCellEquals(0, 'b', '0b') // untouched - cy.assertCellEquals(1, 'b', '0b') // filled - cy.assertCellEquals(2, 'b', '2b') // untouched - cy.assertCellEquals(3, 'b', '2b') // filled - cy.assertCellEquals(4, 'b', '2b') // filled - cy.assertCellEquals(5, 'b', '5b') // untouched - }) + // ensure notification and cell content + cy.assertNotificationContainingText('Fill down 3 cells in column b') + cy.assertCellEquals(0, 'b', '0b') // untouched + cy.assertCellEquals(1, 'b', '0b') // filled + cy.assertCellEquals(2, 'b', '2b') // untouched + cy.assertCellEquals(3, 'b', '2b') // filled + cy.assertCellEquals(4, 'b', '2b') // filled + cy.assertCellEquals(5, 'b', '5b') // untouched + }) }) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/facet/facets.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/facet/facets.spec.js index 74e0a6535..3a50ddbfa 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/facet/facets.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/facet/facets.spec.js @@ -3,415 +3,415 @@ * It's using "text facet" as it is the most simple facet */ describe(__filename, function () { - it('Verify facets panel (left-panel) appears with no facets yet', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Water', ['Facet', 'Text facet']) - cy.get('#refine-tabs-facets') - .should('exist') - .contains('Using facets and filters') - }) + it('Verify facets panel (left-panel) appears with no facets yet', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Water', ['Facet', 'Text facet']) + cy.get('#refine-tabs-facets') + .should('exist') + .contains('Using facets and filters') + }) - it('Test the display of multiple facets', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) - cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) - cy.columnActionClick('Water', ['Facet', 'Text facet']) + it('Test the display of multiple facets', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) + cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) + cy.columnActionClick('Water', ['Facet', 'Text facet']) - cy.getFacetContainer('NDB_No').should('exist') - cy.getFacetContainer('Shrt_Desc').should('exist') - cy.getFacetContainer('Water').should('exist') - }) + cy.getFacetContainer('NDB_No').should('exist') + cy.getFacetContainer('Shrt_Desc').should('exist') + cy.getFacetContainer('Water').should('exist') + }) - it('Test the Remove All button', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) - cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) - cy.get('#refine-tabs-facets .facets-container .facet-container').should( - 'have.length', - 2 - ) + it('Test the Remove All button', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) + cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) + cy.get('#refine-tabs-facets .facets-container .facet-container').should( + 'have.length', + 2 + ) - cy.get('#refine-tabs-facets a').contains('Remove All').click() - cy.get('#refine-tabs-facets .facets-container .facet-container').should( - 'have.length', - 0 - ) - cy.get('#refine-tabs-facets') - .should('exist') - .contains('Using facets and filters') - }) + cy.get('#refine-tabs-facets a').contains('Remove All').click() + cy.get('#refine-tabs-facets .facets-container .facet-container').should( + 'have.length', + 0 + ) + cy.get('#refine-tabs-facets') + .should('exist') + .contains('Using facets and filters') + }) - it('Test the Reset All button', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Water', ['Facet', 'Text facet']) - cy.columnActionClick('Energ_Kcal', ['Facet', 'Text facet']) - cy.get('#refine-tabs-facets .facets-container .facet-container').should( - 'have.length', - 2 - ) + it('Test the Reset All button', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Water', ['Facet', 'Text facet']) + cy.columnActionClick('Energ_Kcal', ['Facet', 'Text facet']) + cy.get('#refine-tabs-facets .facets-container .facet-container').should( + 'have.length', + 2 + ) - // Click to facet 1, select first value - cy.getFacetContainer('Water') - .find('.facet-choice:first-child .facet-choice-label') - .click() - cy.getFacetContainer('Water') - .find('.facet-choice:first-child') - .should('have.class', 'facet-choice-selected') + // Click to facet 1, select first value + cy.getFacetContainer('Water') + .find('.facet-choice:first-child .facet-choice-label') + .click() + cy.getFacetContainer('Water') + .find('.facet-choice:first-child') + .should('have.class', 'facet-choice-selected') - // Click to facet 2, select first value - cy.getFacetContainer('Energ_Kcal') - .find('.facet-choice:first-child .facet-choice-label') - .click() - cy.getFacetContainer('Energ_Kcal') - .find('.facet-choice:first-child') - .should('have.class', 'facet-choice-selected') + // Click to facet 2, select first value + cy.getFacetContainer('Energ_Kcal') + .find('.facet-choice:first-child .facet-choice-label') + .click() + cy.getFacetContainer('Energ_Kcal') + .find('.facet-choice:first-child') + .should('have.class', 'facet-choice-selected') - cy.get('#refine-tabs-facets a').contains('Reset All').click() + cy.get('#refine-tabs-facets a').contains('Reset All').click() - // all facets selections should be gone - cy.getFacetContainer('Water') - .find('.facet-choice:first-child') - .should('not.have.class', 'facet-choice-selected') - cy.getFacetContainer('Energ_Kcal') - .find('.facet-choice:first-child') - .should('not.have.class', 'facet-choice-selected') - }) + // all facets selections should be gone + cy.getFacetContainer('Water') + .find('.facet-choice:first-child') + .should('not.have.class', 'facet-choice-selected') + cy.getFacetContainer('Energ_Kcal') + .find('.facet-choice:first-child') + .should('not.have.class', 'facet-choice-selected') + }) - it('Create a simple text facet, check various elements in a Facet', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Water', ['Facet', 'Text facet']) - cy.get('#refine-tabs-facets').should('exist') + it('Create a simple text facet, check various elements in a Facet', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Water', ['Facet', 'Text facet']) + cy.get('#refine-tabs-facets').should('exist') - cy.getFacetContainer('Water').should('exist') - cy.getFacetContainer('Water').contains('182 choices') - cy.getFacetContainer('Water').contains('Sort by') - cy.getFacetContainer('Water').contains('Cluster') - }) + cy.getFacetContainer('Water').should('exist') + cy.getFacetContainer('Water').contains('182 choices') + cy.getFacetContainer('Water').contains('Sort by') + cy.getFacetContainer('Water').contains('Cluster') + }) - it('Delete a facet', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Water', ['Facet', 'Text facet']) + it('Delete a facet', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Water', ['Facet', 'Text facet']) - cy.getFacetContainer('Water').find('a.facet-title-remove').click() - cy.getFacetContainer('Water').should('not.exist') - }) + cy.getFacetContainer('Water').find('a.facet-title-remove').click() + cy.getFacetContainer('Water').should('not.exist') + }) - it('Test editing a facet ("change")', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) - cy.getFacetContainer('NDB_No') - .find('a[bind="changeButton"]') - .contains('change') - cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() - cy.get('.dialog-container .dialog-header').contains( - `Edit Facet's Expression` - ) - }) + it('Test editing a facet ("change")', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) + cy.getFacetContainer('NDB_No') + .find('a[bind="changeButton"]') + .contains('change') + cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() + cy.get('.dialog-container .dialog-header').contains( + `Edit Facet's Expression` + ) + }) - it('Test editing a facet / Preview', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) + it('Test editing a facet / Preview', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) - // test the tab - cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() - cy.get('.dialog-container #expression-preview-tabs-preview').should( - 'be.visible' - ) - // test the content - cy.get('.dialog-container #expression-preview-tabs-preview').contains( - 'row' - ) - }) + // test the tab + cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() + cy.get('.dialog-container #expression-preview-tabs-preview').should( + 'be.visible' + ) + // test the content + cy.get('.dialog-container #expression-preview-tabs-preview').contains( + 'row' + ) + }) - it('Test editing a facet / History', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) - cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() + it('Test editing a facet / History', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) + cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() - // test the tab - cy.get('.dialog-container a[bind="or_dialog_history"]').click() - cy.get('.dialog-container #expression-preview-tabs-history').should( - 'be.visible' - ) - // test the content - cy.get('.dialog-container #expression-preview-tabs-history').contains( - 'Expression' - ) - }) + // test the tab + cy.get('.dialog-container a[bind="or_dialog_history"]').click() + cy.get('.dialog-container #expression-preview-tabs-history').should( + 'be.visible' + ) + // test the content + cy.get('.dialog-container #expression-preview-tabs-history').contains( + 'Expression' + ) + }) - it('Test editing a facet / Starred', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) - cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() + it('Test editing a facet / Starred', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) + cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() - // test the tab - cy.get('.dialog-container a[bind="or_dialog_starred"]').click() - cy.get('.dialog-container #expression-preview-tabs-starred').should( - 'be.visible' - ) - // test the content - cy.get('.dialog-container #expression-preview-tabs-starred').contains( - 'Expression' - ) - }) + // test the tab + cy.get('.dialog-container a[bind="or_dialog_starred"]').click() + cy.get('.dialog-container #expression-preview-tabs-starred').should( + 'be.visible' + ) + // test the content + cy.get('.dialog-container #expression-preview-tabs-starred').contains( + 'Expression' + ) + }) - it('Test editing a facet / Help', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) - cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() + it('Test editing a facet / Help', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('NDB_No', ['Facet', 'Text facet']) + cy.getFacetContainer('NDB_No').find('a[bind="changeButton"]').click() - // test the tab - cy.get('.dialog-container a[bind="or_dialog_help"]').click() - cy.get('.dialog-container #expression-preview-tabs-help').should( - 'be.visible' - ) - // test the content - cy.get('.dialog-container #expression-preview-tabs-help').contains( - 'Variables' - ) - }) + // test the tab + cy.get('.dialog-container a[bind="or_dialog_help"]').click() + cy.get('.dialog-container #expression-preview-tabs-help').should( + 'be.visible' + ) + // test the content + cy.get('.dialog-container #expression-preview-tabs-help').contains( + 'Variables' + ) + }) - it('Create a facet, Sorts, by count', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Water', ['Facet', 'Text facet']) - cy.get('#refine-tabs-facets').should('exist') + it('Create a facet, Sorts, by count', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Water', ['Facet', 'Text facet']) + cy.get('#refine-tabs-facets').should('exist') - // Ensure sort should be by name by default - cy.getFacetContainer('Water').contains('0.24') - cy.getFacetContainer('Water').find('a[bind="sortByCountLink"]').click() - // Sort should now be by count - cy.getFacetContainer('Water').contains('15.87') - }) + // Ensure sort should be by name by default + cy.getFacetContainer('Water').contains('0.24') + cy.getFacetContainer('Water').find('a[bind="sortByCountLink"]').click() + // Sort should now be by count + cy.getFacetContainer('Water').contains('15.87') + }) - it('Create a facet, Sorts multiple', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Water', ['Facet', 'Text facet']) - cy.get('#refine-tabs-facets').should('exist') + it('Create a facet, Sorts multiple', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Water', ['Facet', 'Text facet']) + cy.get('#refine-tabs-facets').should('exist') - // Sort should be by name by default - cy.getFacetContainer('Water').contains('0.24') - cy.getFacetContainer('Water').find('a[bind="sortByCountLink"]').click() - // Sort should now be by count - cy.getFacetContainer('Water').contains('15.87') - cy.getFacetContainer('Water').find('a[bind="sortByNameLink"]').click() - cy.getFacetContainer('Water').contains('0.24') - }) + // Sort should be by name by default + cy.getFacetContainer('Water').contains('0.24') + cy.getFacetContainer('Water').find('a[bind="sortByCountLink"]').click() + // Sort should now be by count + cy.getFacetContainer('Water').contains('15.87') + cy.getFacetContainer('Water').find('a[bind="sortByNameLink"]').click() + cy.getFacetContainer('Water').contains('0.24') + }) - it('Test include/exlude filters', function () { - // Because the toggle of include/exclude buttons is unstable - // we force include/exclude to be visible - // This test focus solely on ensuring that filters are effectively applied to the grid - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) + it('Test include/exlude filters', function () { + // Because the toggle of include/exclude buttons is unstable + // we force include/exclude to be visible + // This test focus solely on ensuring that filters are effectively applied to the grid + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) - // force visibility - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice-toggle') - .invoke('attr', 'style', 'visibility:visible') + // force visibility + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice-toggle') + .invoke('attr', 'style', 'visibility:visible') - // include ALLSPICE,GROUND, and check rows - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice') - .contains('ALLSPICE,GROUND') - .parent() - .find('.facet-choice-toggle') - .click() - cy.getCell(0, 'Shrt_Desc').should('to.contain', 'ALLSPICE,GROUND') - cy.get('#tool-panel').contains('1 matching rows') + // include ALLSPICE,GROUND, and check rows + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice') + .contains('ALLSPICE,GROUND') + .parent() + .find('.facet-choice-toggle') + .click() + cy.getCell(0, 'Shrt_Desc').should('to.contain', 'ALLSPICE,GROUND') + cy.get('#tool-panel').contains('1 matching rows') - // OR is refreshing facets, need to show the toggle again - cy.waitForOrOperation() - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice-toggle') - .invoke('attr', 'style', 'visibility:visible') + // OR is refreshing facets, need to show the toggle again + cy.waitForOrOperation() + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice-toggle') + .invoke('attr', 'style', 'visibility:visible') - // include CELERY SEED, and check rows - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice') - .contains('ANISE SEED') - .parent() - .find('.facet-choice-toggle') - .click() - cy.getCell(1, 'Shrt_Desc').should('to.contain', 'ANISE SEED') - cy.get('#tool-panel').contains('2 matching rows') + // include CELERY SEED, and check rows + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice') + .contains('ANISE SEED') + .parent() + .find('.facet-choice-toggle') + .click() + cy.getCell(1, 'Shrt_Desc').should('to.contain', 'ANISE SEED') + cy.get('#tool-panel').contains('2 matching rows') - // OR ir refreshing facets, need to show the toggle again - cy.waitForOrOperation() - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice-toggle') - .invoke('attr', 'style', 'visibility:visible') + // OR ir refreshing facets, need to show the toggle again + cy.waitForOrOperation() + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice-toggle') + .invoke('attr', 'style', 'visibility:visible') - // include a third one, CELERY SEED, and check rows - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice') - .contains('BUTTER OIL,ANHYDROUS') - .parent() - .find('.facet-choice-toggle') - .click() - cy.getCell(0, 'Shrt_Desc').should('to.contain', 'BUTTER OIL,ANHYDROUS') // this row is added first - cy.get('#tool-panel').contains('3 matching rows') + // include a third one, CELERY SEED, and check rows + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice') + .contains('BUTTER OIL,ANHYDROUS') + .parent() + .find('.facet-choice-toggle') + .click() + cy.getCell(0, 'Shrt_Desc').should('to.contain', 'BUTTER OIL,ANHYDROUS') // this row is added first + cy.get('#tool-panel').contains('3 matching rows') - // OR ir refreshing facets, need to show the toggle again - cy.waitForOrOperation() - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice-toggle') - .invoke('attr', 'style', 'visibility:visible') + // OR ir refreshing facets, need to show the toggle again + cy.waitForOrOperation() + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice-toggle') + .invoke('attr', 'style', 'visibility:visible') - // EXCLUDE ALLSPICE,GROUND - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice') - .contains('ALLSPICE,GROUND') - .parent() - .find('.facet-choice-toggle') - .click() - cy.get('#tool-panel').contains('2 matching rows') - }) + // EXCLUDE ALLSPICE,GROUND + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice') + .contains('ALLSPICE,GROUND') + .parent() + .find('.facet-choice-toggle') + .click() + cy.get('#tool-panel').contains('2 matching rows') + }) - it('Test include/exclude, invert', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) + it('Test include/exclude, invert', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) - // do a basic facetting, expect 1 row - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice-toggle') - .invoke('attr', 'style', 'visibility:visible') - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice') - .contains('ALLSPICE,GROUND') - .parent() - .find('.facet-choice-toggle') - .click() - cy.getCell(0, 'Shrt_Desc').should('to.contain', 'ALLSPICE,GROUND') - cy.get('#tool-panel').contains('1 matching rows') + // do a basic facetting, expect 1 row + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice-toggle') + .invoke('attr', 'style', 'visibility:visible') + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice') + .contains('ALLSPICE,GROUND') + .parent() + .find('.facet-choice-toggle') + .click() + cy.getCell(0, 'Shrt_Desc').should('to.contain', 'ALLSPICE,GROUND') + cy.get('#tool-panel').contains('1 matching rows') - // now invert, expect 198 rows - cy.getFacetContainer('Shrt_Desc').find('a[bind="invertButton"]').click() - cy.waitForOrOperation() - cy.get('#tool-panel').contains('198 matching rows') - cy.getFacetContainer('Shrt_Desc') - .find('a[bind="invertButton"]') - .should('have.class', 'facet-mode-inverted') + // now invert, expect 198 rows + cy.getFacetContainer('Shrt_Desc').find('a[bind="invertButton"]').click() + cy.waitForOrOperation() + cy.get('#tool-panel').contains('198 matching rows') + cy.getFacetContainer('Shrt_Desc') + .find('a[bind="invertButton"]') + .should('have.class', 'facet-mode-inverted') - // remove invert - cy.getFacetContainer('Shrt_Desc').find('a[bind="invertButton"]').click() - cy.waitForOrOperation() - cy.get('#tool-panel').contains('1 matching rows') - }) + // remove invert + cy.getFacetContainer('Shrt_Desc').find('a[bind="invertButton"]').click() + cy.waitForOrOperation() + cy.get('#tool-panel').contains('1 matching rows') + }) - it('Test facet reset', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) + it('Test facet reset', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) - // do a basic facetting, expect 1 row - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice-toggle') - .invoke('attr', 'style', 'visibility:visible') - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice') - .contains('ALLSPICE,GROUND') - .parent() - .find('.facet-choice-toggle') - .click() - cy.get('#tool-panel').contains('1 matching rows') + // do a basic facetting, expect 1 row + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice-toggle') + .invoke('attr', 'style', 'visibility:visible') + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice') + .contains('ALLSPICE,GROUND') + .parent() + .find('.facet-choice-toggle') + .click() + cy.get('#tool-panel').contains('1 matching rows') - // now reset, expect 199 - cy.getFacetContainer('Shrt_Desc') - .find('a[bind="resetButton"]') - .contains('reset') - .click() - cy.get('#tool-panel').contains('199 rows') - cy.getFacetContainer('Shrt_Desc') - .find('a[bind="resetButton"]') - .should('not.be.visible') - }) + // now reset, expect 199 + cy.getFacetContainer('Shrt_Desc') + .find('a[bind="resetButton"]') + .contains('reset') + .click() + cy.get('#tool-panel').contains('199 rows') + cy.getFacetContainer('Shrt_Desc') + .find('a[bind="resetButton"]') + .should('not.be.visible') + }) - /** - * This test ensure the refresh button behavior when editing a facet - * The grid is updated with a duplicate on "BUTTER,WITH SALT" - * Then we ensure the number of occurences is respected - */ - it('Test refresh reset', function () { - cy.loadAndVisitProject('food.mini') - cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) + /** + * This test ensure the refresh button behavior when editing a facet + * The grid is updated with a duplicate on "BUTTER,WITH SALT" + * Then we ensure the number of occurences is respected + */ + it('Test refresh reset', function () { + cy.loadAndVisitProject('food.mini') + cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) - cy.get('.facet-choice').should('have.length', 2) - cy.get('.facet-choice:nth-child(1)').contains( - 'BUTTER,WHIPPED,WITH SALT' - ) - cy.get('.facet-choice:nth-child(2)').contains('BUTTER,WITH SALT') + cy.get('.facet-choice').should('have.length', 2) + cy.get('.facet-choice:nth-child(1)').contains( + 'BUTTER,WHIPPED,WITH SALT' + ) + cy.get('.facet-choice:nth-child(2)').contains('BUTTER,WITH SALT') - cy.editCell(1, 'Shrt_Desc', 'BUTTER,WITH SALT') - cy.get('#refine-tabs-facets .browsing-panel-controls-refresh') - .contains('Refresh') - .click() - cy.get('.facet-choice').should('have.length', 1) - cy.get('.facet-choice:first-child').contains('BUTTER,WITH SALT') - cy.getFacetContainer('Shrt_Desc') - .find('.facet-choice-count') - .contains(2) - }) + cy.editCell(1, 'Shrt_Desc', 'BUTTER,WITH SALT') + cy.get('#refine-tabs-facets .browsing-panel-controls-refresh') + .contains('Refresh') + .click() + cy.get('.facet-choice').should('have.length', 1) + cy.get('.facet-choice:first-child').contains('BUTTER,WITH SALT') + cy.getFacetContainer('Shrt_Desc') + .find('.facet-choice-count') + .contains(2) + }) - it('Test facet by choice count', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) - cy.getFacetContainer('Shrt_Desc') - .find('.facet-body-controls') - .contains('Facet by choice counts') - .click() + it('Test facet by choice count', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Shrt_Desc', ['Facet', 'Text facet']) + cy.getFacetContainer('Shrt_Desc') + .find('.facet-body-controls') + .contains('Facet by choice counts') + .click() - cy.get(`#refine-tabs-facets .facets-container .facet-container#facet-1`) - .should('exist') - .contains('Shrt_Desc') - }) + cy.get(`#refine-tabs-facets .facets-container .facet-container#facet-1`) + .should('exist') + .contains('Shrt_Desc') + }) - it('Test the mass edit from a Facet', function () { - cy.loadAndVisitProject('food.small') - cy.columnActionClick('Water', ['Facet', 'Text facet']) + it('Test the mass edit from a Facet', function () { + cy.loadAndVisitProject('food.small') + cy.columnActionClick('Water', ['Facet', 'Text facet']) - cy.getFacetContainer('Water').within(() => { - cy.get('.facet-choice') - .contains('15.87') - .parent() - .trigger('mouseover') - .find('a.facet-choice-edit') - .contains('edit') - .should('be.visible') - .click() - }) + cy.getFacetContainer('Water').within(() => { + cy.get('.facet-choice') + .contains('15.87') + .parent() + .trigger('mouseover') + .find('a.facet-choice-edit') + .contains('edit') + .should('be.visible') + .click() + }) - // mass edit all cells that have Water = 15.87 - cy.get('.data-table-cell-editor textarea').type(50) - cy.get('.data-table-cell-editor button').contains('Apply').click() + // mass edit all cells that have Water = 15.87 + cy.get('.data-table-cell-editor textarea').type(50) + cy.get('.data-table-cell-editor button').contains('Apply').click() - // ensure rows has been modified - cy.getCell(0, 'Water').should('to.contain', 50) - cy.getCell(1, 'Water').should('to.contain', 50) + // ensure rows has been modified + cy.getCell(0, 'Water').should('to.contain', 50) + cy.getCell(1, 'Water').should('to.contain', 50) - // ensure modification is made only to the rows that had 15.87, not the others - cy.getCell(2, 'Water').should('to.contain', 0.24) - }) + // ensure modification is made only to the rows that had 15.87, not the others + cy.getCell(2, 'Water').should('to.contain', 0.24) + }) - // // This test is unstable, mouseover behavior is unpredictable - // // This might be because the element is detached from the DOM in the middle - // // it('Test include/exlude toggle', function () { - // // cy.loadAndVisitProject('food.small'); - // // cy.columnActionClick('NDB_No', ['Facet', 'Text facet']); - // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"]').trigger('mouseover'); - // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').contains('include').should('be.visible'); - // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').click(); - // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').contains('exclude'); - // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').click(); - // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').contains('include'); - // // }); + // // This test is unstable, mouseover behavior is unpredictable + // // This might be because the element is detached from the DOM in the middle + // // it('Test include/exlude toggle', function () { + // // cy.loadAndVisitProject('food.small'); + // // cy.columnActionClick('NDB_No', ['Facet', 'Text facet']); + // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"]').trigger('mouseover'); + // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').contains('include').should('be.visible'); + // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').click(); + // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').contains('exclude'); + // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').click(); + // // cy.getFacetContainer('NDB_No').find('.facet-choice[choiceindex="0"] a.facet-choice-toggle').contains('include'); + // // }); - // it('Test collapsing facet panels', function () { - // The following test does not work - // Because the facet panels uses soem weird CSS with overflow:hidden, Cypress can not detect it - // //// # cy.loadAndVisitProject('food.small'); - // //// # cy.columnActionClick('NDB_No', ['Facet', 'Text facet']); - // //// # ensure facet inner panel is visible - // //// # cy.get('#refine-tabs-facets .facets-container li:nth-child(1) .facet-body-inner').should('be.visible'); - // //// #collapse the panel - // //// # cy.get('#refine-tabs-facets .facets-container li:nth-child(1) a[bind="minimizeButton"]').click(); - // //// + // it('Test collapsing facet panels', function () { + // The following test does not work + // Because the facet panels uses soem weird CSS with overflow:hidden, Cypress can not detect it + // //// # cy.loadAndVisitProject('food.small'); + // //// # cy.columnActionClick('NDB_No', ['Facet', 'Text facet']); + // //// # ensure facet inner panel is visible + // //// # cy.get('#refine-tabs-facets .facets-container li:nth-child(1) .facet-body-inner').should('be.visible'); + // //// #collapse the panel + // //// # cy.get('#refine-tabs-facets .facets-container li:nth-child(1) a[bind="minimizeButton"]').click(); + // //// }) diff --git a/main/tests/cypress/cypress/integration/project/grid/misc/expressions.spec.js b/main/tests/cypress/cypress/integration/project/grid/misc/expressions.spec.js index 992b7aa9d..ccd5ece90 100644 --- a/main/tests/cypress/cypress/integration/project/grid/misc/expressions.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/misc/expressions.spec.js @@ -2,7 +2,7 @@ * Utility method to load an expression panel, used by almost all the tests */ function loadExpressionPanel() { - cy.columnActionClick('Shrt_Desc', ['Facet', 'Custom text facet']) + cy.columnActionClick('Shrt_Desc', ['Facet', 'Custom text facet']) } /** @@ -10,304 +10,304 @@ function loadExpressionPanel() { * Need to wait for OpenRefine to preview the result, hence the cy.wait */ function typeExpression(expression) { - cy.get('textarea.expression-preview-code').type(expression) - cy.wait(250) + cy.get('textarea.expression-preview-code').type(expression) + cy.wait(250) } /** * Generate a unique GREL expression to be used for testing */ function generateUniqueExpression() { - return `value+${Date.now()}` + return `value+${Date.now()}` } describe(__filename, function () { - it('Test the layout of the expression panel', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() + it('Test the layout of the expression panel', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() - cy.get('.dialog-container').within(() => { - cy.get('td[bind="or_dialog_expr"]').contains('Expression') - cy.get( - 'select[bind="expressionPreviewLanguageSelect"] option' - ).should('have.length', 3) - cy.get('textarea.expression-preview-code').should('exist') + cy.get('.dialog-container').within(() => { + cy.get('td[bind="or_dialog_expr"]').contains('Expression') + cy.get( + 'select[bind="expressionPreviewLanguageSelect"] option' + ).should('have.length', 3) + cy.get('textarea.expression-preview-code').should('exist') - cy.get('.dialog-footer button:nth-child(1)').should( - 'to.contain', - 'OK' - ) - cy.get('.dialog-footer button:nth-child(2)').should( - 'to.contain', - 'Cancel' - ) - }) - }) + cy.get('.dialog-footer button:nth-child(1)').should( + 'to.contain', + 'OK' + ) + cy.get('.dialog-footer button:nth-child(2)').should( + 'to.contain', + 'Cancel' + ) + }) + }) - it('Test a valid Grel expression', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - typeExpression('value.toLowercase()') - cy.get('.expression-preview-parsing-status').contains( - 'No syntax error.' - ) - cy.get( - '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' - ).should('to.contain', 'butter,with salt') - }) + it('Test a valid Grel expression', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + typeExpression('value.toLowercase()') + cy.get('.expression-preview-parsing-status').contains( + 'No syntax error.' + ) + cy.get( + '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' + ).should('to.contain', 'butter,with salt') + }) - it('Test a valid Python expression', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('select[bind="expressionPreviewLanguageSelect"]').select( - 'jython' - ) - typeExpression('return value.lower()') - cy.get('.expression-preview-parsing-status').contains( - 'No syntax error.' - ) - cy.get( - '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' - ).should('to.contain', 'butter,with salt') - }) + it('Test a valid Python expression', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('select[bind="expressionPreviewLanguageSelect"]').select( + 'jython' + ) + typeExpression('return value.lower()') + cy.get('.expression-preview-parsing-status').contains( + 'No syntax error.' + ) + cy.get( + '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' + ).should('to.contain', 'butter,with salt') + }) - it('Test a valid Clojure expression', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('select[bind="expressionPreviewLanguageSelect"]').select( - 'clojure' - ) - typeExpression('(.. value (toLowerCase) )') - cy.get('.expression-preview-parsing-status').contains( - 'No syntax error.' - ) - cy.get( - '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' - ).should('to.contain', 'butter,with salt') - }) + it('Test a valid Clojure expression', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('select[bind="expressionPreviewLanguageSelect"]').select( + 'clojure' + ) + typeExpression('(.. value (toLowerCase) )') + cy.get('.expression-preview-parsing-status').contains( + 'No syntax error.' + ) + cy.get( + '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' + ).should('to.contain', 'butter,with salt') + }) - it('Test a Grel syntax error', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - typeExpression('()') - cy.get('.expression-preview-parsing-status').contains('Parsing error') - }) + it('Test a Grel syntax error', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + typeExpression('()') + cy.get('.expression-preview-parsing-status').contains('Parsing error') + }) - it('Test a Python syntax error', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('select[bind="expressionPreviewLanguageSelect"]').select( - 'jython' - ) - typeExpression('(;)') - cy.get('.expression-preview-parsing-status').contains('Internal error') - }) + it('Test a Python syntax error', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('select[bind="expressionPreviewLanguageSelect"]').select( + 'jython' + ) + typeExpression('(;)') + cy.get('.expression-preview-parsing-status').contains('Internal error') + }) - it('Test a Clojure syntax error', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('select[bind="expressionPreviewLanguageSelect"]').select( - 'clojure' - ) - typeExpression('(;)') - cy.get('.expression-preview-parsing-status').contains( - 'Syntax error reading source' - ) - }) + it('Test a Clojure syntax error', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('select[bind="expressionPreviewLanguageSelect"]').select( + 'clojure' + ) + typeExpression('(;)') + cy.get('.expression-preview-parsing-status').contains( + 'Syntax error reading source' + ) + }) - it('Test a Grel language error', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - typeExpression('value.thisGrelFunctionDoesNotExists()') - cy.get('.expression-preview-parsing-status').contains( - 'Unknown function thisGrelFunctionDoesNotExists' - ) - }) + it('Test a Grel language error', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + typeExpression('value.thisGrelFunctionDoesNotExists()') + cy.get('.expression-preview-parsing-status').contains( + 'Unknown function thisGrelFunctionDoesNotExists' + ) + }) - it('Test a Python language error', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('select[bind="expressionPreviewLanguageSelect"]').select( - 'jython' - ) - typeExpression('return value.thisPythonFunctionDoesNotExists()') + it('Test a Python language error', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('select[bind="expressionPreviewLanguageSelect"]').select( + 'jython' + ) + typeExpression('return value.thisPythonFunctionDoesNotExists()') - cy.get( - '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' - ).should('to.contain', 'Error: Traceback') - }) + cy.get( + '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' + ).should('to.contain', 'Error: Traceback') + }) - it('Test a Clojure language error', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('select[bind="expressionPreviewLanguageSelect"]').select( - 'clojure' - ) - typeExpression('(.. value (thisClojureFunctionDoesNotExists) )') - cy.get( - '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' - ).should('to.contain', 'Error: No matching method') - }) + it('Test a Clojure language error', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('select[bind="expressionPreviewLanguageSelect"]').select( + 'clojure' + ) + typeExpression('(.. value (thisClojureFunctionDoesNotExists) )') + cy.get( + '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' + ).should('to.contain', 'Error: No matching method') + }) - it('Test switching from one langage to another', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - typeExpression('(.. value (toLowerCase) )') - // error is expected, this is clojure language - cy.get('.expression-preview-parsing-status').should( - 'to.contain', - 'Parsing error' - ) - // switching to clojure - cy.get('select[bind="expressionPreviewLanguageSelect"]').select( - 'clojure' - ) - cy.get('.expression-preview-parsing-status').should( - 'not.to.contain', - 'Parsing error' - ) - }) + it('Test switching from one langage to another', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + typeExpression('(.. value (toLowerCase) )') + // error is expected, this is clojure language + cy.get('.expression-preview-parsing-status').should( + 'to.contain', + 'Parsing error' + ) + // switching to clojure + cy.get('select[bind="expressionPreviewLanguageSelect"]').select( + 'clojure' + ) + cy.get('.expression-preview-parsing-status').should( + 'not.to.contain', + 'Parsing error' + ) + }) - it('Test the preview (GREL)', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - typeExpression('value.toLowercase()') + it('Test the preview (GREL)', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + typeExpression('value.toLowercase()') - cy.get( - '.expression-preview-table-wrapper tr:nth-child(1) td:last-child' - ).should('to.contain', 'value.toLowercase()') - cy.get( - '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' - ).should('to.contain', 'butter,with salt') - cy.get( - '.expression-preview-table-wrapper tr:nth-child(3) td:last-child' - ).should('to.contain', 'butter,whipped,with salt') - }) + cy.get( + '.expression-preview-table-wrapper tr:nth-child(1) td:last-child' + ).should('to.contain', 'value.toLowercase()') + cy.get( + '.expression-preview-table-wrapper tr:nth-child(2) td:last-child' + ).should('to.contain', 'butter,with salt') + cy.get( + '.expression-preview-table-wrapper tr:nth-child(3) td:last-child' + ).should('to.contain', 'butter,whipped,with salt') + }) - it('Test the help tab', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('#expression-preview-tabs li').contains('Help').click() - cy.get('#expression-preview-tabs-help').should('be.visible') - cy.get('#expression-preview-tabs-help').should( - 'to.contain', - `The current cell. It has a few fields: 'value', 'recon' and 'errorMessage'.` - ) - }) + it('Test the help tab', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('#expression-preview-tabs li').contains('Help').click() + cy.get('#expression-preview-tabs-help').should('be.visible') + cy.get('#expression-preview-tabs-help').should( + 'to.contain', + `The current cell. It has a few fields: 'value', 'recon' and 'errorMessage'.` + ) + }) - it('Test the history behavior, ensure expressions are stored', function () { - cy.loadAndVisitProject('food.mini') - // Because history is shared across projects, we need to use an expression that is unique + it('Test the history behavior, ensure expressions are stored', function () { + cy.loadAndVisitProject('food.mini') + // Because history is shared across projects, we need to use an expression that is unique - // Use a first unique expression - const uniqueExpression = generateUniqueExpression() - loadExpressionPanel() - typeExpression(uniqueExpression) - cy.get('.dialog-footer button').contains('OK').click() - // ensure the function has been added to the facet - cy.get('#refine-tabs-facets').contains( - uniqueExpression.replace('()', '') - ) + // Use a first unique expression + const uniqueExpression = generateUniqueExpression() + loadExpressionPanel() + typeExpression(uniqueExpression) + cy.get('.dialog-footer button').contains('OK').click() + // ensure the function has been added to the facet + cy.get('#refine-tabs-facets').contains( + uniqueExpression.replace('()', '') + ) - // Reload and review history - // Ensure the previously used expression is listed - loadExpressionPanel() - cy.get('#expression-preview-tabs li').contains('History').click() - cy.get('#expression-preview-tabs-history') - .should('be.visible') - .should('to.contain', uniqueExpression) - }) + // Reload and review history + // Ensure the previously used expression is listed + loadExpressionPanel() + cy.get('#expression-preview-tabs li').contains('History').click() + cy.get('#expression-preview-tabs-history') + .should('be.visible') + .should('to.contain', uniqueExpression) + }) - it('Test the reuse of expressions from the history', function () { - cy.loadAndVisitProject('food.mini') - // Because history is shared across projects, we need to build and use an expression that is unique - const uniqueExpression = generateUniqueExpression() - loadExpressionPanel() - typeExpression(uniqueExpression) - cy.get('.dialog-footer button').contains('OK').click() - cy.get('#refine-tabs-facets').contains( - uniqueExpression.replace('()', '') - ) + it('Test the reuse of expressions from the history', function () { + cy.loadAndVisitProject('food.mini') + // Because history is shared across projects, we need to build and use an expression that is unique + const uniqueExpression = generateUniqueExpression() + loadExpressionPanel() + typeExpression(uniqueExpression) + cy.get('.dialog-footer button').contains('OK').click() + cy.get('#refine-tabs-facets').contains( + uniqueExpression.replace('()', '') + ) - // Reload and review history - // Ensure the previously used expression is there - // Use it - loadExpressionPanel() - cy.get('#expression-preview-tabs li').contains('History').click() - cy.get('#expression-preview-tabs-history tr td') - .contains(uniqueExpression) - .parent() - .find('a') - .contains('Reuse') - .click() + // Reload and review history + // Ensure the previously used expression is there + // Use it + loadExpressionPanel() + cy.get('#expression-preview-tabs li').contains('History').click() + cy.get('#expression-preview-tabs-history tr td') + .contains(uniqueExpression) + .parent() + .find('a') + .contains('Reuse') + .click() - // Expression must be populated in the textarea, after clicking on 'reuse' - cy.get('textarea.expression-preview-code').should( - 'have.value', - uniqueExpression - ) - }) + // Expression must be populated in the textarea, after clicking on 'reuse' + cy.get('textarea.expression-preview-code').should( + 'have.value', + uniqueExpression + ) + }) - it('Test the history, star', function () { - cy.loadAndVisitProject('food.mini') + it('Test the history, star', function () { + cy.loadAndVisitProject('food.mini') - // Cleanup step - // Because starred expression are shared across projects, see #3499 - // We need to un-star all previously starred expressions - loadExpressionPanel() - cy.get('#expression-preview-tabs li').contains('Starred').click() - cy.get( - '#expression-preview-tabs-starred .expression-preview-table-wrapper table' - ).then(($table) => { - if ($table.find('tr').length > 1) { - cy.get( - '#expression-preview-tabs-starred .expression-preview-table-wrapper table a' - ) - .contains('Remove') - .each(($btn) => { - cy.wrap($btn).click() - cy.get('.dialog-container:last-child button') - .contains('OK') - .click() - }) - } - }) - cy.get('.dialog-footer button').contains('Cancel').click() - // End cleanup + // Cleanup step + // Because starred expression are shared across projects, see #3499 + // We need to un-star all previously starred expressions + loadExpressionPanel() + cy.get('#expression-preview-tabs li').contains('Starred').click() + cy.get( + '#expression-preview-tabs-starred .expression-preview-table-wrapper table' + ).then(($table) => { + if ($table.find('tr').length > 1) { + cy.get( + '#expression-preview-tabs-starred .expression-preview-table-wrapper table a' + ) + .contains('Remove') + .each(($btn) => { + cy.wrap($btn).click() + cy.get('.dialog-container:last-child button') + .contains('OK') + .click() + }) + } + }) + cy.get('.dialog-footer button').contains('Cancel').click() + // End cleanup - // Load an expression - loadExpressionPanel() - const uniqueExpression = generateUniqueExpression() - typeExpression(uniqueExpression) - cy.get('.dialog-footer button').contains('OK').click() + // Load an expression + loadExpressionPanel() + const uniqueExpression = generateUniqueExpression() + typeExpression(uniqueExpression) + cy.get('.dialog-footer button').contains('OK').click() - // Star the expression - loadExpressionPanel() - cy.get('#expression-preview-tabs li').contains('History').click() - cy.get('.expression-preview-table-wrapper tr td') - .contains(uniqueExpression) - .parent() - .find('a.data-table-star-off') - .click() + // Star the expression + loadExpressionPanel() + cy.get('#expression-preview-tabs li').contains('History').click() + cy.get('.expression-preview-table-wrapper tr td') + .contains(uniqueExpression) + .parent() + .find('a.data-table-star-off') + .click() - // List starred expressions, en ensure the expression is listed - cy.get('#expression-preview-tabs li').contains('Starred').click() - cy.get( - '#expression-preview-tabs-starred .expression-preview-table-wrapper table' - ).contains(uniqueExpression) - }) + // List starred expressions, en ensure the expression is listed + cy.get('#expression-preview-tabs li').contains('Starred').click() + cy.get( + '#expression-preview-tabs-starred .expression-preview-table-wrapper table' + ).contains(uniqueExpression) + }) - it('Simple test to ensure the expression panel can be closed with OK', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('.dialog-footer button').contains('OK').click() - cy.get('.dialog-container').should('not.to.exist') - }) + it('Simple test to ensure the expression panel can be closed with OK', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('.dialog-footer button').contains('OK').click() + cy.get('.dialog-container').should('not.to.exist') + }) - it('Simple test to ensure the expression panel can be closed with Cancel', function () { - cy.loadAndVisitProject('food.mini') - loadExpressionPanel() - cy.get('.dialog-footer button').contains('Cancel').click() - cy.get('.dialog-container').should('not.to.exist') - }) + it('Simple test to ensure the expression panel can be closed with Cancel', function () { + cy.loadAndVisitProject('food.mini') + loadExpressionPanel() + cy.get('.dialog-footer button').contains('Cancel').click() + cy.get('.dialog-container').should('not.to.exist') + }) }) From 002d795c4307f1d9c7219e719d144d48c7a32c98 Mon Sep 17 00:00:00 2001 From: akshitasingh Date: Sat, 6 Feb 2021 11:41:02 +0530 Subject: [PATCH 3/4] tests fixed --- .../column/edit-cells/common-transforms/proper-display.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js index 2fe90956e..45ab89cc9 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js @@ -1,5 +1,5 @@ describe(__filename, function () { - it('Ensure multiple whitespaces are collapsed', function () { + it('proper tag assingnment to each text snippet', function () { const fixture = [ ['tests'], ['2021-01-31https://www.google.com'], From 44d019a014a2a1fff19c757677be359dd6aec422 Mon Sep 17 00:00:00 2001 From: singhakshita <52077474+singhakshita@users.noreply.github.com> Date: Sat, 6 Feb 2021 21:35:20 +0530 Subject: [PATCH 4/4] Update main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js Co-authored-by: Thad Guidry --- .../column/edit-cells/common-transforms/proper-display.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js index 45ab89cc9..24465cc2d 100644 --- a/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js +++ b/main/tests/cypress/cypress/integration/project/grid/column/edit-cells/common-transforms/proper-display.spec.js @@ -1,5 +1,5 @@ describe(__filename, function () { - it('proper tag assingnment to each text snippet', function () { + it('verify href tags created for URLs within cell text', function () { const fixture = [ ['tests'], ['2021-01-31https://www.google.com'],