From ceb743d2f4f859d51c0106e9d0fe43ba5fc554cb Mon Sep 17 00:00:00 2001 From: Ramon Souza Date: Wed, 15 Jun 2022 10:09:44 -0300 Subject: [PATCH 1/6] chore: add nyc and babel-plugin-instanbul --- apps/meteor/.babelrc | 3 + apps/meteor/package.json | 2 + yarn.lock | 250 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 253 insertions(+), 2 deletions(-) diff --git a/apps/meteor/.babelrc b/apps/meteor/.babelrc index b9359fe771b4..a8c20b400ca5 100644 --- a/apps/meteor/.babelrc +++ b/apps/meteor/.babelrc @@ -2,5 +2,8 @@ "presets": [ "@babel/preset-env", "@babel/preset-react" + ], + "plugins": [ + "babel-plugin-istanbul" ] } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index f73336794d10..cdec4404dfc3 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -139,6 +139,7 @@ "babel-eslint": "^10.1.0", "babel-loader": "^8.2.5", "babel-plugin-array-includes": "^2.0.3", + "babel-plugin-istanbul": "^6.1.1", "chai": "^4.3.6", "chai-datetime": "^1.8.0", "chai-dom": "^1.11.0", @@ -157,6 +158,7 @@ "jsdom-global": "^3.0.2", "mocha": "^9.2.2", "mock-require": "^3.0.3", + "nyc": "^15.1.0", "outdent": "~0.8.0", "pino-pretty": "^7.6.1", "postcss": "~8.4.12", diff --git a/yarn.lock b/yarn.lock index 8509f25ad3cc..8d6635f506ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3845,6 +3845,7 @@ __metadata: babel-eslint: ^10.1.0 babel-loader: ^8.2.5 babel-plugin-array-includes: ^2.0.3 + babel-plugin-istanbul: ^6.1.1 bad-words: ^3.0.4 bcrypt: ^5.0.1 body-parser: 1.20.0 @@ -3942,6 +3943,7 @@ __metadata: node-gcm: 1.0.5 node-rsa: ^1.1.1 nodemailer: ^6.7.3 + nyc: ^15.1.0 object-path: ^0.11.8 outdent: ~0.8.0 path: ^0.12.7 @@ -7907,6 +7909,15 @@ __metadata: languageName: node linkType: hard +"append-transform@npm:^2.0.0": + version: 2.0.0 + resolution: "append-transform@npm:2.0.0" + dependencies: + default-require-extensions: ^3.0.0 + checksum: f26f393bf7a428fd1bb18f2758a819830a582243310c5170edb3f98fdc5a535333d02b952f7c2d9b14522bd8ead5b132a0b15000eca18fa9f49172963ebbc231 + languageName: node + linkType: hard + "application-config-path@npm:^0.1.0": version: 0.1.0 resolution: "application-config-path@npm:0.1.0" @@ -7987,6 +7998,13 @@ __metadata: languageName: node linkType: hard +"archy@npm:^1.0.0": + version: 1.0.0 + resolution: "archy@npm:1.0.0" + checksum: 504ae7af655130bab9f471343cfdb054feaec7d8e300e13348bc9fe9e660f83d422e473069584f73233c701ae37d1c8452ff2522f2a20c38849e0f406f1732ac + languageName: node + linkType: hard + "are-we-there-yet@npm:^2.0.0": version: 2.0.0 resolution: "are-we-there-yet@npm:2.0.0" @@ -9799,6 +9817,18 @@ __metadata: languageName: node linkType: hard +"caching-transform@npm:^4.0.0": + version: 4.0.0 + resolution: "caching-transform@npm:4.0.0" + dependencies: + hasha: ^5.0.0 + make-dir: ^3.0.0 + package-hash: ^4.0.0 + write-file-atomic: ^3.0.0 + checksum: c4db6939533b677866808de67c32f0aaf8bf4fd3e3b8dc957e5d630c007c06b7f11512d44c38a38287fb068e931067e8da9019c34d787259a44121c9a6b87a1f + languageName: node + linkType: hard + "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -10505,6 +10535,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^6.0.0": + version: 6.0.0 + resolution: "cliui@npm:6.0.0" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^6.2.0 + checksum: 4fcfd26d292c9f00238117f39fc797608292ae36bac2168cfee4c85923817d0607fe21b3329a8621e01aedf512c99b7eaa60e363a671ffd378df6649fb48ae42 + languageName: node + linkType: hard + "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -12246,6 +12287,15 @@ __metadata: languageName: node linkType: hard +"default-require-extensions@npm:^3.0.0": + version: 3.0.0 + resolution: "default-require-extensions@npm:3.0.0" + dependencies: + strip-bom: ^4.0.0 + checksum: 0b5bdb6786ebb0ff6ef55386f37c8d221963fbbd3009588fe71032c85ca16da05eff2ad01bfe9bfc8bac5ce95a18f66b38c50d454482e3e9d2de1142424a3e7c + languageName: node + linkType: hard + "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -13341,6 +13391,13 @@ __metadata: languageName: node linkType: hard +"es6-error@npm:^4.0.1": + version: 4.1.1 + resolution: "es6-error@npm:4.1.1" + checksum: ae41332a51ec1323da6bbc5d75b7803ccdeddfae17c41b6166ebbafc8e8beb7a7b80b884b7fab1cc80df485860ac3c59d78605e860bb4f8cd816b3d6ade0d010 + languageName: node + linkType: hard + "es6-object-assign@npm:^1.1.0": version: 1.1.0 resolution: "es6-object-assign@npm:1.1.0" @@ -14803,7 +14860,7 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^3.3.1, find-cache-dir@npm:^3.3.2": +"find-cache-dir@npm:^3.2.0, find-cache-dir@npm:^3.3.1, find-cache-dir@npm:^3.3.2": version: 3.3.2 resolution: "find-cache-dir@npm:3.3.2" dependencies: @@ -15196,6 +15253,13 @@ __metadata: languageName: node linkType: hard +"fromentries@npm:^1.2.0": + version: 1.3.2 + resolution: "fromentries@npm:1.3.2" + checksum: 33729c529ce19f5494f846f0dd4945078f4e37f4e8955f4ae8cc7385c218f600e9d93a7d225d17636c20d1889106fd87061f911550861b7072f53bf891e6b341 + languageName: node + linkType: hard + "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -16439,6 +16503,16 @@ __metadata: languageName: node linkType: hard +"hasha@npm:^5.0.0": + version: 5.2.2 + resolution: "hasha@npm:5.2.2" + dependencies: + is-stream: ^2.0.0 + type-fest: ^0.8.0 + checksum: 06cc474bed246761ff61c19d629977eb5f53fa817be4313a255a64ae0f433e831a29e83acb6555e3f4592b348497596f1d1653751008dda4f21c9c21ca60ac5a + languageName: node + linkType: hard + "hast-to-hyperscript@npm:^9.0.0": version: 9.0.1 resolution: "hast-to-hyperscript@npm:9.0.1" @@ -18584,6 +18658,27 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-hook@npm:^3.0.0": + version: 3.0.0 + resolution: "istanbul-lib-hook@npm:3.0.0" + dependencies: + append-transform: ^2.0.0 + checksum: ac4d0a0751e959cfe4c95d817df5f1f573f9b0cf892552e60d81785654291391fac1ceb667f13bb17fcc2ef23b74c89ed8cf1c6148c833c8596a2b920b079101 + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^4.0.0": + version: 4.0.3 + resolution: "istanbul-lib-instrument@npm:4.0.3" + dependencies: + "@babel/core": ^7.7.5 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.0.0 + semver: ^6.3.0 + checksum: fa1171d3022b1bb8f6a734042620ac5d9ee7dc80f3065a0bb12863e9f0494d0eefa3d86608fcc0254ab2765d29d7dad8bdc42e5f8df2f9a1fbe85ccc59d76cb9 + languageName: node + linkType: hard + "istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": version: 5.1.0 resolution: "istanbul-lib-instrument@npm:5.1.0" @@ -18597,6 +18692,20 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-processinfo@npm:^2.0.2": + version: 2.0.3 + resolution: "istanbul-lib-processinfo@npm:2.0.3" + dependencies: + archy: ^1.0.0 + cross-spawn: ^7.0.3 + istanbul-lib-coverage: ^3.2.0 + p-map: ^3.0.0 + rimraf: ^3.0.0 + uuid: ^8.3.2 + checksum: 501729e809a4e98bbb9f62f89cae924be81655a7ff8118661f8834a10bb89ed5d3a5099ea0b6555e1a8ee15a0099cb64f7170b89aae155ab2afacfe8dd94421a + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-report@npm:3.0.0" @@ -20178,6 +20287,13 @@ __metadata: languageName: node linkType: hard +"lodash.flattendeep@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.flattendeep@npm:4.4.0" + checksum: 8521c919acac3d4bcf0aaf040c1ca9cb35d6c617e2d72e9b4d51c9a58b4366622cd6077441a18be626c3f7b28227502b3bf042903d447b056ee7e0b11d45c722 + languageName: node + linkType: hard + "lodash.get@npm:^4.4.2": version: 4.4.2 resolution: "lodash.get@npm:4.4.2" @@ -22394,6 +22510,15 @@ __metadata: languageName: node linkType: hard +"node-preload@npm:^0.2.1": + version: 0.2.1 + resolution: "node-preload@npm:0.2.1" + dependencies: + process-on-spawn: ^1.0.0 + checksum: 4586f91ac7417b33accce0ac629fb60f642d0c8d212b3c536dc3dda37fe54f8a3b858273380e1036e41a65d85470332c358315d2288e6584260d620fb4b00fb3 + languageName: node + linkType: hard + "node-releases@npm:^2.0.5": version: 2.0.5 resolution: "node-releases@npm:2.0.5" @@ -22707,6 +22832,43 @@ __metadata: languageName: node linkType: hard +"nyc@npm:^15.1.0": + version: 15.1.0 + resolution: "nyc@npm:15.1.0" + dependencies: + "@istanbuljs/load-nyc-config": ^1.0.0 + "@istanbuljs/schema": ^0.1.2 + caching-transform: ^4.0.0 + convert-source-map: ^1.7.0 + decamelize: ^1.2.0 + find-cache-dir: ^3.2.0 + find-up: ^4.1.0 + foreground-child: ^2.0.0 + get-package-type: ^0.1.0 + glob: ^7.1.6 + istanbul-lib-coverage: ^3.0.0 + istanbul-lib-hook: ^3.0.0 + istanbul-lib-instrument: ^4.0.0 + istanbul-lib-processinfo: ^2.0.2 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.0.2 + make-dir: ^3.0.0 + node-preload: ^0.2.1 + p-map: ^3.0.0 + process-on-spawn: ^1.0.0 + resolve-from: ^5.0.0 + rimraf: ^3.0.0 + signal-exit: ^3.0.2 + spawn-wrap: ^2.0.0 + test-exclude: ^6.0.0 + yargs: ^15.0.2 + bin: + nyc: bin/nyc.js + checksum: 82a7031982df2fd6ab185c9f1b5d032b6221846268007b45b5773c6582e776ab33e96cd22b4231520345942fcef69b4339bd967675b8483f3fa255b56326faef + languageName: node + linkType: hard + "oauth-sign@npm:~0.9.0": version: 0.9.0 resolution: "oauth-sign@npm:0.9.0" @@ -23464,6 +23626,18 @@ __metadata: languageName: node linkType: hard +"package-hash@npm:^4.0.0": + version: 4.0.0 + resolution: "package-hash@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.15 + hasha: ^5.0.0 + lodash.flattendeep: ^4.4.0 + release-zalgo: ^1.0.0 + checksum: 32c49e3a0e1c4a33b086a04cdd6d6e570aee019cb8402ec16476d9b3564a40e38f91ce1a1f9bc88b08f8ef2917a11e0b786c08140373bdf609ea90749031e6fc + languageName: node + linkType: hard + "package-json@npm:^4.0.0": version: 4.0.1 resolution: "package-json@npm:4.0.1" @@ -25145,6 +25319,15 @@ __metadata: languageName: node linkType: hard +"process-on-spawn@npm:^1.0.0": + version: 1.0.0 + resolution: "process-on-spawn@npm:1.0.0" + dependencies: + fromentries: ^1.2.0 + checksum: 597769e3db6a8e2cb1cd64a952bbc150220588debac31c7cf1a9f620ce981e25583d8d70848d8a14953577608512984a8808c3be77e09af8ebdcdc14ec23a295 + languageName: node + linkType: hard + "process-warning@npm:^1.0.0": version: 1.0.0 resolution: "process-warning@npm:1.0.0" @@ -26560,6 +26743,15 @@ __metadata: languageName: node linkType: hard +"release-zalgo@npm:^1.0.0": + version: 1.0.0 + resolution: "release-zalgo@npm:1.0.0" + dependencies: + es6-error: ^4.0.1 + checksum: b59849dc310f6c426f34e308c48ba83df3d034ddef75189951723bb2aac99d29d15f5e127edad951c4095fc9025aa582053907154d68fe0c5380cd6a75365e53 + languageName: node + linkType: hard + "remark-external-links@npm:^8.0.0": version: 8.0.0 resolution: "remark-external-links@npm:8.0.0" @@ -28255,6 +28447,20 @@ __metadata: languageName: node linkType: hard +"spawn-wrap@npm:^2.0.0": + version: 2.0.0 + resolution: "spawn-wrap@npm:2.0.0" + dependencies: + foreground-child: ^2.0.0 + is-windows: ^1.0.2 + make-dir: ^3.0.0 + rimraf: ^3.0.0 + signal-exit: ^3.0.2 + which: ^2.0.1 + checksum: 5a518e37620def6d516b86207482a4f76bcf3c37c57d8d886d9fa399b04e5668d11fd12817b178029b02002a5ebbd09010374307effa821ba39594042f0a2d96 + languageName: node + linkType: hard + "spdx-correct@npm:^3.0.0": version: 3.1.1 resolution: "spdx-correct@npm:3.1.1" @@ -30451,7 +30657,7 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.8.1": +"type-fest@npm:^0.8.0, type-fest@npm:^0.8.1": version: 0.8.1 resolution: "type-fest@npm:0.8.1" checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 @@ -32054,6 +32260,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a + languageName: node + linkType: hard + "wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -32426,6 +32643,16 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^18.1.2": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: ^5.0.0 + decamelize: ^1.2.0 + checksum: 60e8c7d1b85814594d3719300ecad4e6ae3796748b0926137bfec1f3042581b8646d67e83c6fc80a692ef08b8390f21ddcacb9464476c39bbdf52e34961dd4d9 + languageName: node + linkType: hard + "yargs-unparser@npm:2.0.0": version: 2.0.0 resolution: "yargs-unparser@npm:2.0.0" @@ -32471,6 +32698,25 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^15.0.2": + version: 15.4.1 + resolution: "yargs@npm:15.4.1" + dependencies: + cliui: ^6.0.0 + decamelize: ^1.2.0 + find-up: ^4.1.0 + get-caller-file: ^2.0.1 + require-directory: ^2.1.1 + require-main-filename: ^2.0.0 + set-blocking: ^2.0.0 + string-width: ^4.2.0 + which-module: ^2.0.0 + y18n: ^4.0.0 + yargs-parser: ^18.1.2 + checksum: 40b974f508d8aed28598087720e086ecd32a5fd3e945e95ea4457da04ee9bdb8bdd17fd91acff36dc5b7f0595a735929c514c40c402416bbb87c03f6fb782373 + languageName: node + linkType: hard + "yargs@npm:^2.1.1": version: 2.3.0 resolution: "yargs@npm:2.3.0" From 600e1dfe74492c448d71ac3c54668ee933c897ad Mon Sep 17 00:00:00 2001 From: Ramon Souza Date: Wed, 15 Jun 2022 10:10:28 -0300 Subject: [PATCH 2/6] chore: ensure playwright uses chrome --- apps/meteor/playwright.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/meteor/playwright.config.ts b/apps/meteor/playwright.config.ts index 8401640d940e..f702b2a123fe 100644 --- a/apps/meteor/playwright.config.ts +++ b/apps/meteor/playwright.config.ts @@ -21,6 +21,7 @@ const config: PlaywrightTestConfig = { screenshot: 'only-on-failure', trace: 'retain-on-failure', baseURL, + browserName: 'chromium', }, outputDir: 'tests/e2e/test-failures', reporter: [['list']], From 2331be88151de1498e2ca85ce9c5cf37c707c7a6 Mon Sep 17 00:00:00 2001 From: Ramon Souza Date: Wed, 15 Jun 2022 10:17:36 -0300 Subject: [PATCH 3/6] chore: rename e2e script name --- .github/workflows/build_and_test.yml | 4 ++-- apps/meteor/package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ecfb34c5b1e8..ebcca87f8785 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -249,7 +249,7 @@ jobs: cd ./apps/meteor echo -e 'pcm.!default {\n type hw\n card 0\n}\n\nctl.!default {\n type hw\n card 0\n}' > ~/.asoundrc Xvfb -screen 0 1024x768x24 :99 & - docker exec mongo mongo rocketchat --eval 'db.dropDatabase()' && npm run testci -- --test=test:playwright + docker exec mongo mongo rocketchat --eval 'db.dropDatabase()' && npm run testci -- --test=test:e2e - name: Store playwright test trace uses: actions/upload-artifact@v2 @@ -359,7 +359,7 @@ jobs: cd ./apps/meteor - docker exec mongo mongo rocketchat --eval 'db.dropDatabase()' && npm run testci -- --enterprise --test=test:playwright:ee + docker exec mongo mongo rocketchat --eval 'db.dropDatabase()' && npm run testci -- --enterprise --test=test:e2e:ee - name: Store playwright test trace uses: actions/upload-artifact@v2 diff --git a/apps/meteor/package.json b/apps/meteor/package.json index cdec4404dfc3..eeb0dbaede3a 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -32,8 +32,8 @@ "deploy": "npm run build && pm2 startOrRestart pm2.json", "coverage": "nyc -r html mocha --config ./.mocharc.js", "testci": "node .scripts/start.js", - "test:playwright": "playwright test", - "test:playwright:ee": "cross-env ENTERPRISE=true yarn test:playwright", + "test:e2e": "playwright test", + "test:e2e:ee": "cross-env ENTERPRISE=true yarn test:playwright", "testapi": "mocha --config ./.mocharc.api.js", "testunit": "npm run .testunit:definition && npm run .testunit:client && npm run .testunit:server", ".testunit:server": "mocha --config ./.mocharc.js", From 0712e984bcb16ed282a2b567b04d08781e63716a Mon Sep 17 00:00:00 2001 From: Ramon Souza Date: Wed, 15 Jun 2022 10:19:31 -0300 Subject: [PATCH 4/6] chore: add E2E_COVERAGE env var --- apps/meteor/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/package.json b/apps/meteor/package.json index eeb0dbaede3a..b812167a33da 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -33,7 +33,7 @@ "coverage": "nyc -r html mocha --config ./.mocharc.js", "testci": "node .scripts/start.js", "test:e2e": "playwright test", - "test:e2e:ee": "cross-env ENTERPRISE=true yarn test:playwright", + "test:e2e:ee": "cross-env ENTERPRISE=true E2E_COVERAGE=true yarn test:playwright", "testapi": "mocha --config ./.mocharc.api.js", "testunit": "npm run .testunit:definition && npm run .testunit:client && npm run .testunit:server", ".testunit:server": "mocha --config ./.mocharc.js", From 7a52492a21bf35745400c9bcade962aca7b581ea Mon Sep 17 00:00:00 2001 From: Ramon Souza Date: Wed, 15 Jun 2022 10:23:31 -0300 Subject: [PATCH 5/6] feat: create custom pw test --- apps/meteor/tests/e2e/00-wizard.spec.ts | 3 +- .../tests/e2e/01-forgot-password.spec.ts | 3 +- apps/meteor/tests/e2e/02-register.spec.ts | 3 +- apps/meteor/tests/e2e/03-login.spec.ts | 3 +- .../tests/e2e/04-main-elements-render.spec.ts | 3 +- .../tests/e2e/05-channel-creation.spec.ts | 2 +- apps/meteor/tests/e2e/06-messaging.spec.ts | 3 +- apps/meteor/tests/e2e/07-emoji.spec.ts | 3 +- apps/meteor/tests/e2e/08-resolutions.spec.ts | 3 +- apps/meteor/tests/e2e/09-channel.spec.ts | 3 +- .../tests/e2e/10-user-preferences.spec.ts | 2 +- apps/meteor/tests/e2e/11-admin.spec.ts | 3 +- apps/meteor/tests/e2e/12-settings.spec.ts | 3 +- apps/meteor/tests/e2e/13-permissions.spec.ts | 3 +- .../tests/e2e/14-setting-permissions.spec.ts | 2 +- .../meteor/tests/e2e/15-message-popup.spec.ts | 3 +- apps/meteor/tests/e2e/16-discussion.spec.ts | 3 +- .../tests/e2e/omnichannel-agents.spec.ts | 3 +- .../e2e/omnichannel-departaments.spec.ts | 3 +- apps/meteor/tests/e2e/utils/test.ts | 36 +++++++++++++++++++ 20 files changed, 63 insertions(+), 27 deletions(-) create mode 100644 apps/meteor/tests/e2e/utils/test.ts diff --git a/apps/meteor/tests/e2e/00-wizard.spec.ts b/apps/meteor/tests/e2e/00-wizard.spec.ts index ee404312d180..904b353a7ccc 100644 --- a/apps/meteor/tests/e2e/00-wizard.spec.ts +++ b/apps/meteor/tests/e2e/00-wizard.spec.ts @@ -1,5 +1,4 @@ -import { test, expect } from '@playwright/test'; - +import { test, expect } from './utils/test'; import { VALID_EMAIL, adminLogin } from './utils/mocks/userAndPasswordMock'; import { setupWizardStepRegex } from './utils/mocks/urlMock'; import { HOME_SELECTOR } from './utils/mocks/waitSelectorsMock'; diff --git a/apps/meteor/tests/e2e/01-forgot-password.spec.ts b/apps/meteor/tests/e2e/01-forgot-password.spec.ts index 3f2c1edeb03e..183b7fffc942 100644 --- a/apps/meteor/tests/e2e/01-forgot-password.spec.ts +++ b/apps/meteor/tests/e2e/01-forgot-password.spec.ts @@ -1,5 +1,4 @@ -import { test, expect } from '@playwright/test'; - +import { test, expect } from './utils/test'; import { Global, LoginPage } from './pageobjects'; import { VALID_EMAIL, INVALID_EMAIL, INVALID_EMAIL_WITHOUT_MAIL_PROVIDER } from './utils/mocks/userAndPasswordMock'; diff --git a/apps/meteor/tests/e2e/02-register.spec.ts b/apps/meteor/tests/e2e/02-register.spec.ts index ec81337f05e7..26d05d296e34 100644 --- a/apps/meteor/tests/e2e/02-register.spec.ts +++ b/apps/meteor/tests/e2e/02-register.spec.ts @@ -1,5 +1,4 @@ -import { test } from '@playwright/test'; - +import { test } from './utils/test'; import { registerUser, WRONG_PASSWORD } from './utils/mocks/userAndPasswordMock'; import { LoginPage } from './pageobjects'; diff --git a/apps/meteor/tests/e2e/03-login.spec.ts b/apps/meteor/tests/e2e/03-login.spec.ts index 17b8a558e8ba..eed853bee167 100644 --- a/apps/meteor/tests/e2e/03-login.spec.ts +++ b/apps/meteor/tests/e2e/03-login.spec.ts @@ -1,5 +1,4 @@ -import { test, expect } from '@playwright/test'; - +import { test, expect } from './utils/test'; import { validUser } from './utils/mocks/userAndPasswordMock'; import { Global, LoginPage } from './pageobjects'; import { HOME_SELECTOR } from './utils/mocks/waitSelectorsMock'; diff --git a/apps/meteor/tests/e2e/04-main-elements-render.spec.ts b/apps/meteor/tests/e2e/04-main-elements-render.spec.ts index 7f3106d813b5..feb27c332432 100644 --- a/apps/meteor/tests/e2e/04-main-elements-render.spec.ts +++ b/apps/meteor/tests/e2e/04-main-elements-render.spec.ts @@ -1,5 +1,4 @@ -import { test, expect } from '@playwright/test'; - +import { test, expect } from './utils/test'; import { LoginPage, FlexTab, SideNav, MainContent } from './pageobjects'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; diff --git a/apps/meteor/tests/e2e/05-channel-creation.spec.ts b/apps/meteor/tests/e2e/05-channel-creation.spec.ts index 8a5ca373d87a..7db57b1ba849 100644 --- a/apps/meteor/tests/e2e/05-channel-creation.spec.ts +++ b/apps/meteor/tests/e2e/05-channel-creation.spec.ts @@ -1,6 +1,6 @@ -import { test } from '@playwright/test'; import { faker } from '@faker-js/faker'; +import { test } from './utils/test'; import { LoginPage, ChannelCreation } from './pageobjects'; import { validUserInserted, ROCKET_CAT } from './utils/mocks/userAndPasswordMock'; diff --git a/apps/meteor/tests/e2e/06-messaging.spec.ts b/apps/meteor/tests/e2e/06-messaging.spec.ts index 694465574c6c..835ccc264d76 100644 --- a/apps/meteor/tests/e2e/06-messaging.spec.ts +++ b/apps/meteor/tests/e2e/06-messaging.spec.ts @@ -1,5 +1,6 @@ -import { expect, test, Browser } from '@playwright/test'; +import { Browser } from '@playwright/test'; +import { expect, test } from './utils/test'; import { FlexTab, MainContent, SideNav, LoginPage } from './pageobjects'; import { adminLogin, validUserInserted } from './utils/mocks/userAndPasswordMock'; diff --git a/apps/meteor/tests/e2e/07-emoji.spec.ts b/apps/meteor/tests/e2e/07-emoji.spec.ts index da2bdc52cc17..c78ee8a6bbf4 100644 --- a/apps/meteor/tests/e2e/07-emoji.spec.ts +++ b/apps/meteor/tests/e2e/07-emoji.spec.ts @@ -1,5 +1,4 @@ -import { test, expect } from '@playwright/test'; - +import { test, expect } from './utils/test'; import { SideNav, MainContent, LoginPage } from './pageobjects'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; diff --git a/apps/meteor/tests/e2e/08-resolutions.spec.ts b/apps/meteor/tests/e2e/08-resolutions.spec.ts index d7e5dd9648e1..9f866ade5f2d 100644 --- a/apps/meteor/tests/e2e/08-resolutions.spec.ts +++ b/apps/meteor/tests/e2e/08-resolutions.spec.ts @@ -1,5 +1,6 @@ -import { test, expect, Browser } from '@playwright/test'; +import { Browser } from '@playwright/test'; +import { expect, test } from './utils/test'; import { Global, MainContent, SideNav, LoginPage } from './pageobjects'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; diff --git a/apps/meteor/tests/e2e/09-channel.spec.ts b/apps/meteor/tests/e2e/09-channel.spec.ts index cc5d989e98bf..8f834b1361a7 100644 --- a/apps/meteor/tests/e2e/09-channel.spec.ts +++ b/apps/meteor/tests/e2e/09-channel.spec.ts @@ -1,5 +1,4 @@ -import { test, expect } from '@playwright/test'; - +import { test, expect } from './utils/test'; import { Global, FlexTab, MainContent, SideNav, LoginPage } from './pageobjects'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; import { LOCALHOST } from './utils/mocks/urlMock'; diff --git a/apps/meteor/tests/e2e/10-user-preferences.spec.ts b/apps/meteor/tests/e2e/10-user-preferences.spec.ts index 864cbcd6c238..3500ee1c6426 100644 --- a/apps/meteor/tests/e2e/10-user-preferences.spec.ts +++ b/apps/meteor/tests/e2e/10-user-preferences.spec.ts @@ -1,6 +1,6 @@ -import { test, expect } from '@playwright/test'; import faker from '@faker-js/faker'; +import { test, expect } from './utils/test'; import { PreferencesMainContent, MainContent, SideNav, LoginPage, FlexTab } from './pageobjects'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; import { clearMessages } from './utils/helpers/clearMessages'; diff --git a/apps/meteor/tests/e2e/11-admin.spec.ts b/apps/meteor/tests/e2e/11-admin.spec.ts index 95ed3527df92..8ed7fa461a9d 100644 --- a/apps/meteor/tests/e2e/11-admin.spec.ts +++ b/apps/meteor/tests/e2e/11-admin.spec.ts @@ -1,5 +1,4 @@ -import { test, expect } from '@playwright/test'; - +import { test, expect } from './utils/test'; import { adminLogin, ROCKET_CAT } from './utils/mocks/userAndPasswordMock'; import { FlexTab, Administration, LoginPage, SideNav } from './pageobjects'; import { ROCKET_CAT_SELECTOR } from './utils/mocks/waitSelectorsMock'; diff --git a/apps/meteor/tests/e2e/12-settings.spec.ts b/apps/meteor/tests/e2e/12-settings.spec.ts index 4acbbcffcf0d..3564be9adbf7 100644 --- a/apps/meteor/tests/e2e/12-settings.spec.ts +++ b/apps/meteor/tests/e2e/12-settings.spec.ts @@ -1,6 +1,7 @@ -import { test, expect, Page } from '@playwright/test'; +import { Page } from '@playwright/test'; import { v4 as uuid } from 'uuid'; +import { expect, test } from './utils/test'; import { BASE_API_URL } from './utils/mocks/urlMock'; import { adminLogin, validUserInserted, registerUser } from './utils/mocks/userAndPasswordMock'; import { LoginPage, MainContent, SideNav, Administration, PreferencesMainContent } from './pageobjects'; diff --git a/apps/meteor/tests/e2e/13-permissions.spec.ts b/apps/meteor/tests/e2e/13-permissions.spec.ts index 1e9a84499c81..108a26b93914 100644 --- a/apps/meteor/tests/e2e/13-permissions.spec.ts +++ b/apps/meteor/tests/e2e/13-permissions.spec.ts @@ -1,6 +1,7 @@ -import { Page, test, expect } from '@playwright/test'; +import { Page } from '@playwright/test'; import { v4 as uuid } from 'uuid'; +import { expect, test } from './utils/test'; import { LoginPage, FlexTab, Administration, MainContent, SideNav } from './pageobjects'; import { adminLogin, createRegisterUser } from './utils/mocks/userAndPasswordMock'; import { BACKSPACE } from './utils/mocks/keyboardKeyMock'; diff --git a/apps/meteor/tests/e2e/14-setting-permissions.spec.ts b/apps/meteor/tests/e2e/14-setting-permissions.spec.ts index f4cd066ea0de..22b4c1c818de 100644 --- a/apps/meteor/tests/e2e/14-setting-permissions.spec.ts +++ b/apps/meteor/tests/e2e/14-setting-permissions.spec.ts @@ -1,6 +1,6 @@ -import { test, expect } from '@playwright/test'; import faker from '@faker-js/faker'; +import { test, expect } from './utils/test'; import { adminLogin, validUserInserted } from './utils/mocks/userAndPasswordMock'; import { SideNav, Administration, LoginPage } from './pageobjects'; diff --git a/apps/meteor/tests/e2e/15-message-popup.spec.ts b/apps/meteor/tests/e2e/15-message-popup.spec.ts index b7a1e6b33593..5fed8e130ccc 100644 --- a/apps/meteor/tests/e2e/15-message-popup.spec.ts +++ b/apps/meteor/tests/e2e/15-message-popup.spec.ts @@ -1,5 +1,6 @@ -import { Page, test, expect } from '@playwright/test'; +import { Page } from '@playwright/test'; +import { expect, test } from './utils/test'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; import { userMock } from './utils/mocks/userMock'; import { LoginPage, MainContent, SideNav } from './pageobjects'; diff --git a/apps/meteor/tests/e2e/16-discussion.spec.ts b/apps/meteor/tests/e2e/16-discussion.spec.ts index 50721afe9159..66d9f5a3bc71 100644 --- a/apps/meteor/tests/e2e/16-discussion.spec.ts +++ b/apps/meteor/tests/e2e/16-discussion.spec.ts @@ -1,7 +1,8 @@ -import { test, Page } from '@playwright/test'; +import { Page } from '@playwright/test'; import { faker } from '@faker-js/faker'; import { v4 as uuid } from 'uuid'; +import { test } from './utils/test'; import { MainContent, Discussion, LoginPage, SideNav } from './pageobjects'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; diff --git a/apps/meteor/tests/e2e/omnichannel-agents.spec.ts b/apps/meteor/tests/e2e/omnichannel-agents.spec.ts index 1765371b131b..773518b3861c 100644 --- a/apps/meteor/tests/e2e/omnichannel-agents.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-agents.spec.ts @@ -1,5 +1,6 @@ -import { test, expect, Page } from '@playwright/test'; +import { Page } from '@playwright/test'; +import { expect, test } from './utils/test'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; import { LoginPage, SideNav, Agents, Global } from './pageobjects'; diff --git a/apps/meteor/tests/e2e/omnichannel-departaments.spec.ts b/apps/meteor/tests/e2e/omnichannel-departaments.spec.ts index ba74234189fc..efd0ae79c5a5 100644 --- a/apps/meteor/tests/e2e/omnichannel-departaments.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel-departaments.spec.ts @@ -1,5 +1,6 @@ -import { test, Page, expect } from '@playwright/test'; +import { Page } from '@playwright/test'; +import { expect, test } from './utils/test'; import { Departments, SideNav, Global, LoginPage } from './pageobjects'; import { adminLogin } from './utils/mocks/userAndPasswordMock'; diff --git a/apps/meteor/tests/e2e/utils/test.ts b/apps/meteor/tests/e2e/utils/test.ts new file mode 100644 index 000000000000..36a0c35e28e3 --- /dev/null +++ b/apps/meteor/tests/e2e/utils/test.ts @@ -0,0 +1,36 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +import { v4 as uuid } from 'uuid'; +import { test as baseTest } from '@playwright/test'; + +const PATH_NYC_OUTPUT = path.join(process.cwd(), '.nyc_output'); + +export const test = baseTest.extend({ + context: async ({ context }, use) => { + if (!process.env.E2E_COVERAGE) return; + + await context.addInitScript(() => + window.addEventListener('beforeunload', () => (window as any).collectIstanbulCoverage(JSON.stringify((window as any).__coverage__))), + ); + + await fs.promises.mkdir(PATH_NYC_OUTPUT, { recursive: true }); + + await context.exposeFunction('collectIstanbulCoverage', (coverageJSON: string) => { + if (coverageJSON) { + fs.writeFileSync(path.join(PATH_NYC_OUTPUT, `playwright_coverage_${uuid()}.json`), coverageJSON); + } + }); + + await use(context); + + await Promise.all( + context.pages().map(async (page) => { + await page.evaluate(() => (window as any).collectIstanbulCoverage(JSON.stringify((window as any).__coverage__))); + await page.close(); + }), + ); + }, +}); + +export const { expect } = test; From ef896a4488f54971ecdada93c0989afbbec35fef Mon Sep 17 00:00:00 2001 From: Ramon Souza Date: Mon, 20 Jun 2022 10:03:23 -0300 Subject: [PATCH 6/6] fix: should close context --- apps/meteor/tests/e2e/utils/test.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/meteor/tests/e2e/utils/test.ts b/apps/meteor/tests/e2e/utils/test.ts index 36a0c35e28e3..e02ba833df2f 100644 --- a/apps/meteor/tests/e2e/utils/test.ts +++ b/apps/meteor/tests/e2e/utils/test.ts @@ -8,7 +8,12 @@ const PATH_NYC_OUTPUT = path.join(process.cwd(), '.nyc_output'); export const test = baseTest.extend({ context: async ({ context }, use) => { - if (!process.env.E2E_COVERAGE) return; + if (!process.env.E2E_COVERAGE) { + await use(context); + await context.close(); + + return; + } await context.addInitScript(() => window.addEventListener('beforeunload', () => (window as any).collectIstanbulCoverage(JSON.stringify((window as any).__coverage__))),