loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request 'test(js): make test-frontend-coverage displays vitest coverage' (#4224) from earl-warren/forgejo:wip-frontend-coverage into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4224
Reviewed-by: twenty-panda <twenty-panda@noreply.codeberg.org>

+225 -4
+1 -1
.forgejo/workflows/testing.yml
··· 36 36 - run: make deps-frontend 37 37 - run: make lint-frontend 38 38 - run: make checks-frontend 39 - - run: make test-frontend 39 + - run: make test-frontend-coverage 40 40 - run: make frontend 41 41 test-unit: 42 42 if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
+5
Makefile
··· 251 251 @echo " - show-version-full show the same version as the API endpoint" 252 252 @echo " - show-version-major show major release number only" 253 253 @echo " - test-frontend test frontend files" 254 + @echo " - test-frontend-coverage test frontend files and display code coverage" 254 255 @echo " - test-backend test backend files" 255 256 @echo " - test-remote-cacher test backend files that use a remote cache" 256 257 @echo " - test-e2e-sqlite[\#name.test.e2e] test end to end using playwright and sqlite" ··· 528 529 .PHONY: test-frontend 529 530 test-frontend: node_modules 530 531 npx vitest 532 + 533 + .PHONY: test-frontend-coverage 534 + test-frontend-coverage: node_modules 535 + npx vitest --coverage --coverage.include 'web_src/**' 531 536 532 537 .PHONY: test-check 533 538 test-check:
+218 -3
package-lock.json
··· 70 70 "@stylistic/eslint-plugin-js": "1.8.1", 71 71 "@stylistic/stylelint-plugin": "2.1.2", 72 72 "@vitejs/plugin-vue": "5.0.4", 73 + "@vitest/coverage-v8": "1.6.0", 73 74 "@vue/test-utils": "2.4.6", 74 75 "eslint": "8.57.0", 75 76 "eslint-plugin-array-func": "4.0.0", ··· 121 122 "url": "https://github.com/sponsors/sindresorhus" 122 123 } 123 124 }, 125 + "node_modules/@ampproject/remapping": { 126 + "version": "2.3.0", 127 + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 128 + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 129 + "dev": true, 130 + "dependencies": { 131 + "@jridgewell/gen-mapping": "^0.3.5", 132 + "@jridgewell/trace-mapping": "^0.3.24" 133 + }, 134 + "engines": { 135 + "node": ">=6.0.0" 136 + } 137 + }, 124 138 "node_modules/@asyncapi/specs": { 125 139 "version": "4.3.1", 126 140 "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-4.3.1.tgz", ··· 142 156 "node": ">=6.9.0" 143 157 } 144 158 }, 159 + "node_modules/@babel/helper-string-parser": { 160 + "version": "7.24.7", 161 + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", 162 + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", 163 + "dev": true, 164 + "engines": { 165 + "node": ">=6.9.0" 166 + } 167 + }, 145 168 "node_modules/@babel/helper-validator-identifier": { 146 - "version": "7.22.20", 147 - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", 148 - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", 169 + "version": "7.24.7", 170 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", 171 + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", 149 172 "engines": { 150 173 "node": ">=6.9.0" 151 174 } ··· 255 278 "engines": { 256 279 "node": ">=6.9.0" 257 280 } 281 + }, 282 + "node_modules/@babel/types": { 283 + "version": "7.24.7", 284 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", 285 + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", 286 + "dev": true, 287 + "dependencies": { 288 + "@babel/helper-string-parser": "^7.24.7", 289 + "@babel/helper-validator-identifier": "^7.24.7", 290 + "to-fast-properties": "^2.0.0" 291 + }, 292 + "engines": { 293 + "node": ">=6.9.0" 294 + } 295 + }, 296 + "node_modules/@bcoe/v8-coverage": { 297 + "version": "0.2.3", 298 + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 299 + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 300 + "dev": true 258 301 }, 259 302 "node_modules/@braintree/sanitize-url": { 260 303 "version": "6.0.4", ··· 1154 1197 }, 1155 1198 "funding": { 1156 1199 "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1200 + } 1201 + }, 1202 + "node_modules/@istanbuljs/schema": { 1203 + "version": "0.1.3", 1204 + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 1205 + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 1206 + "dev": true, 1207 + "engines": { 1208 + "node": ">=8" 1157 1209 } 1158 1210 }, 1159 1211 "node_modules/@jest/schemas": { ··· 2550 2602 "peerDependencies": { 2551 2603 "vite": "^5.0.0", 2552 2604 "vue": "^3.2.25" 2605 + } 2606 + }, 2607 + "node_modules/@vitest/coverage-v8": { 2608 + "version": "1.6.0", 2609 + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.6.0.tgz", 2610 + "integrity": "sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==", 2611 + "dev": true, 2612 + "dependencies": { 2613 + "@ampproject/remapping": "^2.2.1", 2614 + "@bcoe/v8-coverage": "^0.2.3", 2615 + "debug": "^4.3.4", 2616 + "istanbul-lib-coverage": "^3.2.2", 2617 + "istanbul-lib-report": "^3.0.1", 2618 + "istanbul-lib-source-maps": "^5.0.4", 2619 + "istanbul-reports": "^3.1.6", 2620 + "magic-string": "^0.30.5", 2621 + "magicast": "^0.3.3", 2622 + "picocolors": "^1.0.0", 2623 + "std-env": "^3.5.0", 2624 + "strip-literal": "^2.0.0", 2625 + "test-exclude": "^6.0.0" 2626 + }, 2627 + "funding": { 2628 + "url": "https://opencollective.com/vitest" 2629 + }, 2630 + "peerDependencies": { 2631 + "vitest": "1.6.0" 2632 + } 2633 + }, 2634 + "node_modules/@vitest/coverage-v8/node_modules/magic-string": { 2635 + "version": "0.30.10", 2636 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", 2637 + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", 2638 + "dev": true, 2639 + "dependencies": { 2640 + "@jridgewell/sourcemap-codec": "^1.4.15" 2553 2641 } 2554 2642 }, 2555 2643 "node_modules/@vitest/expect": { ··· 6927 7015 "node": ">=14" 6928 7016 } 6929 7017 }, 7018 + "node_modules/html-escaper": { 7019 + "version": "2.0.2", 7020 + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 7021 + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 7022 + "dev": true 7023 + }, 6930 7024 "node_modules/html-tags": { 6931 7025 "version": "3.3.1", 6932 7026 "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", ··· 7626 7720 "node": ">=0.10.0" 7627 7721 } 7628 7722 }, 7723 + "node_modules/istanbul-lib-coverage": { 7724 + "version": "3.2.2", 7725 + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", 7726 + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", 7727 + "dev": true, 7728 + "engines": { 7729 + "node": ">=8" 7730 + } 7731 + }, 7732 + "node_modules/istanbul-lib-report": { 7733 + "version": "3.0.1", 7734 + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 7735 + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 7736 + "dev": true, 7737 + "dependencies": { 7738 + "istanbul-lib-coverage": "^3.0.0", 7739 + "make-dir": "^4.0.0", 7740 + "supports-color": "^7.1.0" 7741 + }, 7742 + "engines": { 7743 + "node": ">=10" 7744 + } 7745 + }, 7746 + "node_modules/istanbul-lib-source-maps": { 7747 + "version": "5.0.4", 7748 + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.4.tgz", 7749 + "integrity": "sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==", 7750 + "dev": true, 7751 + "dependencies": { 7752 + "@jridgewell/trace-mapping": "^0.3.23", 7753 + "debug": "^4.1.1", 7754 + "istanbul-lib-coverage": "^3.0.0" 7755 + }, 7756 + "engines": { 7757 + "node": ">=10" 7758 + } 7759 + }, 7760 + "node_modules/istanbul-reports": { 7761 + "version": "3.1.7", 7762 + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", 7763 + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", 7764 + "dev": true, 7765 + "dependencies": { 7766 + "html-escaper": "^2.0.0", 7767 + "istanbul-lib-report": "^3.0.0" 7768 + }, 7769 + "engines": { 7770 + "node": ">=8" 7771 + } 7772 + }, 7629 7773 "node_modules/iterator.prototype": { 7630 7774 "version": "1.1.2", 7631 7775 "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", ··· 8246 8390 "dev": true, 8247 8391 "dependencies": { 8248 8392 "sourcemap-codec": "^1.4.8" 8393 + } 8394 + }, 8395 + "node_modules/magicast": { 8396 + "version": "0.3.4", 8397 + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", 8398 + "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", 8399 + "dev": true, 8400 + "dependencies": { 8401 + "@babel/parser": "^7.24.4", 8402 + "@babel/types": "^7.24.0", 8403 + "source-map-js": "^1.2.0" 8404 + } 8405 + }, 8406 + "node_modules/make-dir": { 8407 + "version": "4.0.0", 8408 + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 8409 + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 8410 + "dev": true, 8411 + "dependencies": { 8412 + "semver": "^7.5.3" 8413 + }, 8414 + "engines": { 8415 + "node": ">=10" 8416 + }, 8417 + "funding": { 8418 + "url": "https://github.com/sponsors/sindresorhus" 8249 8419 } 8250 8420 }, 8251 8421 "node_modules/markdown-it": { ··· 11838 12008 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 11839 12009 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 11840 12010 }, 12011 + "node_modules/test-exclude": { 12012 + "version": "6.0.0", 12013 + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 12014 + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 12015 + "dev": true, 12016 + "dependencies": { 12017 + "@istanbuljs/schema": "^0.1.2", 12018 + "glob": "^7.1.4", 12019 + "minimatch": "^3.0.4" 12020 + }, 12021 + "engines": { 12022 + "node": ">=8" 12023 + } 12024 + }, 12025 + "node_modules/test-exclude/node_modules/brace-expansion": { 12026 + "version": "1.1.11", 12027 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 12028 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 12029 + "dev": true, 12030 + "dependencies": { 12031 + "balanced-match": "^1.0.0", 12032 + "concat-map": "0.0.1" 12033 + } 12034 + }, 12035 + "node_modules/test-exclude/node_modules/minimatch": { 12036 + "version": "3.1.2", 12037 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 12038 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 12039 + "dev": true, 12040 + "dependencies": { 12041 + "brace-expansion": "^1.1.7" 12042 + }, 12043 + "engines": { 12044 + "node": "*" 12045 + } 12046 + }, 11841 12047 "node_modules/text-table": { 11842 12048 "version": "0.2.0", 11843 12049 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", ··· 11906 12112 "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", 11907 12113 "dependencies": { 11908 12114 "@popperjs/core": "^2.9.0" 12115 + } 12116 + }, 12117 + "node_modules/to-fast-properties": { 12118 + "version": "2.0.0", 12119 + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 12120 + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 12121 + "dev": true, 12122 + "engines": { 12123 + "node": ">=4" 11909 12124 } 11910 12125 }, 11911 12126 "node_modules/to-regex-range": {
+1
package.json
··· 69 69 "@stylistic/eslint-plugin-js": "1.8.1", 70 70 "@stylistic/stylelint-plugin": "2.1.2", 71 71 "@vitejs/plugin-vue": "5.0.4", 72 + "@vitest/coverage-v8": "1.6.0", 72 73 "@vue/test-utils": "2.4.6", 73 74 "eslint": "8.57.0", 74 75 "eslint-plugin-array-func": "4.0.0",