{"_id":"@aeolun/code-coverage","_rev":"7-12226997e9739a9f9382b78199e012a6","name":"@aeolun/code-coverage","dist-tags":{"latest":"3.12.2"},"versions":{"3.9.12":{"name":"@aeolun/code-coverage","version":"3.9.12","description":"Saves the code coverage collected during Cypress tests","main":"index.js","scripts":{"test":"cypress run","start":"parcel serve cypress/index.html","cy:open":"cypress open","dev":"start-test 1234 cy:open","semantic-release":"semantic-release","test:ci":"start-test 1234","report:coverage":"nyc report --reporter=html","dev:no:coverage":"start-test 1234 'cypress open --env coverage=false'","format":"prettier --write '*.js'","format:check":"prettier --check '*.js'","check:markdown":"find *.md -exec npx markdown-link-check {} \\;","effective:config":"circleci config process .circleci/config.yml | sed /^#/d","types":"tsc --noEmit --allowJs *.js cypress/integration/*.js"},"peerDependencies":{"cypress":"*"},"repository":{"type":"git","url":"git+https://github.com/cypress-io/code-coverage.git"},"keywords":["cypress","istanbul","cypress-plugin","code","coverage"],"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/cypress-io/code-coverage/issues"},"homepage":"https://github.com/cypress-io/code-coverage#readme","publishConfig":{"access":"public"},"private":false,"dependencies":{"@cypress/browserify-preprocessor":"3.0.2","dayjs":"1.10.7","debug":"4.3.3","execa":"4.1.0","globby":"11.0.4","istanbul-lib-coverage":"3.0.0","js-yaml":"3.14.1","nyc":"15.1.0","chalk":"4.1.2"},"devDependencies":{"@babel/core":"7.16.0","@babel/preset-typescript":"7.16.0","@cypress/webpack-preprocessor":"5.10.0","babel-loader":"8.2.3","babel-plugin-istanbul":"6.1.1","browserify-istanbul":"3.0.1","check-code-coverage":"1.10.0","console-log-div":"0.6.3","cypress":"9.1.1","express":"4.17.1","lodash":"4.17.21","markdown-link-check":"3.9.0","parcel-bundler":"1.12.5","prettier":"2.5.0","semantic-release":"17.4.7","serve":"11.3.2","start-server-and-test":"1.14.0","ts-loader":"8.3.0","typescript":"4.5.2","webpack":"4.46.0","webpack-cli":"3.3.12"},"gitHead":"36e8f0266890e56ea8cba1ff0a81617dc865d98c","_id":"@aeolun/code-coverage@3.9.12","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-AeLUokS0RXU4Enkeqjgbag8idIkwGvLtvo2wh4aQvAnv2p7B7AT12hzWNWVF8NIcQ3/C4NmqVgAuGAhMtjGLkg==","shasum":"db57325d92c6499845c28fb8da8f3143e11382df","tarball":"https://registry.npmjs.org/@aeolun/code-coverage/-/code-coverage-3.9.12.tgz","fileCount":14,"unpackedSize":65610,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRK7wZQ+xERWbAcvN8z/Mq0kXYVJQVr8jRWzVmQKbx9wIgEOkN2HYw5ngGfCchX6lGsTS3e79yv35tQLcGmbwTIfM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiy7tDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqc4g//SZyTEC/OH2zWCCN9hHHQuo747ZQekGR7DGyBdms/3XVCkGiV\r\n3eK1woegZX489ZlD6zcivSxRWclVpriHAnE80eoBqbr3e0iFV29ab905D/VR\r\nk8nDTkIhM10ZcsJFBIwKjNQgGpuqc7qf/vNy/OozsIzL3E5lTDoxIugN7xUM\r\n3iwy49QhfyPGqnzz13FlAVk1+gyVpVMvLBpTGKvD0QD86mTbIc5SK4ENIdMP\r\nQaOZPFKD8Hq0/ChZvsmgE8mxYrXRZSuj4iHf3+aVPFSKu4l1OiOLFsiVvRPt\r\n6+FzXD+WC4sNy+0VSu+vq170sd8mgImpUQpKpfXMwPQEaIi6yHK8fEupGGZ8\r\nic9VKZzePP1wbrHJn0AGbVlj6jysIuclw79naYDqlngj+zrrzKTASGCgiKWj\r\nF8KR+/LBqACIF0b4GZ/OD43MCiMfnLy1FDh4td6din43qR5+0VejavVSZf2S\r\nNDYIvJah644y5J5HFLiUh3Dg6TsjP8JGm2NP42flbbtpEQ1gnqrBAMN5xbQ6\r\nQcrsmsFpVd48o8GqqT7poN1viv4xuTf34BmH8VjFxBT6RMjmriFKzsaCXQ4r\r\n90o4B3bH1f3rJsP5gMEY2A8P4JIxXSIQvHrduPvKjIEeik7rme1Z9fCgileN\r\nmFRvFbZikpHq+j74oMi4sjEMRXK1pjHychw=\r\n=lktp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aeolun","email":"bart@serial-experiments.com"},"directories":{},"maintainers":[{"name":"aeolun","email":"bart@serial-experiments.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/code-coverage_3.9.12_1657518914801_0.7436016035274859"},"_hasShrinkwrap":false},"3.10.0":{"name":"@aeolun/code-coverage","version":"3.10.0","description":"Saves the code coverage collected during Cypress tests","main":"index.js","scripts":{"start":"parcel serve cypress/index.html","coverage:verify":"npx nyc report --check-coverage true --lines 80","cy:open":"cypress open","dev":"start-test 1234 cy:open","semantic-release":"semantic-release","test":"start-test 1234 'npx cypress run'","report:coverage":"nyc report --reporter=html","dev:no:coverage":"start-test 1234 'cypress open --env coverage=false'","format":"prettier --write '*.js'","format:check":"prettier --check '*.js'","check:markdown":"find *.md -exec npx markdown-link-check {} \\;","effective:config":"circleci config process .circleci/config.yml | sed /^#/d"},"peerDependencies":{"cypress":"*"},"repository":{"type":"git","url":"git+https://github.com/cypress-io/code-coverage.git"},"keywords":["cypress","istanbul","cypress-plugin","code","coverage"],"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/cypress-io/code-coverage/issues"},"homepage":"https://github.com/cypress-io/code-coverage#readme","publishConfig":{"access":"public"},"private":false,"dependencies":{"@cypress/webpack-preprocessor":"^5.11.0","chalk":"4.1.2","dayjs":"1.10.7","debug":"4.3.4","execa":"4.1.0","globby":"11.0.4","istanbul-lib-coverage":"^3.2.0","js-yaml":"3.14.1","nyc":"15.1.0"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.11","babel-loader":"^8.2.3","babel-plugin-istanbul":"6.1.1","check-code-coverage":"1.10.0","console-log-div":"0.6.3","cypress":"^9.7.0","lodash":"4.17.21","markdown-link-check":"3.9.0","parcel-bundler":"1.12.5","prettier":"2.6.2","semantic-release":"17.4.7","start-server-and-test":"1.14.0","webpack":"^5.68.0"},"gitHead":"0e3b78efe792db4408cdafaca8b291b8e7f31530","_id":"@aeolun/code-coverage@3.10.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-idRUpuqjVSvW2MBswCkHHPpcMv75oiJjT01hvy6lp9Ls7FbeuweZQBxJk6ADhOgYyd9178HuhfxEKE0gtxdr0w==","shasum":"620f7f78b96385c0157903b5836c4268ab0588ed","tarball":"https://registry.npmjs.org/@aeolun/code-coverage/-/code-coverage-3.10.0.tgz","fileCount":13,"unpackedSize":67504,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAXEREbdLaZk8Uu4xd1ll9G9DOX2PaSN0z2g1ATiIo8LAiEAn86PiZpC36vNNVEhNyfAEu35ZtPsTQMktqpHurOetKw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiy7u0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2nw/+NBOTDyFhoXdLOH7BJ8+V+umeyiARRTuQ+wZMYsJ+zQRDLai0\r\nj9J9ko9MNEWdCIwqOIr9Ozmmld/282+4/9klQ+L5gtDGBZVpacbL1PbWl4FP\r\nGeCh/LgyS6EterOZiC8jaoOnFM1AiHCZ37iI6EMuygrhFAWSa1+3GPTLZ1K7\r\n9GRSugeK6UReqXtfvvvngnpG1VY09o1c03fWT+jMy8AfNCKL4DjeqAOUkDdU\r\nC72i1WM7NHiSSYKtEcl485e5XVD+OgAvfuMJLP3O9I/z15u5a6+x1J7VHmSo\r\neYj5Rbqg5NZuw2slGVSOHicGXzWVfIm6w/RiT8swTCsu6EF6DUJOxIdI5G7C\r\nWNv2Ti8YtrV1fkSmAvSXJSUtRisUmrBAPUC8/8TzIhH4JQGZPlnRJUG8YRti\r\nqfPUJe5585oHVHhsC4xQ8fbshEm1o17kBsfO8VW2BXxvrJeQzxw96GKyub5y\r\ng6syMvmUlHF7zMcyFcSuealhgpdLkVvwNf26TvMoLEjEkOqb81Q4zuHfgv7k\r\n9moqCF/QPvrPA+OouBp/KlQ73ipvQk8tAvASDSQMvvSygi6id3mVHUVhq6pk\r\nvrmh3VL1jjZeat40KVzA0mbAdqBiyWV3PY5sSfbORN6Uhm434V3HXBB4TKpb\r\nHft8CybxGtApBqdluOtcWJN0HXAmQrnPC4U=\r\n=Hiow\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aeolun","email":"bart@serial-experiments.com"},"directories":{},"maintainers":[{"name":"aeolun","email":"bart@serial-experiments.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/code-coverage_3.10.0_1657519027838_0.7086022539177086"},"_hasShrinkwrap":false},"3.11.0":{"name":"@aeolun/code-coverage","version":"3.11.0","description":"Saves the code coverage collected during Cypress tests","main":"index.js","scripts":{"start":"parcel serve cypress/index.html","coverage:verify":"npx nyc report --check-coverage true --lines 80","cy:open":"cypress open","dev":"start-test 1234 cy:open","semantic-release":"semantic-release","test":"start-test 1234 'npx cypress run'","report:coverage":"nyc report --reporter=html","dev:no:coverage":"start-test 1234 'cypress open --env coverage=false'","format":"prettier --write '*.js'","format:check":"prettier --check '*.js'","check:markdown":"find *.md -exec npx markdown-link-check {} \\;","effective:config":"circleci config process .circleci/config.yml | sed /^#/d"},"peerDependencies":{"cypress":"*"},"repository":{"type":"git","url":"git+https://github.com/cypress-io/code-coverage.git"},"keywords":["cypress","istanbul","cypress-plugin","code","coverage"],"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/cypress-io/code-coverage/issues"},"homepage":"https://github.com/cypress-io/code-coverage#readme","publishConfig":{"access":"public"},"private":false,"dependencies":{"@cypress/webpack-preprocessor":"^5.11.0","chalk":"4.1.2","dayjs":"1.10.7","debug":"4.3.4","execa":"4.1.0","globby":"11.0.4","istanbul-lib-coverage":"^3.2.0","js-yaml":"3.14.1","nyc":"15.1.0"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.11","babel-loader":"^8.2.3","babel-plugin-istanbul":"6.1.1","check-code-coverage":"1.10.0","console-log-div":"0.6.3","cypress":"^9.7.0","lodash":"4.17.21","markdown-link-check":"3.9.0","parcel-bundler":"1.12.5","prettier":"2.6.2","semantic-release":"17.4.7","start-server-and-test":"1.14.0","webpack":"^5.68.0"},"gitHead":"1cf1264f41665b753302f91ed916d894b88dc0c5","_id":"@aeolun/code-coverage@3.11.0","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-NC3uxMbotchxxbnlg8iE7jFjleQyL3d/5eYS8ZvkdVGblHHHZZYNxs5K1yOym83aE7WT6pAqkOZc9tOvez2jKw==","shasum":"6250020c8cb0eaa225bb52396a18483fff8fca14","tarball":"https://registry.npmjs.org/@aeolun/code-coverage/-/code-coverage-3.11.0.tgz","fileCount":13,"unpackedSize":67608,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbvbWyRNvpQkmhwh51KidCXn7Xn0TjqkUk4C/ib8G2RgIhAPiG1MQlLtRKfZjNINQPOmQ5Nf1LVQGBREpEVxI30LDg"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizPGSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmps9Q//fBSSbtyRayHJmShV4Zpgx19nfMGPrz9UVkasdE1SPLMTPpt9\r\nTmn60+5WUyPBrEyuopmwrnpprVlZBWrQjmE2vMI5II8PSPV6+6dSMCPBu+lB\r\n16rIXQofye5626Qhd8ZSlYuwacyacOg2Z9inYHh3Gmp479Q8j1wdRP0ZVuGM\r\nxRSy4TgvZcjMJJOouklpSnk5mA4I+qW5ZmJ8X2a+r7c/W50lZ42i6weeSUUC\r\nzNNBbWYGIe/AKzx1EB2KOuWLW51lOKWWi+T9IKQsEwlk1qH7rgN7pkFEwO+b\r\noeHo1t96GGvknHIj7C2+YEYf73tjt87N1RsSTGNGnKdabaogcna62Z3aOlZw\r\nyzhzJ1Dl0XvLAjJkYETx2waWf5GBURrK1ShRb6nhDZ6160j8XmmW8Bk2/4nt\r\nXEz0kOjBfDmh7gnaSQh35qcH85W4rduAZX1Oarla+OY4nxStMCNOaGVmQZFN\r\n7TBeDpnwoKqOQViBDV/psNt2ByCeDqOA0KxFD+KQxKTziEnn8iBJdRRQJd2m\r\n5eaN7t4bYr8L11Xf4up9gC/NFYM27LOQyxbh6FV2Bd0lbJutpxZGlGOgsryp\r\nHLDG0CJTsFqQB9b5OzADDJtJeW8SATtX50chtPXoO9gXtTQZXXPg9BEHhI0t\r\ne6rh/m6nfOvqyCHIiDLDVwQSTBsT3M/9oig=\r\n=kz3u\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aeolun","email":"bart@serial-experiments.com"},"directories":{},"maintainers":[{"name":"aeolun","email":"bart@serial-experiments.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/code-coverage_3.11.0_1657598354577_0.4412764400395013"},"_hasShrinkwrap":false},"3.11.1":{"name":"@aeolun/code-coverage","version":"3.11.1","description":"Saves the code coverage collected during Cypress tests","main":"index.js","scripts":{"start":"parcel serve cypress/index.html","coverage:verify":"npx nyc report --check-coverage true --lines 80","cy:open":"cypress open","dev":"start-test 1234 cy:open","semantic-release":"semantic-release","test":"start-test 1234 'npx cypress run'","report:coverage":"nyc report --reporter=html","dev:no:coverage":"start-test 1234 'cypress open --env coverage=false'","format":"prettier --write '*.js'","format:check":"prettier --check '*.js'","check:markdown":"find *.md -exec npx markdown-link-check {} \\;","effective:config":"circleci config process .circleci/config.yml | sed /^#/d"},"peerDependencies":{"cypress":"*"},"repository":{"type":"git","url":"git+https://github.com/cypress-io/code-coverage.git"},"keywords":["cypress","istanbul","cypress-plugin","code","coverage"],"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/cypress-io/code-coverage/issues"},"homepage":"https://github.com/cypress-io/code-coverage#readme","publishConfig":{"access":"public"},"private":false,"dependencies":{"@cypress/webpack-preprocessor":"^5.11.0","chalk":"4.1.2","dayjs":"1.10.7","debug":"4.3.4","execa":"4.1.0","globby":"11.0.4","istanbul-lib-coverage":"^3.2.0","js-yaml":"3.14.1","nyc":"15.1.0"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.11","babel-loader":"^8.2.3","babel-plugin-istanbul":"6.1.1","check-code-coverage":"1.10.0","console-log-div":"0.6.3","cypress":"^9.7.0","lodash":"4.17.21","markdown-link-check":"3.9.0","parcel-bundler":"1.12.5","prettier":"2.6.2","semantic-release":"17.4.7","start-server-and-test":"1.14.0","webpack":"^5.68.0"},"gitHead":"841f496e1e9d5dce37058bbfd3981b32eefbf987","_id":"@aeolun/code-coverage@3.11.1","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-6/1GX2SVIRTE+xhk2f+xuDHiXCUMHaR1qh9fjn2w54dzyXI/ciz27mSe4rkWpZ/vqROp9S+tIhO8vdyF2oXpCA==","shasum":"665264fa166de0513c3773498344e00e88615c89","tarball":"https://registry.npmjs.org/@aeolun/code-coverage/-/code-coverage-3.11.1.tgz","fileCount":13,"unpackedSize":67790,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIHK01Xpt+esyCPaPq0oc6PdmcvGZpYkC1Scdny1zgjhyAh8EzMcps/Wka50C0hcgyNkvLqGlRlOI4POpPChkmULB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizY/AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoEZRAAoW184h0v59AtnfXpZxPGMcxvDwY3cU6lPupvSPVnbC/cpNwg\r\noUJa/wCky839Ojh7tJqbAZ44EFOWM+bOTnYdI4HBL3J17EnonHiJT8jhApum\r\nrqc+r+dFyynjBvVhyvySZAUWt4a3pV3zZ2qSI6C59DCe0L4jfQrBj4XbRz4J\r\nEjklwNy6eRspogt3hWPv1mmbSBdN0hNofTtfdP24G+esX/o9l2DW9QXIa3No\r\nkSV9gSHyjo/nI6tpAKKz3EsB70b4hi4ZfehCoesRfFLO9H/03u5DDNetXZyV\r\nQ/qzrLYmQEe0Zoroqe8CuivCJHj4L4RVlCd1KFKloY4lA68BuK4CkRYK3MkF\r\nBqX+OVScjNPSd0D1oYXjJ7jzJEAQ/KWzv/Dt24o6QeA9X94bV9ZcBhYrbuTh\r\nDolY+CEyq4CdT3VpOYtkFfKcpb0Zpq0T3z7DyXBPQdo5gEJpWPHvn+VsUCPw\r\nafEmxCMMptR3AeWuJP7t8cWuUz0Uz2bm/5Rj5qjp0yr/ULzIRAoYMiC9Uv3o\r\nBlYCyparkWkoQjUHRbNETWcU48eNobVSMtv88yaMtlOXs4ckpAQg15AhLa/i\r\nq1y/ok6FWEGfw/nBWz2fa7gBTvXaBd3G/k0hrBb4BsCXl40cst9jn1vs/ICc\r\nr3B+r3nCtJKF7cqEbz3QObBqE25pFnFoJOY=\r\n=LCWC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aeolun","email":"bart@serial-experiments.com"},"directories":{},"maintainers":[{"name":"aeolun","email":"bart@serial-experiments.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/code-coverage_3.11.1_1657638848306_0.5442700429078258"},"_hasShrinkwrap":false},"3.12.0":{"name":"@aeolun/code-coverage","version":"3.12.0","description":"Saves the code coverage collected during Cypress tests","main":"index.js","scripts":{"test":"cypress run","start":"parcel serve cypress/index.html","cy:open":"cypress open","dev":"start-test 1234 cy:open","semantic-release":"semantic-release","test:ci":"start-test 1234","report:coverage":"nyc report --reporter=html","dev:no:coverage":"start-test 1234 'cypress open --env coverage=false'","format":"prettier --write '*.js'","format:check":"prettier --check '*.js'","check:markdown":"find *.md -exec npx markdown-link-check {} \\;","effective:config":"circleci config process .circleci/config.yml | sed /^#/d","types":"tsc --noEmit --allowJs *.js cypress/integration/*.js"},"peerDependencies":{"cypress":"*"},"repository":{"type":"git","url":"git+https://github.com/cypress-io/code-coverage.git"},"keywords":["cypress","istanbul","cypress-plugin","code","coverage"],"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/cypress-io/code-coverage/issues"},"homepage":"https://github.com/cypress-io/code-coverage#readme","publishConfig":{"access":"public"},"private":false,"dependencies":{"@cypress/browserify-preprocessor":"3.0.2","dayjs":"1.10.7","debug":"4.3.3","execa":"4.1.0","globby":"11.0.4","istanbul-lib-coverage":"3.0.0","js-yaml":"3.14.1","nyc":"15.1.0","chalk":"4.1.2"},"devDependencies":{"@babel/core":"7.16.0","@babel/preset-typescript":"7.16.0","@cypress/webpack-preprocessor":"5.10.0","babel-loader":"8.2.3","babel-plugin-istanbul":"6.1.1","browserify-istanbul":"3.0.1","check-code-coverage":"1.10.0","console-log-div":"0.6.3","cypress":"9.1.1","express":"4.17.1","lodash":"4.17.21","markdown-link-check":"3.9.0","parcel-bundler":"1.12.5","prettier":"2.5.0","semantic-release":"17.4.7","serve":"11.3.2","start-server-and-test":"1.14.0","ts-loader":"8.3.0","typescript":"4.5.2","webpack":"4.46.0","webpack-cli":"3.3.12"},"gitHead":"f9217f10e350ad5548cddd53c8151e50b497f33c","_id":"@aeolun/code-coverage@3.12.0","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-bXHlsLAAkP6v44mJRoKNoaLtTfTnpY8g9Q8HP4eZpPms3ZEIwoWtz0Zjb3WDdvkGJOIvyzHFtqOgX/S3uGnohw==","shasum":"5cab6f49b3195117ee55e0deeb618d130d4fa15b","tarball":"https://registry.npmjs.org/@aeolun/code-coverage/-/code-coverage-3.12.0.tgz","fileCount":14,"unpackedSize":66086,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhTH94GAnkuPTkv76BtY6jhOUGzdTsyk68KTMMSTUP2AIhAInCdyl272qTOnfL3PXKAsNQV2oc840yrIc6u0RM+ED8"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIXMEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqV6A//RO/v3tgy4rw4pZ7TtAyO1s9dEYP4g5I2ku170UdLj11xZKKI\r\nXZ0V4LghwQclysMYznRxEPX0Fal3mKULtrGQaj6cjCqyGYYaeVXYgUfOOnM0\r\nszR9CHj2RH1SfrYHz5fsWzbX8Q3NJb/e1v/UpOZMp/Ym6TWwgNKAwk3IIWuj\r\nm8y0sBOPnj2cMxPoyty3ADeAA2pzHATvqkCgtiznHgVwHrvJ5xSXCD6bpjC0\r\nDLWvtVjmX990yXBytsHGRGSYbVNxFjf5uSoL4slBmgISe6PFoXwmsYdM3voO\r\nlPQsLz8lYP4tZ6DUtAAVLmnL62UftAyl29grIJjBA9vzOb2oXnTQfMoJ9beb\r\nqsF6IKpxWkrfIZKZ/sKcWEnk09qmg2U3PMNi2GmMyt/kXDKECdN0KVT/ndKd\r\ndR/1telhe6Sv/cAnBjlyOWvEnf3CJZtZIIp//OaFYHtac0olxdfMMppQ/TPz\r\n/aE+wnY/krrc+tHeeIi4u4YG0/bYnBwW9kICu5n5R911sSGEGnjSImEN9BYz\r\nIYfHnLKZeSgO+tfVeJV4CTXwm581davY7a781P30IcFzMNTYE8zq+lFOqFtV\r\n/jBlZD/CRe6ZBFuttjj+FzTjNciui1ljaKZAhwjgnKog/EgyWQd0Kz3eCKo6\r\n4yagRZCOA5HpZnoAv8HeZfxNFUFMUoPBqLI=\r\n=L4u6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aeolun","email":"bart@serial-experiments.com"},"directories":{},"maintainers":[{"name":"aeolun","email":"bart@serial-experiments.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/code-coverage_3.12.0_1663136516510_0.31222033205287514"},"_hasShrinkwrap":false},"3.12.1":{"name":"@aeolun/code-coverage","version":"3.12.1","description":"Saves the code coverage collected during Cypress tests","main":"index.js","scripts":{"test":"cypress run","start":"parcel serve cypress/index.html","cy:open":"cypress open","dev":"start-test 1234 cy:open","semantic-release":"semantic-release","test:ci":"start-test 1234","report:coverage":"nyc report --reporter=html","dev:no:coverage":"start-test 1234 'cypress open --env coverage=false'","format":"prettier --write '*.js'","format:check":"prettier --check '*.js'","check:markdown":"find *.md -exec npx markdown-link-check {} \\;","effective:config":"circleci config process .circleci/config.yml | sed /^#/d","types":"tsc --noEmit --allowJs *.js cypress/integration/*.js"},"peerDependencies":{"cypress":"*"},"repository":{"type":"git","url":"git+https://github.com/cypress-io/code-coverage.git"},"keywords":["cypress","istanbul","cypress-plugin","code","coverage"],"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/cypress-io/code-coverage/issues"},"homepage":"https://github.com/cypress-io/code-coverage#readme","publishConfig":{"access":"public"},"private":false,"dependencies":{"@cypress/browserify-preprocessor":"3.0.2","dayjs":"1.10.7","debug":"4.3.3","execa":"4.1.0","globby":"11.0.4","istanbul-lib-coverage":"3.0.0","js-yaml":"3.14.1","nyc":"15.1.0","chalk":"4.1.2"},"devDependencies":{"@babel/core":"7.16.0","@babel/preset-typescript":"7.16.0","@cypress/webpack-preprocessor":"5.10.0","babel-loader":"8.2.3","babel-plugin-istanbul":"6.1.1","browserify-istanbul":"3.0.1","check-code-coverage":"1.10.0","console-log-div":"0.6.3","cypress":"9.1.1","express":"4.17.1","lodash":"4.17.21","markdown-link-check":"3.9.0","parcel-bundler":"1.12.5","prettier":"2.5.0","semantic-release":"17.4.7","serve":"11.3.2","start-server-and-test":"1.14.0","ts-loader":"8.3.0","typescript":"4.5.2","webpack":"4.46.0","webpack-cli":"3.3.12"},"gitHead":"ab1ba8e5f220c1d74eb8e8403b6ff8fb8c861935","_id":"@aeolun/code-coverage@3.12.1","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-hiMuu7+k2gOQUcSR41FzeMJyw/6k46RpFmboF3ztWL7+6rmBjYnQ+68W4TEutr3IqOfP2CQH8h0CSt1uzkiZ+g==","shasum":"bb9c8872a54e19b895155902d3df54f40bb71b5d","tarball":"https://registry.npmjs.org/@aeolun/code-coverage/-/code-coverage-3.12.1.tgz","fileCount":14,"unpackedSize":66095,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPLl2g4BrAsQDRKrNO7GAK7buX9PijZaAy1oftNj6pegIhAI3U9ZRiEBU3Mx8g9j7fhaDbvouHL9vc+oyJ4AyyzPXz"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIYG5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpKxBAAie4G+estMMbYyZSZirdlri+23TGWACvJN0ky+XkOzjp4W0vL\r\nw5dT57qCSt+dATlPXQB5hkAY10wYFeP6fp05NzU2FtjyuBF7a+R8DFqj7vM4\r\nl+C0oJFG3O+fQVWZtFZDY8HiYRcuOVErrqVLn36zXfO7nFI56rFaYkzxZW/4\r\nePJG27u6pYR3iHdmq4ly9wTFj30AYWYqrqfP7TbmGJ/TqreZ6TkVLZaUQSaq\r\nvQBpGVipBCbmNU6afHk7tOrodm4JZf3TgVW84jABelV+XclLr61ledgg22Ez\r\nm//5o+fxIFhuviOn9d7WLTQNa1LX2uadoNjaew3NWXlAn+uppoUfICFGbKz3\r\nIDsH7yzb56mT7hisryEd8GYyf5C/qYgmC3R+2qEdk/eUmGWO37y0MVV1UzmY\r\noQaFdN00jWY6hH6yeRp1Nw7GB0zAE/IlfByJi5gSoBo8D0Qpl27y0/7GxkKL\r\nvTcZNQZyvEiLy5dMPx0G9p43OI3E695IhpDJkaox0D6hoziqaZsQPlh5scop\r\nLVv5MJXbbObkd6e2ujlPsM6NqMXP0fT0b9zLXpQVVEZSsQgLBohC00TiA8qH\r\ngTtsKt4SSfYDgrY+Hq/NJw6FHUDUTJ+N5iTNdkm+GPDmsvrmYTstvQpsDzg3\r\nZBhNb8P6GEI7fkHxO3phZvm40ouVeOBa+0Q=\r\n=y52e\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aeolun","email":"bart@serial-experiments.com"},"directories":{},"maintainers":[{"name":"aeolun","email":"bart@serial-experiments.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/code-coverage_3.12.1_1663140281288_0.9683941508094924"},"_hasShrinkwrap":false},"3.12.2":{"name":"@aeolun/code-coverage","version":"3.12.2","description":"Saves the code coverage collected during Cypress tests","main":"index.js","scripts":{"start":"parcel serve cypress/index.html","coverage:verify":"npx nyc report --check-coverage true --lines 80","cy:open":"cypress open","dev":"start-test 1234 cy:open","semantic-release":"semantic-release","test":"start-test 1234 'npx cypress run'","report:coverage":"nyc report --reporter=html","dev:no:coverage":"start-test 1234 'cypress open --env coverage=false'","format":"prettier --write '*.js'","format:check":"prettier --check '*.js'","check:markdown":"find *.md -exec npx markdown-link-check {} \\;","effective:config":"circleci config process .circleci/config.yml | sed /^#/d"},"peerDependencies":{"cypress":"*"},"repository":{"type":"git","url":"git+https://github.com/cypress-io/code-coverage.git"},"keywords":["cypress","istanbul","cypress-plugin","code","coverage"],"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/cypress-io/code-coverage/issues"},"homepage":"https://github.com/cypress-io/code-coverage#readme","publishConfig":{"access":"public"},"private":false,"dependencies":{"@cypress/webpack-preprocessor":"^5.11.0","chalk":"4.1.2","dayjs":"1.10.7","debug":"4.3.4","execa":"4.1.0","globby":"11.0.4","istanbul-lib-coverage":"3.0.0","js-yaml":"4.1.0","nyc":"15.1.0"},"devDependencies":{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.11","babel-loader":"^8.2.3","babel-plugin-istanbul":"6.1.1","check-code-coverage":"1.10.0","console-log-div":"0.6.3","cypress":"^9.7.0","lodash":"4.17.21","markdown-link-check":"3.11.1","parcel-bundler":"1.12.5","prettier":"2.6.2","semantic-release":"17.4.7","start-server-and-test":"1.15.4","webpack":"^5.68.0"},"gitHead":"3b24f2c4f6e54acefea4c968932b29135f4d6bb3","_id":"@aeolun/code-coverage@3.12.2","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ZT3DiGw7gG6jsx2DIEhFn/jFt3Z59Pxa2dTJBdH2BnXfHTIa+kQ9EmjY+VAW8WgeK25ClY6Eo7XTsMcMazpIvw==","shasum":"c029733033dffb219480c918b6fcc7ea3ad86f45","tarball":"https://registry.npmjs.org/@aeolun/code-coverage/-/code-coverage-3.12.2.tgz","fileCount":13,"unpackedSize":67971,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDeQ/51NI4PL6Bejzmou7w9PYpcIF9zXCgx6a72r3lZEAiBbW276UC0ZX2/d/ANaXFehZmWaipShIkxrthhCJs6lGQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRgPMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmov4BAAhdW3sHk3dgL27As5maTeOBZ6i59Cj+vack14oAecWtWHn1il\r\nxs9rgvDuYM0j1Gr5sH9PEHgZPitH72Wujl1N0ZIOkvp2vCpeiEYXsM5AwnaS\r\n/TdZTiGPZ1c/ajbqDrlh6BFHj+rQP4Rip01OJxfA89lwrZy2qEgOxwn3+NWI\r\nV1Ux5nLp04b8LGka7mS6I7N4/POZRUJEGnaL85ZXeYB0rdKVafeivcLBtViG\r\nPGaWrbiySv0DjShM0Mzy7GATPlvieTsr332E3Vbq0FXNOYV58cMw5tY6acrT\r\nn7Jc/lDj1qb6ZhHSrJsw930MwL1nT2DABAPt8F3RmcaKUk25jDgXNmJeNT92\r\ncQ+sAPf9T8+dLxYAydp9W+Bd3VBGExRQOa23E5Cbejr9q+3msfTLbbiTPP7A\r\nnG5hDUCiAZXsrEu0EtYElS1rx34V1aIBQxmI/8/rQDipKd+MCkFipleaflNB\r\nQP4tvcxeEGCv536e9HgD0XJM/2W/un85rmE8F922FSfnf5ArQc7fAEgtcaQn\r\nA5xWt/ixU5S3HtjoPOm9RG0hwbbhVOwl8G+3jARXqGCop57teJ1KMt7TZPlR\r\nmZCp5AA8PfZ3Qu52FWZrnl2t/TWXTPdOUITGo6Jj0i/8ufUahk49xijgydlo\r\njB31bkGPQUX3VkDRyDi+eVoU18IEmCjONDY=\r\n=Xk+m\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aeolun","email":"bart@serial-experiments.com"},"directories":{},"maintainers":[{"name":"aeolun","email":"bart@serial-experiments.com"},{"name":"sharathvignesh","email":"sharathvignesh08@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/code-coverage_3.12.2_1682310092317_0.42624075702876985"},"_hasShrinkwrap":false}},"time":{"created":"2022-07-11T05:55:14.731Z","3.9.12":"2022-07-11T05:55:14.990Z","modified":"2023-04-24T04:21:32.593Z","3.10.0":"2022-07-11T05:57:08.036Z","3.11.0":"2022-07-12T03:59:14.822Z","3.11.1":"2022-07-12T15:14:08.501Z","3.12.0":"2022-09-14T06:21:56.704Z","3.12.1":"2022-09-14T07:24:41.482Z","3.12.2":"2023-04-24T04:21:32.486Z"},"maintainers":[{"name":"aeolun","email":"bart@serial-experiments.com"},{"name":"sharathvignesh","email":"sharathvignesh08@gmail.com"}],"description":"Saves the code coverage collected during Cypress tests","homepage":"https://github.com/cypress-io/code-coverage#readme","keywords":["cypress","istanbul","cypress-plugin","code","coverage"],"repository":{"type":"git","url":"git+https://github.com/cypress-io/code-coverage.git"},"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/cypress-io/code-coverage/issues"},"license":"MIT","readme":"# @cypress/code-coverage [![renovate-app badge][renovate-badge]][renovate-app] [![CircleCI](https://circleci.com/gh/cypress-io/code-coverage.svg?style=svg)](https://circleci.com/gh/cypress-io/code-coverage)\n\n> Saves the code coverage collected during Cypress tests\n\n## Install\n\n```shell\nnpm install -D @cypress/code-coverage\n```\n\nNote: this plugin assumes `cypress` is a peer dependency already installed in your project.\n\nAdd to your `cypress/support/index.js` file\n\n```js\nimport '@cypress/code-coverage/support'\n```\n\nRegister tasks in your `cypress/plugins/index.js` file\n\n```js\nmodule.exports = (on, config) => {\n  require('@cypress/code-coverage/task')(on, config)\n\n  // add other tasks to be registered here\n\n  // IMPORTANT to return the config object\n  // with the any changed environment variables\n  return config\n}\n```\n\n## Instrument your application\n\nThis plugin **DOES NOT** instrument your code. You have to instrument it yourself using [Istanbul.js](https://istanbul.js.org/) tool. Luckily it is not difficult. For example, if you are already using Babel to transpile you can add [babel-plugin-istanbul](https://github.com/istanbuljs/babel-plugin-istanbul) to your `.babelrc` and instrument on the fly.\n\n```\n{\n  \"plugins\": [\"istanbul\"]\n}\n```\n\nPlease see the [Test Apps](#internal-test-apps) section down below, you can probably find a linked project matching your situation to see how to instrument your application's source code before running end-to-end tests to get the code coverage.\n\nIf your application has been instrumented correctly, then you should see additional counters and instructions in the application's JavaScript resources, like the image down below shows.\n\n![Instrumented code](images/instrumented-code.png)\n\nYou should see the `window.__coverage__` object in the \"Application under test iframe\"\n\n![Window coverage object](images/window-coverage-object.png)\n\nIf you have instrumented your application's code and see the `window.__coverage__` object, then this plugin will save the coverage into `.nyc_output` folder and will generate reports after the tests finish (even in the interactive mode). Find the LCOV and HTML report in the `coverage/lcov-report` folder.\n\n![Coverage report](images/coverage.jpg)\n\nThat should be it! You should see messages from this plugin in the Cypress Command Log\n\n![Plugin messages](images/gui.png)\n\n### More information\n\n- Read [Cypress Code Coverage: Instrumenting code](https://on.cypress.io/code-coverage#Instrumenting-code) guide\n- Watch [Code coverage](https://youtu.be/C8g5X4vCZJA) webinar\n- Watch videos in [Cypress Tips & Tricks](https://www.youtube.com/playlist?list=PLP9o9QNnQuAYYRpJzDNWpeuOVTwxmIxcI) that deal with code coverage\n\n### App vs unit tests\n\nYou need to instrument your web application. This means that when the test does `cy.visit('localhost:3000')` any code the `index.html` requests should be instrumented by YOU. See [Test Apps](#test-apps) section for advice, usually you need to stick `babel-plugin-istanbul` into your pipeline somewhere.\n\nIf you are testing individual functions from your application code by importing them directly into Cypress spec files, this is called \"unit tests\" and Cypress can instrument this scenario for you. See [Instrument unit tests](#instrument-unit-tests) section.\n\n## Reports\n\nThe `coverage` folder has results in several formats, and the coverage raw data is stored in `.nyc_output` folder. You can see the coverage numbers yourself. This plugin has `nyc` as a dependency, so it should be available right away. Here are common examples:\n\n```shell\n# see just the coverage summary\n$ npx nyc report --reporter=text-summary\n# see just the coverage file by file\n$ npx nyc report --reporter=text\n# save the HTML report again\n$ npx nyc report --reporter=lcov\n```\n\nIt is useful to enforce [minimum coverage](https://github.com/istanbuljs/nyc#common-configuration-options) numbers. For example:\n\n```shell\n$ npx nyc report --check-coverage --lines 80\n----------|---------|----------|---------|---------|-------------------\nFile      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s\n----------|---------|----------|---------|---------|-------------------\nAll files |     100 |      100 |     100 |     100 |\n main.js  |     100 |      100 |     100 |     100 |\n----------|---------|----------|---------|---------|-------------------\n\n$ npx nyc report --check-coverage --lines 101\n----------|---------|----------|---------|---------|-------------------\nFile      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s\n----------|---------|----------|---------|---------|-------------------\nAll files |     100 |      100 |     100 |     100 |\n main.js  |     100 |      100 |     100 |     100 |\n----------|---------|----------|---------|---------|-------------------\nERROR: Coverage for lines (100%) does not meet global threshold (101%)\n```\n\nWatch video [How to read code coverage report](https://youtu.be/yVvCYtsmkZU) to see how to read the HTML coverage report.\n\n## Instrument unit tests\n\nIf you test your application code directly from `specs` you might want to instrument them and combine unit test code coverage with any end-to-end code coverage (from iframe). You can easily instrument spec files using [babel-plugin-istanbul](https://github.com/istanbuljs/babel-plugin-istanbul) for example.\n\nInstall the plugin\n\n```\nnpm i -D babel-plugin-istanbul\n```\n\nSet your `.babelrc` file\n\n```rc\n{\n  \"plugins\": [\"istanbul\"]\n}\n```\n\nPut the following in `cypress/plugins/index.js` file to use `.babelrc` file\n\n```js\nmodule.exports = (on, config) => {\n  require('@cypress/code-coverage/task')(on, config)\n  on('file:preprocessor', require('@cypress/code-coverage/use-babelrc'))\n  return config\n}\n```\n\nNow the code coverage from spec files will be combined with end-to-end coverage.\n\nFind example of a just the unit tests and JavaScript source files with collected code coverage in [test-apps/new-cypress-config/unit-tests-js](./test-apps/new-cypress-config/unit-tests-js).\n\n### Alternative for unit tests\n\nIf you cannot use `.babelrc` for some reason (maybe it is used by other tools?), try using the Browserify transformer included with this module in `use-browserify-istanbul` file.\n\n```js\nmodule.exports = (on, config) => {\n  require('@cypress/code-coverage/task')(on, config)\n  on(\n    'file:preprocessor',\n    require('@cypress/code-coverage/use-browserify-istanbul')\n  )\n  return config\n}\n```\n\n## Instrument backend code\n\nExample in [test-apps/new-cypress-config/backend](test-apps/backend) folder.\n\nYou can also instrument your server-side code and produce combined coverage report that covers both the backend and frontend code\n\n1. Run the server code with instrumentation. The simplest way is to use [nyc](https://github.com/istanbuljs/nyc). If normally you run `node src/server` then to run instrumented version you can do `nyc --silent node src/server`.\n2. Add an endpoint that returns collected coverage. If you are using Express, you can simply do\n\n```js\nconst express = require('express')\nconst app = express()\nrequire('@cypress/code-coverage/middleware/express')(app)\n```\n\n**Tip:** you can register the endpoint only if there is global code coverage object, and you can exclude the middleware code from the coverage numbers\n\n```js\n// https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md\n/* istanbul ignore next */\nif (global.__coverage__) {\n  require('@cypress/code-coverage/middleware/express')(app)\n}\n```\n\nIf you use Hapi server, define the endpoint yourself and return the object\n\n```js\nif (global.__coverage__) {\n  require('@cypress/code-coverage/middleware/hapi')(server)\n}\n```\n\nFor any other server, define the endpoint yourself and return the coverage object:\n\n```js\nif (global.__coverage__) {\n  // add method \"GET /__coverage__\" and response with JSON\n  onRequest = (response) => response.sendJSON({ coverage: global.__coverage__ })\n}\n```\n\n3. Save the API coverage endpoint in `cypress.json` file to let the plugin know where to call to receive the code coverage data from the server. Place it in `env.codeCoverage` object:\n\n```json\n{\n  \"env\": {\n    \"codeCoverage\": {\n      \"url\": \"http://localhost:3000/__coverage__\"\n    }\n  }\n}\n```\n\nThat should be enough - the code coverage from the server will be requested at the end of the test run and merged with the client-side code coverage, producing a combined report.\n\n### expectBackendCoverageOnly\n\nIf there is NO frontend code coverage, and you want to only collect the backend code coverage using Cypress tests, set `expectBackendCoverageOnly: true` in `cypress.json` file. Otherwise Cypress complains that it cannot find the frontend code coverage.\n\nDefault:\n\n![No frontend code coverage warning](./images/warning.png)\n\nAfter:\n\n```json\n{\n  \"env\": {\n    \"codeCoverage\": {\n      \"url\": \"http://localhost:3003/__coverage__\",\n      \"expectBackendCoverageOnly\": true\n    }\n  }\n}\n```\n\n![Cypress knows to expect the backend code coverage only](./images/expect-backend.png)\n\n## Custom report folder\n\nYou can specify custom report folder by adding `nyc` object to the `package.json` file. For example to save reports to `cypress-coverage` folder, use:\n\n```json\n{\n  \"nyc\": {\n    \"report-dir\": \"cypress-coverage\"\n  }\n}\n```\n\n## Custom reporters\n\nYou can specify custom coverage reporter(s) to use. For example to output text summary and save JSON report in `cypress-coverage` folder set in your `package.json` folder:\n\n```json\n{\n  \"nyc\": {\n    \"report-dir\": \"cypress-coverage\",\n    \"reporter\": [\"text\", \"json\"]\n  }\n}\n```\n\n**Tip:** find list of reporters [here](https://istanbul.js.org/docs/advanced/alternative-reporters/)\n\n## Custom NYC command\n\nSometimes NYC tool might be installed in a different folder not in the current or parent folder, or you might want to customize the report command. In that case, put the custom command into `package.json` in the current folder and this plugin will automatically use it.\n\n```json\n{\n  \"scripts\": {\n    \"coverage:report\": \"call NYC report ...\"\n  }\n}\n```\n\n## TypeScript users\n\nTypeScript source files should be automatically included in the report, if they are instrumented.\n\nSee [test-apps/new-cypress-config/ts-example](test-apps/ts-example), [bahmutov/cra-ts-code-coverage-example](https://github.com/bahmutov/cra-ts-code-coverage-example) or [bahmutov/cypress-angular-coverage-example](https://github.com/bahmutov/cypress-angular-coverage-example).\n\n## Include code\n\nBy default, the code coverage report includes _only_ the instrumented files loaded by the application during the tests. If some modules are loaded dynamically, or are loaded by the pages NOT visited during any tests, these files are not going to be in the report - because the plugin does not know about them. You can include all expected source files in the report by using `include` list in the `package.json` file. The files without counters will have 0 percent code coverage.\n\nFor example, if you want to make sure the final report includes all JS files from the \"src/pages\" folder, set the \"nyc\" object in your `package.json` file.\n\n```json\n{\n  \"nyc\": {\n    \"all\": true,\n    \"include\": \"src/pages/*.js\"\n  }\n}\n```\n\nSee example [test-app/all-files](./test-apps/new-cypress-config/all-files)\n\n## Exclude code\n\nYou can exclude parts of the code or entire files from the code coverage report. See [Istanbul guide](https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md). Common cases:\n\n### Exclude \"else\" branch\n\nWhen running code only during Cypress tests, the \"else\" branch will never be hit. Thus we should exclude it from the branch coverage computation:\n\n```js\n// expose \"store\" reference during tests\n/* istanbul ignore else */\nif (window.Cypress) {\n  window.store = store\n}\n```\n\n### Exclude next logical statement\n\nOften needed to skip a statement\n\n```js\n/* istanbul ignore next */\nif (global.__coverage__) {\n  require('@cypress/code-coverage/middleware/express')(app)\n}\n```\n\nOr a particular `switch` case\n\n```js\nswitch (foo) {\n  case 1 /* some code */:\n    break\n  /* istanbul ignore next */\n  case 2: // really difficult to hit from tests\n    someCode()\n}\n```\n\n### Exclude files and folders\n\nThe code coverage plugin will automatically exclude any test/spec files you have defined in `testFiles` (Cypress < v10) or `specPattern` (Cypress >= v10) configuration options. Additionaly, you can set the `exclude` pattern glob in the code coverage environment variable to specify additional files to be excluded:\n\n```javascript\n// cypress.config.js or cypress.json\nenv: {\n  codeCoverage: {\n    exclude: ['cypress/**/*.*'],\n  },\n},\n```\n\nCypress 10 and later users should set the `exclude` option to exclude any items from the `cypress` folder they don't want to be included in the coverage reports. \n\nAdditionaly, you can use [`nyc` configuration](https://github.com/istanbuljs/nyc#common-configuration-options) and [include and exclude options](https://github.com/istanbuljs/nyc#using-include-and-exclude-arrays). You can include and exclude files using `minimatch` patterns in `.nycrc` file or using \"nyc\" object inside your `package.json` file.\n\nFor example, if you want to only include files in the `app` folder, but exclude `app/util.js` file, you can set in your `package.json`\n\n```json\n{\n  \"nyc\": {\n    \"include\": [\"app/**/*.js\"],\n    \"exclude\": [\"app/util.js\"]\n  }\n}\n```\n\n**Note:** if you have `all: true` NYC option set, this plugin will check the produced `.nyc_output/out.json` before generating the final report. If the `out.json` file does not have information for some files that should be there according to `include` list, then an empty placeholder will be included, see [PR 208](https://github.com/cypress-io/code-coverage/pull/208).\n\nAnother important option is `excludeAfterRemap`. By default it is false, which might let excluded files through. If you are excluding the files, and the instrumenter does not respect the `nyc.exclude` setting, then add `excludeAfterRemap: true` to tell `nyc report` to exclude files. See [test-apps/exclude-files](test-apps/new-cypress-config/exclude-files).\n\n## Disable plugin\n\nYou can skip the client-side code coverage hooks by setting the environment variable `coverage` to `false`.\n\n```shell\n# tell Cypress to set environment variable \"coverage\" to false\ncypress run --env coverage=false\n# or pass the environment variable\nCYPRESS_COVERAGE=false cypress run\n```\n\nor set it to `false` in the `cypress.json` file\n\n```json\n{\n  \"env\": {\n    \"coverage\": false\n  }\n}\n```\n\nSee [Cypress environment variables](https://on.cypress.io/environment-variables) and [support.js](support.js). You can try running without code coverage in this project yourself\n\n```shell\n# run with code coverage\nnpm run dev\n# disable code coverage\nnpm run dev:no:coverage\n```\n\n## Links\n\n- Read the [Cypress code coverage guide](http://on.cypress.io/code-coverage)\n- Read [\"Code Coverage by Parcel Bundler\"](https://glebbahmutov.com/blog/code-coverage-by-parcel/) blog post\n- Read [\"Combined End-to-end and Unit Test Coverage\"](https://glebbahmutov.com/blog/combined-end-to-end-and-unit-test-coverage/)\n- If you are using React, check out [@cypress/instrument-cra](https://github.com/cypress-io/instrument-cra)\n- Watch videos in [Cypress Tips & Tricks](https://www.youtube.com/playlist?list=PLP9o9QNnQuAYYRpJzDNWpeuOVTwxmIxcI) playlist\n\n## Examples\n\n### Internal test apps\n\nFull examples we use for testing in this repository:\n\n- [test-apps/backend](test-apps/new-cypress-config/backend) only instruments the backend Node server and saves the coverage report\n- [test-apps/fullstack](test-apps/new-cypress-config/fullstack) instruments and merges backend, e2e and unit test coverage into a single report\n- [test-apps/before-all-visit](test-apps/new-cypress-config/before-all-visit) checks if code coverage works when `cy.visit` is made once in the `before` hook\n- [test-apps/before-each-visit](test-apps/new-cypress-config/before-each-visit) checks if code coverage correctly keeps track of code when doing `cy.visit` before each test\n- [test-apps/one-spec](test-apps/new-cypress-config/one-spec) confirms that coverage is collected and filtered correctly if the user only executes a single Cypress test\n- [test-apps/ts-example](test-apps/new-cypress-config/ts-example) uses Babel + Parcel to instrument and serve TypeScript file\n- [test-apps/use-webpack](test-apps/new-cypress-config/use-webpack) shows Webpack build with source maps and Babel\n- [test-apps/unit-tests-js](test-apps/new-cypress-config/unit-tests-js) runs just the unit tests and reports code coverage (JavaScript source code)\n- [test-apps/unit-tests-ts](test-apps/new-cypress-config/unit-tests-ts) **NOT WORKING** runs just the unit tests and reports code coverage (TypeScript source code)\n\n### External examples\n\nLook up the list of examples under GitHub topic [cypress-code-coverage-example](https://github.com/topics/cypress-code-coverage-example)\n\n- [cypress-io/cypress-realworld-app](https://github.com/cypress-io/cypress-realworld-app) is an easy to setup and run real-world application with E2E, API, and unit tests that achieves 100% code-coverage for both front and back end code. Its CI pipeline also reports code-coverage reports across parallelized test runs to [Codecov](https://codecov.io/gh/cypress-io/cypress-realworld-app).\n- [cypress-io/cypress-example-todomvc-redux](https://github.com/cypress-io/cypress-example-todomvc-redux) is a React / Redux application with 100% code coverage.\n- [cypress-io/cypress-example-conduit-app](https://github.com/cypress-io/cypress-example-conduit-app) shows how to collect the coverage information from both back and front end code and merge it into a single report. The E2E test step runs in parallel in several CI containers, each saving just partial test coverage information. Then a merge job runs taking artifacts and combining coverage into the final report to be sent to an exteral coverage as a service app.\n- [bahmutov/code-coverage-webpack-dev-server](https://github.com/bahmutov/code-coverage-webpack-dev-server) shows how to collect code coverage from an application that uses webpack-dev-server.\n- [bahmutov/code-coverage-vue-example](https://github.com/bahmutov/code-coverage-vue-example) collects code coverage for Vue.js single file components.\n- [lluia/cypress-typescript-coverage-example](https://github.com/lluia/cypress-typescript-coverage-example) shows coverage for React App that uses TypeScript. See discussion in issue [#19](https://github.com/cypress-io/code-coverage/issues/19).\n- [bahmutov/cypress-and-jest](https://github.com/bahmutov/cypress-and-jest) shows how to run Jest unit tests and Cypress unit tests, collecting code coverage from both test runners, and then produce merged report.\n- [rootstrap/react-redux-base](https://github.com/rootstrap/react-redux-base) shows an example with a realistic Webpack config. Instruments the source code using `babel-plugin-istanbul` during tests.\n- [bahmutov/cypress-angular-coverage-example](https://github.com/bahmutov/cypress-angular-coverage-example) forked from [skylock/cypress-angular-coverage-example](https://github.com/skylock/cypress-angular-coverage-example) shows Angular 8 + TypeScript application with instrumentation done using [istanbul-instrumenter-loader](https://github.com/webpack-contrib/istanbul-instrumenter-loader).\n- [bahmutov/testing-react](https://github.com/bahmutov/testing-react) shows how to get code coverage for a React application created using [CRA v3](https://github.com/facebook/create-react-app) without ejecting `react-scripts`.\n- [bahmutov/cra-ts-code-coverage-example](https://github.com/bahmutov/cra-ts-code-coverage-example) instruments TypeScript React application on the fly without ejecting `react-scripts` by using [@cypress/instrument-cra](https://github.com/cypress-io/instrument-cra).\n- [bahmutov/next-and-cypress-example](https://github.com/bahmutov/next-and-cypress-example) shows how to get backend and frontend coverage for a [Next.js](https://nextjs.org) project. Uses [middleware/nextjs.js](middleware/nextjs.js).\n- [kylemh/next-ts-with-cypress-coverage](https://github.com/kylemh/next-ts-with-cypress-coverage) this example project contains Next.js with TypeScript, instrumented coverage reporting, @testing-library/react, and instructions on how to type custom commands.\n- [akoidan/vue-webpack-typescript](https://github.com/akoidan/vue-webpack-typescript) Pure webpack config with vue + typescript with codecov reports. This setup uses babel-loader with TS checker as a separate thread.\n- [bahmutov/code-coverage-subfolder-example](https://github.com/bahmutov/code-coverage-subfolder-example) shows how to instrument `app` folder using `nyc instrument` as a separate step before running E2E tests\n- [bahmutov/docker-with-cypress-included-code-coverage-example](https://github.com/bahmutov/docker-with-cypress-included-code-coverage-example) runs tests inside pre-installed Cypress using [cypress/included:x.y.z](https://github.com/cypress-io/cypress-docker-images/tree/master/included) Docker image and reports code coverage.\n- [bahmutov/app-in-docker-coverage-example](https://github.com/bahmutov/app-in-docker-coverage-example) shows an app running inside a Docker container, while Cypress runs on the local machine. Cypress can still [discover the source files](https://github.com/cypress-io/code-coverage/pull/197) before generating the report.\n- [bahmutov/gatsby-cypress-with-code-coverage](https://github.com/bahmutov/gatsby-cypress-with-code-coverage) shows code coverage using the official Gatsby \"Hello World\" starter.\n- [muratkeremozcan/angular-playground](https://github.com/muratkeremozcan/angular-playground) is an Angular TypeScript application with combined unit and E2E coverage.\n- [nefayran/cypress-react-vite](https://github.com/nefayran/cypress-react-vite) React with Vite and istanbul plugin for code coverage.\n## Migrations\n\n### v2 to v3\n\nChange the plugins file `cypress/plugins/index.js`\n\n```js\n// BEFORE\nmodule.exports = (on, config) => {\n  on('task', require('@cypress/code-coverage/task'))\n}\n// AFTER\nmodule.exports = (on, config) => {\n  require('@cypress/code-coverage/task')(on, config)\n  // IMPORTANT to return the config object\n  // with the any changed environment variables\n  return config\n}\n```\n\n**Tip:** we include [plugins.js](plugins.js) file you can point at from your code in simple cases. From your `cypress.json` file:\n\n```json\n{\n  \"pluginsFile\": \"node_modules/@cypress/code-coverage/plugins\",\n  \"supportFile\": \"node_modules/@cypress/code-coverage/support\"\n}\n```\n\nSee [test-apps/use-plugins-and-support](test-apps/new-cypress-config/use-plugins-and-support)\n\n## Debugging\n\nThis plugin uses [debug](https://github.com/visionmedia/debug) module to output additional logging messages from its [task.js](task.js) file. This can help with debugging errors while saving code coverage or reporting. In order to see these messages, run Cypress from the terminal with environment variable `DEBUG=code-coverage`. Example using Unix syntax to set the variable:\n\n```shell\n$ DEBUG=code-coverage npm run dev\n...\n  code-coverage reset code coverage in interactive mode +0ms\n  code-coverage wrote coverage file /code-coverage/.nyc_output/out.json +28ms\n  code-coverage saving coverage report using command: \"nyc report --report-dir ./coverage --reporter=lcov --reporter=clover --reporter=json\" +3ms\n```\n\nDeeply nested object will sometimes have `[object Object]` values printed. You can print these nested objects by specifying a deeper depth by adding `DEBUG_DEPTH=` setting\n\n```shell\n$ DEBUG_DEPTH=10 DEBUG=code-coverage npm run dev\n```\n\n### Common issues\n\nCommon issue: [not instrumenting your application when running Cypress](#instrument-your-application).\n\nIf the plugin worked before in version X, but stopped after upgrading to version Y, please try the [released versions](https://github.com/cypress-io/code-coverage/releases) between X and Y to see where the breaking change was.\n\nIf you decide to open an issue in this repository, please fill all information the [issue template](https://github.com/cypress-io/code-coverage/blob/master/.github/ISSUE_TEMPLATE/bug_report.md) asks. The issues most likely to be resolved have debug logs, screenshots and hopefully public repository links so we can try running the tests ourselves.\n\n## Contributing\n\nYou can test changes locally by running tests and confirming the code coverage has been calculated and saved.\n\n```shell\nnpm run test:ci\n# now check generated coverage numbers\nnpx nyc report --check-coverage true --lines 80\nnpx nyc report --check-coverage true --lines 100 --include cypress/about.js\nnpx nyc report --check-coverage true --lines 100 --include cypress/unit.js\n```\n\n**Tip:** use [check-code-coverage](https://github.com/bahmutov/check-code-coverage) for stricter code coverage checks than `nyc report --check-coverage` allows.\n\n### Markdown\n\nYou can validate links in Markdown files in this directory by executing (Linux + Mac only) script\n\n```shell\nnpm run check:markdown\n```\n\n## License\n\nThis project is licensed under the terms of the [MIT license](LICENSE.md).\n\n[renovate-badge]: https://img.shields.io/badge/renovate-app-blue.svg\n[renovate-app]: https://renovateapp.com/\n","readmeFilename":"README.md"}