From b76632564a42d9263d9fbff0a431c35adb199e35 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 10:26:45 -0300 Subject: [PATCH 01/43] add in vitest --- package.json | 4 +- src/vitest.setup.js | 11 ++ vitest.config.mjs | 17 +++ yarn.lock | 334 ++++++++++++++++++++++++++++++++++---------- 4 files changed, 295 insertions(+), 71 deletions(-) create mode 100644 src/vitest.setup.js create mode 100644 vitest.config.mjs diff --git a/package.json b/package.json index 551818358c..5e1a79d115 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "build": "yarn generate-icons:webpack && craco build --config craco.config.cjs", "build:stats": "yarn generate-icons:webpack && craco build --config craco.stats.config.cjs", "test": "yarn generate-icons:webpack && craco test", + "test:new": "yarn generate-icons:vite && vitest --config ./vitest.config.mjs", "test:mutation": "npx stryker run", "test:ci": "yarn generate-icons:webpack && craco test --collectCoverage --reporters=default --reporters=jest-junit", "eject": "craco eject", @@ -155,6 +156,7 @@ "http-proxy-middleware": "^2.0.6", "husky": "^9.1.4", "jest-junit": "^13.0.0", + "jsdom": "^25.0.0", "lint-staged": "^15.2.8", "msw": "^1.2.1", "postcss": "^8.4.31", @@ -171,7 +173,7 @@ "vite-plugin-ejs": "^1.7.0", "vite-plugin-svgr": "^4.2.0", "vite-tsconfig-paths": "^5.0.1", - "vitest": "^2.0.5", + "vitest": "^2.1.1", "webpack": "^5.84.1", "webpackbar": "^6.0.1" }, diff --git a/src/vitest.setup.js b/src/vitest.setup.js new file mode 100644 index 0000000000..54098c59d4 --- /dev/null +++ b/src/vitest.setup.js @@ -0,0 +1,11 @@ +import * as matchers from '@testing-library/jest-dom/matchers' +import { cleanup } from '@testing-library/react' +import { afterEach, expect } from 'vitest' + +// not sure why this lint is being fired here so I'm disabling it +// eslint-disable-next-line testing-library/await-fire-event +expect.extend(matchers) + +afterEach(() => { + cleanup() +}) diff --git a/vitest.config.mjs b/vitest.config.mjs new file mode 100644 index 0000000000..27d08d738f --- /dev/null +++ b/vitest.config.mjs @@ -0,0 +1,17 @@ +import { defineConfig, mergeConfig } from 'vitest/config' + +import viteConfig from './vite.config.mjs' + +export default defineConfig((configEnv) => + mergeConfig( + viteConfig(configEnv), + defineConfig({ + test: { + globals: true, + environment: ['jsdom'], + setupFiles: './src/vitest.setup.js', + include: ['**/*.test.*'], + }, + }) + ) +) diff --git a/yarn.lock b/yarn.lock index ce83a4f9de..dfe98a016e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -51,7 +51,7 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.0, @ampproject/remapping@npm:^2.3.0": +"@ampproject/remapping@npm:^2.2.0": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" dependencies: @@ -6629,66 +6629,85 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/expect@npm:2.0.5" +"@vitest/expect@npm:2.1.1": + version: 2.1.1 + resolution: "@vitest/expect@npm:2.1.1" dependencies: - "@vitest/spy": "npm:2.0.5" - "@vitest/utils": "npm:2.0.5" + "@vitest/spy": "npm:2.1.1" + "@vitest/utils": "npm:2.1.1" chai: "npm:^5.1.1" tinyrainbow: "npm:^1.2.0" - checksum: 10c0/08cb1b0f106d16a5b60db733e3d436fa5eefc68571488eb570dfe4f599f214ab52e4342273b03dbe12331cc6c0cdc325ac6c94f651ad254cd62f3aa0e3d185aa + checksum: 10c0/2a467bcd37378b653040cca062a665f382087eb9f69cff670848a0c207a8458f27211c408c75b7e563e069a2e6d533c78f24e1a317c259646b948813342dbf3d languageName: node linkType: hard -"@vitest/pretty-format@npm:2.0.5, @vitest/pretty-format@npm:^2.0.5": - version: 2.0.5 - resolution: "@vitest/pretty-format@npm:2.0.5" +"@vitest/mocker@npm:2.1.1": + version: 2.1.1 + resolution: "@vitest/mocker@npm:2.1.1" + dependencies: + "@vitest/spy": "npm:^2.1.0-beta.1" + estree-walker: "npm:^3.0.3" + magic-string: "npm:^0.30.11" + peerDependencies: + "@vitest/spy": 2.1.1 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 10c0/e0681bb75bf7255ce49f720d193c9c795a64d42fef13c7af5c157514ebce88a5b89dbf702aa0929d4cefaed3db73351bd3ade3ccabecc09a23a872d9c55be50d + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:2.1.1, @vitest/pretty-format@npm:^2.1.1": + version: 2.1.1 + resolution: "@vitest/pretty-format@npm:2.1.1" dependencies: tinyrainbow: "npm:^1.2.0" - checksum: 10c0/236c0798c5170a0b5ad5d4bd06118533738e820b4dd30079d8fbcb15baee949d41c60f42a9f769906c4a5ce366d7ef11279546070646c0efc03128c220c31f37 + checksum: 10c0/21057465a794a037a7af2c48397531eadf9b2d8a7b4d1ee5af9081cf64216cd0039b9e06317319df79aa2240fed1dbb6767b530deae2bd4b42d6fb974297e97d languageName: node linkType: hard -"@vitest/runner@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/runner@npm:2.0.5" +"@vitest/runner@npm:2.1.1": + version: 2.1.1 + resolution: "@vitest/runner@npm:2.1.1" dependencies: - "@vitest/utils": "npm:2.0.5" + "@vitest/utils": "npm:2.1.1" pathe: "npm:^1.1.2" - checksum: 10c0/d0ed3302a7e015bf44b7c0df9d8f7da163659e082d86f9406944b5a31a61ab9ddc1de530e06176d1f4ef0bde994b44bff4c7dab62aacdc235c8fc04b98e4a72a + checksum: 10c0/a6d1424d6224d8a60ed0bbf7cdacb165ef36bc71cc957ad2c11ed1989fa5106636173369f0d8e1fa3f319a965091e52c8ce21203fce4bafe772632ccc2bd65a6 languageName: node linkType: hard -"@vitest/snapshot@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/snapshot@npm:2.0.5" +"@vitest/snapshot@npm:2.1.1": + version: 2.1.1 + resolution: "@vitest/snapshot@npm:2.1.1" dependencies: - "@vitest/pretty-format": "npm:2.0.5" - magic-string: "npm:^0.30.10" + "@vitest/pretty-format": "npm:2.1.1" + magic-string: "npm:^0.30.11" pathe: "npm:^1.1.2" - checksum: 10c0/7bf38474248f5ae0aac6afad511785d2b7a023ac5158803c2868fd172b5b9c1a569fb1dd64a09a49e43fd342cab71ea485ada89b7f08d37b1622a5a0ac00271d + checksum: 10c0/e9dadee87a2f489883dec0360b55b2776d2a07e460bf2430b34867cd4e9f34b09b3e219a23bc8c3e1359faefdd166072d3305b66a0bea475c7d616470b7d841c languageName: node linkType: hard -"@vitest/spy@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/spy@npm:2.0.5" +"@vitest/spy@npm:2.1.1, @vitest/spy@npm:^2.1.0-beta.1": + version: 2.1.1 + resolution: "@vitest/spy@npm:2.1.1" dependencies: tinyspy: "npm:^3.0.0" - checksum: 10c0/70634c21921eb271b54d2986c21d7ab6896a31c0f4f1d266940c9bafb8ac36237846d6736638cbf18b958bd98e5261b158a6944352742accfde50b7818ff655e + checksum: 10c0/b251be1390c105b68aa95270159c4583c3e1a0f7a2e1f82db8b7fadedc3cb459c5ef9286033a1ae764810e00715552fc80afe4507cd8b0065934fb1a64926e06 languageName: node linkType: hard -"@vitest/utils@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/utils@npm:2.0.5" +"@vitest/utils@npm:2.1.1": + version: 2.1.1 + resolution: "@vitest/utils@npm:2.1.1" dependencies: - "@vitest/pretty-format": "npm:2.0.5" - estree-walker: "npm:^3.0.3" + "@vitest/pretty-format": "npm:2.1.1" loupe: "npm:^3.1.1" tinyrainbow: "npm:^1.2.0" - checksum: 10c0/0d1de748298f07a50281e1ba058b05dcd58da3280c14e6f016265e950bd79adab6b97822de8f0ea82d3070f585654801a9b1bcf26db4372e51cf7746bf86d73b + checksum: 10c0/b724c7f23591860bd24cd8e6d0cd803405f4fbff746db160a948290742144463287566a05ca400deb56817603b5185c4429707947869c3d453805860b5e3a3e5 languageName: node linkType: hard @@ -8990,6 +9009,15 @@ __metadata: languageName: node linkType: hard +"cssstyle@npm:^4.0.1": + version: 4.1.0 + resolution: "cssstyle@npm:4.1.0" + dependencies: + rrweb-cssom: "npm:^0.7.1" + checksum: 10c0/05c6597e5d3e0ec6b15221f2c0ce9a0443a46cc50a6089a3ba9ee1ac27f83ff86a445a8f95435137dadd859f091fc61b6d342abaf396d3c910471b5b33cfcbfa + languageName: node + linkType: hard + "csstype@npm:^3.0.2, csstype@npm:^3.1.2": version: 3.1.3 resolution: "csstype@npm:3.1.3" @@ -9160,6 +9188,16 @@ __metadata: languageName: node linkType: hard +"data-urls@npm:^5.0.0": + version: 5.0.0 + resolution: "data-urls@npm:5.0.0" + dependencies: + whatwg-mimetype: "npm:^4.0.0" + whatwg-url: "npm:^14.0.0" + checksum: 10c0/1b894d7d41c861f3a4ed2ae9b1c3f0909d4575ada02e36d3d3bc584bdd84278e20709070c79c3b3bff7ac98598cb191eb3e86a89a79ea4ee1ef360e1694f92ad + languageName: node + linkType: hard + "data-view-buffer@npm:^1.0.1": version: 1.0.1 resolution: "data-view-buffer@npm:1.0.1" @@ -9239,7 +9277,19 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.5, debug@npm:~4.3.6": +"debug@npm:^4.3.6": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + languageName: node + linkType: hard + +"debug@npm:~4.3.6": version: 4.3.6 resolution: "debug@npm:4.3.6" dependencies: @@ -9258,7 +9308,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.1": +"decimal.js@npm:^10.2.1, decimal.js@npm:^10.4.3": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee @@ -11189,6 +11239,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + languageName: node + linkType: hard + "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -11407,6 +11468,7 @@ __metadata: husky: "npm:^9.1.4" jest-junit: "npm:^13.0.0" js-cookie: "npm:^3.0.5" + jsdom: "npm:^25.0.0" launchdarkly-react-client-sdk: "npm:^3.0.9" lint-staged: "npm:^15.2.8" lodash: "npm:^4.17.21" @@ -11446,7 +11508,7 @@ __metadata: vite-plugin-ejs: "npm:^1.7.0" vite-plugin-svgr: "npm:^4.2.0" vite-tsconfig-paths: "npm:^5.0.1" - vitest: "npm:^2.0.5" + vitest: "npm:^2.1.1" webpack: "npm:^5.84.1" webpackbar: "npm:^6.0.1" zod: "npm:^3.21.4" @@ -11940,6 +12002,15 @@ __metadata: languageName: node linkType: hard +"html-encoding-sniffer@npm:^4.0.0": + version: 4.0.0 + resolution: "html-encoding-sniffer@npm:4.0.0" + dependencies: + whatwg-encoding: "npm:^3.1.1" + checksum: 10c0/523398055dc61ac9b34718a719cb4aa691e4166f29187e211e1607de63dc25ac7af52ca7c9aead0c4b3c0415ffecb17326396e1202e2e86ff4bca4c0ee4c6140 + languageName: node + linkType: hard + "html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": version: 2.5.2 resolution: "html-entities@npm:2.5.2" @@ -12068,7 +12139,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^7.0.0": +"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.2": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" dependencies: @@ -12117,7 +12188,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1": +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5": version: 7.0.5 resolution: "https-proxy-agent@npm:7.0.5" dependencies: @@ -12166,7 +12237,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -13734,6 +13805,40 @@ __metadata: languageName: node linkType: hard +"jsdom@npm:^25.0.0": + version: 25.0.0 + resolution: "jsdom@npm:25.0.0" + dependencies: + cssstyle: "npm:^4.0.1" + data-urls: "npm:^5.0.0" + decimal.js: "npm:^10.4.3" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^4.0.0" + http-proxy-agent: "npm:^7.0.2" + https-proxy-agent: "npm:^7.0.5" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.12" + parse5: "npm:^7.1.2" + rrweb-cssom: "npm:^0.7.1" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^4.1.4" + w3c-xmlserializer: "npm:^5.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^3.1.1" + whatwg-mimetype: "npm:^4.0.0" + whatwg-url: "npm:^14.0.0" + ws: "npm:^8.18.0" + xml-name-validator: "npm:^5.0.0" + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/1552bcfb816b2c69ae159ba0cd79e8964030c106cc0cb2deb20a64c1ca54e1ea41352b9802d89b7cf823e43e6d74ed7289abff4aacc95b1b2bc936570aab3594 + languageName: node + linkType: hard + "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" @@ -14271,7 +14376,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.10": +"magic-string@npm:^0.30.11": version: 0.30.11 resolution: "magic-string@npm:0.30.11" dependencies: @@ -15194,7 +15299,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -15477,7 +15582,7 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0": +"nwsapi@npm:^2.2.0, nwsapi@npm:^2.2.12": version: 2.2.12 resolution: "nwsapi@npm:2.2.12" checksum: 10c0/95e9623d63df111405503df8c5d800e26f71675d319e2c9c70cddfa31e5ace1d3f8b6d98d354544fc156a1506d920ec291e303fab761e4f99296868e199a466e @@ -15879,6 +15984,15 @@ __metadata: languageName: node linkType: hard +"parse5@npm:^7.1.2": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: "npm:^4.4.0" + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 + languageName: node + linkType: hard + "parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -17176,7 +17290,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": +"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 @@ -18379,6 +18493,13 @@ __metadata: languageName: node linkType: hard +"rrweb-cssom@npm:^0.7.1": + version: 0.7.1 + resolution: "rrweb-cssom@npm:0.7.1" + checksum: 10c0/127b8ca6c8aac45e2755abbae6138d4a813b1bedc2caabf79466ae83ab3cfc84b5bfab513b7033f0aa4561c7753edf787d0dd01163ceacdee2e8eb1b6bf7237e + languageName: node + linkType: hard + "rtl-css-js@npm:^1.16.1": version: 1.16.1 resolution: "rtl-css-js@npm:1.16.1" @@ -18514,6 +18635,15 @@ __metadata: languageName: node linkType: hard +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: "npm:^2.2.0" + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 + languageName: node + linkType: hard + "scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" @@ -19880,13 +20010,20 @@ __metadata: languageName: node linkType: hard -"tinybench@npm:^2.8.0": +"tinybench@npm:^2.9.0": version: 2.9.0 resolution: "tinybench@npm:2.9.0" checksum: 10c0/c3500b0f60d2eb8db65250afe750b66d51623057ee88720b7f064894a6cb7eb93360ca824a60a31ab16dab30c7b1f06efe0795b352e37914a9d4bad86386a20c languageName: node linkType: hard +"tinyexec@npm:^0.3.0": + version: 0.3.0 + resolution: "tinyexec@npm:0.3.0" + checksum: 10c0/138a4f4241aea6b6312559508468ab275a31955e66e2f57ed206e0aaabecee622624f208c5740345f0a66e33478fd065e359ed1eb1269eb6fd4fa25d44d0ba3b + languageName: node + linkType: hard + "tinypool@npm:^1.0.0": version: 1.0.1 resolution: "tinypool@npm:1.0.1" @@ -19954,7 +20091,7 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0": +"tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.4": version: 4.1.4 resolution: "tough-cookie@npm:4.1.4" dependencies: @@ -19984,6 +20121,15 @@ __metadata: languageName: node linkType: hard +"tr46@npm:^5.0.0": + version: 5.0.0 + resolution: "tr46@npm:5.0.0" + dependencies: + punycode: "npm:^2.3.1" + checksum: 10c0/1521b6e7bbc8adc825c4561480f9fe48eb2276c81335eed9fa610aa4c44a48a3221f78b10e5f18b875769eb3413e30efbf209ed556a17a42aa8d690df44b7bee + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -21218,18 +21364,17 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:2.0.5": - version: 2.0.5 - resolution: "vite-node@npm:2.0.5" +"vite-node@npm:2.1.1": + version: 2.1.1 + resolution: "vite-node@npm:2.1.1" dependencies: cac: "npm:^6.7.14" - debug: "npm:^4.3.5" + debug: "npm:^4.3.6" pathe: "npm:^1.1.2" - tinyrainbow: "npm:^1.2.0" vite: "npm:^5.0.0" bin: vite-node: vite-node.mjs - checksum: 10c0/affcc58ae8d45bce3e8bc3b5767acd57c24441634e2cd967cf97f4e5ed2bcead1714b60150cdf7ee153ebad47659c5cd419883207e1a95b69790331e3243749f + checksum: 10c0/8a8b958df3d48af915e07e7efb042ee4c036ca0b73d2c411dc29254fd3533ada0807ce5096d8339894d3e786418b7d1a9c4ae02718c6aca11b5098de2b14c336 languageName: node linkType: hard @@ -21359,34 +21504,34 @@ __metadata: languageName: node linkType: hard -"vitest@npm:^2.0.5": - version: 2.0.5 - resolution: "vitest@npm:2.0.5" - dependencies: - "@ampproject/remapping": "npm:^2.3.0" - "@vitest/expect": "npm:2.0.5" - "@vitest/pretty-format": "npm:^2.0.5" - "@vitest/runner": "npm:2.0.5" - "@vitest/snapshot": "npm:2.0.5" - "@vitest/spy": "npm:2.0.5" - "@vitest/utils": "npm:2.0.5" +"vitest@npm:^2.1.1": + version: 2.1.1 + resolution: "vitest@npm:2.1.1" + dependencies: + "@vitest/expect": "npm:2.1.1" + "@vitest/mocker": "npm:2.1.1" + "@vitest/pretty-format": "npm:^2.1.1" + "@vitest/runner": "npm:2.1.1" + "@vitest/snapshot": "npm:2.1.1" + "@vitest/spy": "npm:2.1.1" + "@vitest/utils": "npm:2.1.1" chai: "npm:^5.1.1" - debug: "npm:^4.3.5" - execa: "npm:^8.0.1" - magic-string: "npm:^0.30.10" + debug: "npm:^4.3.6" + magic-string: "npm:^0.30.11" pathe: "npm:^1.1.2" std-env: "npm:^3.7.0" - tinybench: "npm:^2.8.0" + tinybench: "npm:^2.9.0" + tinyexec: "npm:^0.3.0" tinypool: "npm:^1.0.0" tinyrainbow: "npm:^1.2.0" vite: "npm:^5.0.0" - vite-node: "npm:2.0.5" + vite-node: "npm:2.1.1" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 2.0.5 - "@vitest/ui": 2.0.5 + "@vitest/browser": 2.1.1 + "@vitest/ui": 2.1.1 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -21404,7 +21549,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 10c0/b4e6cca00816bf967a8589111ded72faa12f92f94ccdd0dcd0698ffcfdfc52ec662753f66b387549c600ac699b993fd952efbd99dc57fcf4d1c69a2f1022b259 + checksum: 10c0/77a67092338613376dadd8f6f6872383db8409402ce400ac1de48efd87a7214183e798484a3eb2310221c03554e37a00f9fdbc91e49194e7c68e009a5589f494 languageName: node linkType: hard @@ -21426,6 +21571,15 @@ __metadata: languageName: node linkType: hard +"w3c-xmlserializer@npm:^5.0.0": + version: 5.0.0 + resolution: "w3c-xmlserializer@npm:5.0.0" + dependencies: + xml-name-validator: "npm:^5.0.0" + checksum: 10c0/8712774c1aeb62dec22928bf1cdfd11426c2c9383a1a63f2bcae18db87ca574165a0fbe96b312b73652149167ac6c7f4cf5409f2eb101d9c805efe0e4bae798b + languageName: node + linkType: hard + "walk-up-path@npm:^3.0.1": version: 3.0.1 resolution: "walk-up-path@npm:3.0.1" @@ -21520,6 +21674,13 @@ __metadata: languageName: node linkType: hard +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + languageName: node + linkType: hard + "webpack-dev-middleware@npm:^5.3.4": version: 5.3.4 resolution: "webpack-dev-middleware@npm:5.3.4" @@ -21757,6 +21918,15 @@ __metadata: languageName: node linkType: hard +"whatwg-encoding@npm:^3.1.1": + version: 3.1.1 + resolution: "whatwg-encoding@npm:3.1.1" + dependencies: + iconv-lite: "npm:0.6.3" + checksum: 10c0/273b5f441c2f7fda3368a496c3009edbaa5e43b71b09728f90425e7f487e5cef9eb2b846a31bd760dd8077739c26faf6b5ca43a5f24033172b003b72cf61a93e + languageName: node + linkType: hard + "whatwg-fetch@npm:^3.6.2": version: 3.6.20 resolution: "whatwg-fetch@npm:3.6.20" @@ -21771,6 +21941,23 @@ __metadata: languageName: node linkType: hard +"whatwg-mimetype@npm:^4.0.0": + version: 4.0.0 + resolution: "whatwg-mimetype@npm:4.0.0" + checksum: 10c0/a773cdc8126b514d790bdae7052e8bf242970cebd84af62fb2f35a33411e78e981f6c0ab9ed1fe6ec5071b09d5340ac9178e05b52d35a9c4bcf558ba1b1551df + languageName: node + linkType: hard + +"whatwg-url@npm:^14.0.0": + version: 14.0.0 + resolution: "whatwg-url@npm:14.0.0" + dependencies: + tr46: "npm:^5.0.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/ac32e9ba9d08744605519bbe9e1371174d36229689ecc099157b6ba102d4251a95e81d81f3d80271eb8da182eccfa65653f07f0ab43ea66a6934e643fd091ba9 + languageName: node + linkType: hard + "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" @@ -22214,7 +22401,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.13.0, ws@npm:^8.2.3": +"ws@npm:^8.13.0, ws@npm:^8.18.0, ws@npm:^8.2.3": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: @@ -22236,6 +22423,13 @@ __metadata: languageName: node linkType: hard +"xml-name-validator@npm:^5.0.0": + version: 5.0.0 + resolution: "xml-name-validator@npm:5.0.0" + checksum: 10c0/3fcf44e7b73fb18be917fdd4ccffff3639373c7cb83f8fc35df6001fecba7942f1dbead29d91ebb8315e2f2ff786b508f0c9dc0215b6353f9983c6b7d62cb1f5 + languageName: node + linkType: hard + "xml@npm:^1.0.1": version: 1.0.1 resolution: "xml@npm:1.0.1" From 8a1c7b128640560c56f6f84b99b29757cc04374d Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 10:27:28 -0300 Subject: [PATCH 02/43] rename old_ui tests from spec to test for vitest --- .../{AppLink.spec.jsx => AppLink.test.jsx} | 0 .../{Avatar.spec.jsx => Avatar.test.jsx} | 0 .../Card/{Card.spec.jsx => Card.test.jsx} | 0 .../Icon/{Icon.spec.jsx => Icon.test.jsx} | 48 +++++++------------ .../{Message.spec.jsx => Message.test.jsx} | 3 +- .../User/{User.spec.jsx => User.test.jsx} | 0 6 files changed, 20 insertions(+), 31 deletions(-) rename src/old_ui/AppLink/{AppLink.spec.jsx => AppLink.test.jsx} (100%) rename src/old_ui/Avatar/{Avatar.spec.jsx => Avatar.test.jsx} (100%) rename src/old_ui/Card/{Card.spec.jsx => Card.test.jsx} (100%) rename src/old_ui/Icon/{Icon.spec.jsx => Icon.test.jsx} (57%) rename src/old_ui/Message/{Message.spec.jsx => Message.test.jsx} (96%) rename src/old_ui/User/{User.spec.jsx => User.test.jsx} (100%) diff --git a/src/old_ui/AppLink/AppLink.spec.jsx b/src/old_ui/AppLink/AppLink.test.jsx similarity index 100% rename from src/old_ui/AppLink/AppLink.spec.jsx rename to src/old_ui/AppLink/AppLink.test.jsx diff --git a/src/old_ui/Avatar/Avatar.spec.jsx b/src/old_ui/Avatar/Avatar.test.jsx similarity index 100% rename from src/old_ui/Avatar/Avatar.spec.jsx rename to src/old_ui/Avatar/Avatar.test.jsx diff --git a/src/old_ui/Card/Card.spec.jsx b/src/old_ui/Card/Card.test.jsx similarity index 100% rename from src/old_ui/Card/Card.spec.jsx rename to src/old_ui/Card/Card.test.jsx diff --git a/src/old_ui/Icon/Icon.spec.jsx b/src/old_ui/Icon/Icon.test.jsx similarity index 57% rename from src/old_ui/Icon/Icon.spec.jsx rename to src/old_ui/Icon/Icon.test.jsx index f2671587c6..68e5852d5e 100644 --- a/src/old_ui/Icon/Icon.spec.jsx +++ b/src/old_ui/Icon/Icon.test.jsx @@ -3,71 +3,59 @@ import { render, screen } from '@testing-library/react' import Icon from './Icon' describe('Icon', () => { - function setup(props) { - render() - } - describe('when rendered with a SVG we have', () => { - beforeEach(() => { - setup({ name: 'check' }) - }) - it('renders a svg', () => { - const icon = screen.queryByText('check.svg') + render() + + const icon = screen.getByTestId('check-svg') expect(icon).toBeInTheDocument() }) }) describe('when rendered with a SVG we dont have', () => { - beforeEach(() => { - setup({ name: 'icon-we-dont-have' }) - }) - it('renders a svg', async () => { - const icon = screen.queryByText('icon-we-dont-have.svg') + render() + + const icon = screen.queryByTestId('icon-we-dont-have-svg') expect(icon).not.toBeInTheDocument() }) }) describe('renders small icon', () => { - beforeEach(() => { - setup({ name: 'check', size: 'sm' }) - }) it('renders small icon', async () => { - const icon = await screen.findByText('check.svg') + render() + + const icon = screen.getByTestId('check-svg') expect(icon).toHaveClass('w-3') expect(icon).toHaveClass('h-3') }) }) describe('renders medium icon', () => { - beforeEach(() => { - setup({ name: 'check' }) - }) it('renders small icon', async () => { - const icon = await screen.findByText('check.svg') + render() + + const icon = screen.getByTestId('check-svg') expect(icon).toHaveClass('w-6') expect(icon).toHaveClass('h-6') }) }) describe('renders large icon', () => { - beforeEach(() => { - setup({ name: 'check', size: 'lg' }) - }) it('renders small icon', async () => { - const icon = await screen.findByText('check.svg') + render() + + const icon = screen.getByTestId('check-svg') expect(icon).toHaveClass('w-16') expect(icon).toHaveClass('h-16') }) }) describe('renders custom size icon', () => { - beforeEach(() => { - setup({ name: 'check', size: 'lg', iconClass: 'w-1 h-1' }) - }) it('renders small icon', async () => { - const icon = await screen.findByText('check.svg') + render() + + const icon = screen.getByTestId('check-svg') expect(icon).toHaveClass('w-1') expect(icon).toHaveClass('h-1') }) diff --git a/src/old_ui/Message/Message.spec.jsx b/src/old_ui/Message/Message.test.jsx similarity index 96% rename from src/old_ui/Message/Message.spec.jsx rename to src/old_ui/Message/Message.test.jsx index 16ea1cccdf..0750868590 100644 --- a/src/old_ui/Message/Message.spec.jsx +++ b/src/old_ui/Message/Message.test.jsx @@ -1,5 +1,6 @@ import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' +import { vi } from 'vitest' import Message from '.' @@ -9,7 +10,7 @@ describe('Message', () => { const defaultProps = { variant: 'info', children: 'hello', - onClose: jest.fn(), + onClose: vi.fn(), } function setup(over = {}) { diff --git a/src/old_ui/User/User.spec.jsx b/src/old_ui/User/User.test.jsx similarity index 100% rename from src/old_ui/User/User.spec.jsx rename to src/old_ui/User/User.test.jsx From 627b1457611bd243ee87e236ac74001c21acc9a9 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 11:12:32 -0300 Subject: [PATCH 03/43] add in data-testid to icon --- src/old_ui/Icon/Icon.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/old_ui/Icon/Icon.jsx b/src/old_ui/Icon/Icon.jsx index 0c41802505..03519d5ad1 100644 --- a/src/old_ui/Icon/Icon.jsx +++ b/src/old_ui/Icon/Icon.jsx @@ -22,7 +22,10 @@ function Icon({ if (!IconSvg) return null return ( - + ) } From dc8fe8d33ee24a35d8a5eed1fc9ec461cf7533a0 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 11:17:14 -0300 Subject: [PATCH 04/43] temp --- src/old_ui/Icon/svg/index.jsx | 51 +-- src/ui/Icon/svg/developer/index.jsx | 26 +- src/ui/Icon/svg/outline/index.jsx | 500 +++++++++++++--------------- src/ui/Icon/svg/solid/index.jsx | 497 +++++++++++++-------------- 4 files changed, 487 insertions(+), 587 deletions(-) diff --git a/src/old_ui/Icon/svg/index.jsx b/src/old_ui/Icon/svg/index.jsx index 77c4f20d3b..00e3a5b742 100644 --- a/src/old_ui/Icon/svg/index.jsx +++ b/src/old_ui/Icon/svg/index.jsx @@ -1,35 +1,18 @@ -import { ReactComponent as angleDown } from './angleDown.svg' -import { ReactComponent as angleUp } from './angleUp.svg' -import { ReactComponent as arrowLeft } from './arrowLeft.svg' -import { ReactComponent as ban } from './ban.svg' -import { ReactComponent as check } from './check.svg' -import { ReactComponent as chevronLeft } from './chevronLeft.svg' -import { ReactComponent as chevronRight } from './chevronRight.svg' -import { ReactComponent as creditCard } from './creditCard.svg' -import { ReactComponent as exclamationCircle } from './exclamationCircle.svg' -import { ReactComponent as fileAlt } from './fileAlt.svg' -import { ReactComponent as hamburger } from './hamburger.svg' -import { ReactComponent as infoCircle } from './infoCircle.svg' -import { ReactComponent as search } from './search.svg' -import { ReactComponent as setting } from './setting.svg' -import { ReactComponent as signOut } from './signOut.svg' -import { ReactComponent as times } from './times.svg' +import angleDown from './angleDown.svg?react' +import angleUp from './angleUp.svg?react' +import arrowLeft from './arrowLeft.svg?react' +import ban from './ban.svg?react' +import check from './check.svg?react' +import chevronLeft from './chevronLeft.svg?react' +import chevronRight from './chevronRight.svg?react' +import creditCard from './creditCard.svg?react' +import exclamationCircle from './exclamationCircle.svg?react' +import fileAlt from './fileAlt.svg?react' +import hamburger from './hamburger.svg?react' +import infoCircle from './infoCircle.svg?react' +import search from './search.svg?react' +import setting from './setting.svg?react' +import signOut from './signOut.svg?react' +import times from './times.svg?react' -export { - angleDown, - angleUp, - arrowLeft, - ban, - check, - chevronLeft, - chevronRight, - creditCard, - exclamationCircle, - fileAlt, - hamburger, - infoCircle, - search, - setting, - signOut, - times, -} +export { angleDown, angleUp, arrowLeft, ban, check, chevronLeft, chevronRight, creditCard, exclamationCircle, fileAlt, hamburger, infoCircle, search, setting, signOut, times } \ No newline at end of file diff --git a/src/ui/Icon/svg/developer/index.jsx b/src/ui/Icon/svg/developer/index.jsx index e2d4375846..4f9619e56c 100644 --- a/src/ui/Icon/svg/developer/index.jsx +++ b/src/ui/Icon/svg/developer/index.jsx @@ -1,14 +1,14 @@ -// import { ReactComponent as branchDeleted } from './branch-deleted.svg' -import { ReactComponent as branch } from './branch.svg' -// import { ReactComponent as commit } from './commit.svg' -// import { ReactComponent as comparison } from './comparison.svg' -// import { ReactComponent as fork } from './fork.svg' -// import { ReactComponent as gitMerge } from './git-merge.svg' -// import { ReactComponent as hook } from './hook.svg' -import { ReactComponent as merge } from './merge.svg' -import { ReactComponent as pullRequestClosed } from './pull-request-closed.svg' -import { ReactComponent as pullRequestOpen } from './pull-request-open.svg' -// import { ReactComponent as pullRequest } from './pull-request.svg' -// import { ReactComponent as statusRunning } from './status-running.svg' +// import branchDeleted from './branch-deleted.svg?react' +import branch from './branch.svg?react' +// import commit from './commit.svg?react' +// import comparison from './comparison.svg?react' +// import fork from './fork.svg?react' +// import gitMerge from './git-merge.svg?react' +// import hook from './hook.svg?react' +import merge from './merge.svg?react' +import pullRequestClosed from './pull-request-closed.svg?react' +import pullRequestOpen from './pull-request-open.svg?react' +// import pullRequest from './pull-request.svg?react' +// import statusRunning from './status-running.svg?react' -export { branch, merge, pullRequestClosed, pullRequestOpen } +export { branch, merge, pullRequestClosed, pullRequestOpen } \ No newline at end of file diff --git a/src/ui/Icon/svg/outline/index.jsx b/src/ui/Icon/svg/outline/index.jsx index 2984fcb5ef..49993e1c52 100644 --- a/src/ui/Icon/svg/outline/index.jsx +++ b/src/ui/Icon/svg/outline/index.jsx @@ -1,272 +1,230 @@ -// import { ReactComponent as academicCap } from './academic-cap.svg' -// import { ReactComponent as adjustments } from './adjustments.svg' -// import { ReactComponent as annotation } from './annotation.svg' -// import { ReactComponent as archive } from './archive.svg' -// import { ReactComponent as arrowCircleDown } from './arrow-circle-down.svg' -// import { ReactComponent as arrowCircleLeft } from './arrow-circle-left.svg' -// import { ReactComponent as arrowCircleRight } from './arrow-circle-right.svg' -// import { ReactComponent as arrowCircleUp } from './arrow-circle-up.svg' -import { ReactComponent as arrowDown } from './arrow-down.svg' -// import { ReactComponent as arrowLeft } from './arrow-left.svg' -// import { ReactComponent as arrowNarrowDown } from './arrow-narrow-down.svg' -// import { ReactComponent as arrowNarrowLeft } from './arrow-narrow-left.svg' -// import { ReactComponent as arrowNarrowRight } from './arrow-narrow-right.svg' -// import { ReactComponent as arrowNarrowUp } from './arrow-narrow-up.svg' -// import { ReactComponent as arrowRight } from './arrow-right.svg' -import { ReactComponent as arrowUp } from './arrow-up.svg' -// import { ReactComponent as arrowsExpand } from './arrows-expand.svg' -// import { ReactComponent as atSymbol } from './at-symbol.svg' -// import { ReactComponent as backspace } from './backspace.svg' -// import { ReactComponent as badgeCheck } from './badge-check.svg' -import { ReactComponent as ban } from './ban.svg' -// import { ReactComponent as beaker } from './beaker.svg' -// import { ReactComponent as bell } from './bell.svg' -import { ReactComponent as bookOpen } from './book-open.svg' -// import { ReactComponent as bookmarkAlt } from './bookmark-alt.svg' -// import { ReactComponent as bookmark } from './bookmark.svg' -// import { ReactComponent as briefcase } from './briefcase.svg' -// import { ReactComponent as cake } from './cake.svg' -// import { ReactComponent as calculator } from './calculator.svg' -// import { ReactComponent as calendar } from './calendar.svg' -// import { ReactComponent as camera } from './camera.svg' -// import { ReactComponent as cash } from './cash.svg' -// import { ReactComponent as chartBar } from './chart-bar.svg' -// import { ReactComponent as chartPie } from './chart-pie.svg' -// import { ReactComponent as chartSquareBar } from './chart-square-bar.svg' -// import { ReactComponent as chatAlt2 } from './chat-alt-2.svg' -// import { ReactComponent as chatAlt } from './chat-alt.svg' -// import { ReactComponent as chat } from './chat.svg' -import { ReactComponent as checkCircle } from './check-circle.svg' -import { ReactComponent as check } from './check.svg' -// import { ReactComponent as chevronDoubleDown } from './chevron-double-down.svg' -// import { ReactComponent as chevronDoubleLeft } from './chevron-double-left.svg' -// import { ReactComponent as chevronDoubleRight } from './chevron-double-right.svg' -// import { ReactComponent as chevronDoubleUp } from './chevron-double-up.svg' -import { ReactComponent as chevronDown } from './chevron-down.svg' -import { ReactComponent as chevronLeft } from './chevron-left.svg' -import { ReactComponent as chevronRight } from './chevron-right.svg' -import { ReactComponent as chevronUp } from './chevron-up.svg' -// import { ReactComponent as chip } from './chip.svg' -// import { ReactComponent as clipboardCheck } from './clipboard-check.svg' -import { ReactComponent as clipboardCopy } from './clipboard-copy.svg' -// import { ReactComponent as clipboardList } from './clipboard-list.svg' -// import { ReactComponent as clipboard } from './clipboard.svg' -// import { ReactComponent as clock } from './clock.svg' -// import { ReactComponent as cloudDownload } from './cloud-download.svg' -// import { ReactComponent as cloudUpload } from './cloud-upload.svg' -// import { ReactComponent as cloud } from './cloud.svg' -// import { ReactComponent as code } from './code.svg' -import { ReactComponent as cog } from './cog.svg' -// import { ReactComponent as collection } from './collection.svg' -// import { ReactComponent as colorSwatch } from './color-swatch.svg' -// import { ReactComponent as creditCard } from './credit-card.svg' -// import { ReactComponent as cubeTransparent } from './cube-transparent.svg' -// import { ReactComponent as cube } from './cube.svg' -// import { ReactComponent as currencyBangladeshi } from './currency-bangladeshi.svg' -// import { ReactComponent as currencyDollar } from './currency-dollar.svg' -// import { ReactComponent as currencyEuro } from './currency-euro.svg' -// import { ReactComponent as currencyPound } from './currency-pound.svg' -// import { ReactComponent as currencyRupee } from './currency-rupee.svg' -// import { ReactComponent as currencyYen } from './currency-yen.svg' -// import { ReactComponent as cursorClick } from './cursor-click.svg' -import { ReactComponent as database } from './database.svg' -// import { ReactComponent as desktopComputer } from './desktop-computer.svg' -// import { ReactComponent as deviceMobile } from './device-mobile.svg' -// import { ReactComponent as deviceTablet } from './device-tablet.svg' -// import { ReactComponent as documentAdd } from './document-add.svg' -// import { ReactComponent as documentDownload } from './document-download.svg' -// import { ReactComponent as documentDuplicate } from './document-duplicate.svg' -// import { ReactComponent as documentRemove } from './document-remove.svg' -// import { ReactComponent as documentReport } from './document-report.svg' -// import { ReactComponent as documentSearch } from './document-search.svg' -import { ReactComponent as documentText } from './document-text.svg' -import { ReactComponent as document } from './document.svg' -// import { ReactComponent as dotsCircleHorizontal } from './dots-circle-horizontal.svg' -// import { ReactComponent as dotsHorizontal } from './dots-horizontal.svg' -// import { ReactComponent as dotsVertical } from './dots-vertical.svg' -import { ReactComponent as download } from './download.svg' -// import { ReactComponent as duplicate } from './duplicate.svg' -// import { ReactComponent as emojiHappy } from './emoji-happy.svg' -// import { ReactComponent as emojiSad } from './emoji-sad.svg' -import { ReactComponent as exclamationCircle } from './exclamation-circle.svg' -import { ReactComponent as exclamationTriangle } from './exclamation-triangle.svg' -import { ReactComponent as exclamation } from './exclamation.svg' -import { ReactComponent as externalLink } from './external-link.svg' -import { ReactComponent as eyeOff } from './eye-off.svg' -import { ReactComponent as eye } from './eye.svg' -// import { ReactComponent as fastForward } from './fast-forward.svg' -// import { ReactComponent as film } from './film.svg' -// import { ReactComponent as filter } from './filter.svg' -// import { ReactComponent as fingerPrint } from './finger-print.svg' -// import { ReactComponent as fire } from './fire.svg' -import { ReactComponent as flag } from './flag.svg' -// import { ReactComponent as folderAdd } from './folder-add.svg' -// import { ReactComponent as folderDownload } from './folder-download.svg' -// import { ReactComponent as folderOpen } from './folder-open.svg' -// import { ReactComponent as folderRemove } from './folder-remove.svg' -import { ReactComponent as folder } from './folder.svg' -// import { ReactComponent as gift } from './gift.svg' -import { ReactComponent as globeAlt } from './globe-alt.svg' -// import { ReactComponent as globe } from './globe.svg' -// import { ReactComponent as hand } from './hand.svg' -// import { ReactComponent as hashtag } from './hashtag.svg' -// import { ReactComponent as heart } from './heart.svg' -import { ReactComponent as home } from './home.svg' -// import { ReactComponent as identification } from './identification.svg' -// import { ReactComponent as inboxIn } from './inbox-in.svg' -// import { ReactComponent as inbox } from './inbox.svg' -import { ReactComponent as informationCircle } from './information-circle.svg' -// import { ReactComponent as key } from './key.svg' -// import { ReactComponent as library } from './library.svg' -import { ReactComponent as lightBulb } from './light-bulb.svg' -// import { ReactComponent as lightningBolt } from './lightning-bolt.svg' -// import { ReactComponent as link } from './link.svg' -// import { ReactComponent as locationMarker } from './location-marker.svg' -import { ReactComponent as lockClosed } from './lock-closed.svg' -// import { ReactComponent as lockOpen } from './lock-open.svg' -// import { ReactComponent as login } from './login.svg' -// import { ReactComponent as logout } from './logout.svg' -// import { ReactComponent as mailOpen } from './mail-open.svg' -// import { ReactComponent as mail } from './mail.svg' -// import { ReactComponent as map } from './map.svg' -// import { ReactComponent as menuAlt1 } from './menu-alt-1.svg' -// import { ReactComponent as menuAlt2 } from './menu-alt-2.svg' -// import { ReactComponent as menuAlt3 } from './menu-alt-3.svg' -// import { ReactComponent as menuAlt4 } from './menu-alt-4.svg' -// import { ReactComponent as menu } from './menu.svg' -// import { ReactComponent as microphone } from './microphone.svg' -// import { ReactComponent as minusCircle } from './minus-circle.svg' -// import { ReactComponent as minusSm } from './minus-sm.svg' -// import { ReactComponent as minus } from './minus.svg' -import { ReactComponent as moon } from './moon.svg' -// import { ReactComponent as musicNote } from './music-note.svg' -// import { ReactComponent as newspaper } from './newspaper.svg' -import { ReactComponent as noSymbol } from './no-symbol.svg' -// import { ReactComponent as officeBuilding } from './office-building.svg' -// import { ReactComponent as paperAirplane } from './paper-airplane.svg' -// import { ReactComponent as paperClip } from './paper-clip.svg' -// import { ReactComponent as pause } from './pause.svg' -// import { ReactComponent as pencilAlt } from './pencil-alt.svg' -// import { ReactComponent as pencil } from './pencil.svg' -// import { ReactComponent as phoneIncoming } from './phone-incoming.svg' -// import { ReactComponent as phoneMissedCall } from './phone-missed-call.svg' -// import { ReactComponent as phoneOutgoing } from './phone-outgoing.svg' -// import { ReactComponent as phone } from './phone.svg' -// import { ReactComponent as photograph } from './photograph.svg' -// import { ReactComponent as play } from './play.svg' -import { ReactComponent as plusCircle } from './plus-circle.svg' -// import { ReactComponent as plusSm } from './plus-sm.svg' -// import { ReactComponent as plus } from './plus.svg' -// import { ReactComponent as presentationChartBar } from './presentation-chart-bar.svg' -// import { ReactComponent as presentationChartLine } from './presentation-chart-line.svg' -import { ReactComponent as printer } from './printer.svg' -// import { ReactComponent as puzzle } from './puzzle.svg' -// import { ReactComponent as qrcode } from './qrcode.svg' -import { ReactComponent as questionMarkCircle } from './question-mark-circle.svg' -// import { ReactComponent as receiptRefund } from './receipt-refund.svg' -// import { ReactComponent as receiptTax } from './receipt-tax.svg' -import { ReactComponent as refresh } from './refresh.svg' -// import { ReactComponent as reply } from './reply.svg' -// import { ReactComponent as rewind } from './rewind.svg' -// import { ReactComponent as rss } from './rss.svg' -// import { ReactComponent as saveAs } from './save-as.svg' -// import { ReactComponent as save } from './save.svg' -// import { ReactComponent as scale } from './scale.svg' -// import { ReactComponent as scissors } from './scissors.svg' -// import { ReactComponent as searchCircle } from './search-circle.svg' -import { ReactComponent as search } from './search.svg' -// import { ReactComponent as selector } from './selector.svg' -// import { ReactComponent as server } from './server.svg' -// import { ReactComponent as share } from './share.svg' -// import { ReactComponent as shieldCheck } from './shield-check.svg' -// import { ReactComponent as shieldExclamation } from './shield-exclamation.svg' -// import { ReactComponent as shoppingBag } from './shopping-bag.svg' -// import { ReactComponent as shoppingCart } from './shopping-cart.svg' -// import { ReactComponent as sortAscending } from './sort-ascending.svg' -// import { ReactComponent as sortDescending } from './sort-descending.svg' -// import { ReactComponent as sparkles } from './sparkles.svg' -import { ReactComponent as speakerphone } from './speakerphone.svg' -// import { ReactComponent as star } from './star.svg' -// import { ReactComponent as statusOffline } from './status-offline.svg' -// import { ReactComponent as statusOnline } from './status-online.svg' -// import { ReactComponent as stop } from './stop.svg' -import { ReactComponent as sun } from './sun.svg' -// import { ReactComponent as support } from './support.svg' -// import { ReactComponent as switchHorizontal } from './switch-horizontal.svg' -// import { ReactComponent as switchVertical } from './switch-vertical.svg' -// import { ReactComponent as table } from './table.svg' -// import { ReactComponent as tag } from './tag.svg' -// import { ReactComponent as template } from './template.svg' -// import { ReactComponent as terminal } from './terminal.svg' -// import { ReactComponent as thumbDown } from './thumb-down.svg' -// import { ReactComponent as thumbUp } from './thumb-up.svg' -// import { ReactComponent as ticket } from './ticket.svg' -// import { ReactComponent as translate } from './translate.svg' -import { ReactComponent as trash } from './trash.svg' -// import { ReactComponent as trendingDown } from './trending-down.svg' -// import { ReactComponent as trendingUp } from './trending-up.svg' -// import { ReactComponent as truck } from './truck.svg' -// import { ReactComponent as upload } from './upload.svg' -// import { ReactComponent as userAdd } from './user-add.svg' -// import { ReactComponent as userCircle } from './user-circle.svg' -// import { ReactComponent as userGroup } from './user-group.svg' -// import { ReactComponent as userRemove } from './user-remove.svg' -// import { ReactComponent as user } from './user.svg' -// import { ReactComponent as users } from './users.svg' -// import { ReactComponent as variable } from './variable.svg' -// import { ReactComponent as videoCamera } from './video-camera.svg' -// import { ReactComponent as viewBoards } from './view-boards.svg' -// import { ReactComponent as viewGridAdd } from './view-grid-add.svg' -// import { ReactComponent as viewGrid } from './view-grid.svg' -// import { ReactComponent as viewList } from './view-list.svg' -// import { ReactComponent as volumeOff } from './volume-off.svg' -// import { ReactComponent as volumeUp } from './volume-up.svg' -// import { ReactComponent as wifi } from './wifi.svg' -import { ReactComponent as xCircle } from './x-circle.svg' -import { ReactComponent as x } from './x.svg' -// import { ReactComponent as zoomIn } from './zoom-in.svg' -// import { ReactComponent as zoomOut } from './zoom-out.svg' +// import academicCap from './academic-cap.svg?react' +// import adjustments from './adjustments.svg?react' +// import annotation from './annotation.svg?react' +// import archive from './archive.svg?react' +// import arrowCircleDown from './arrow-circle-down.svg?react' +// import arrowCircleLeft from './arrow-circle-left.svg?react' +// import arrowCircleRight from './arrow-circle-right.svg?react' +// import arrowCircleUp from './arrow-circle-up.svg?react' +import arrowDown from './arrow-down.svg?react' +// import arrowLeft from './arrow-left.svg?react' +// import arrowNarrowDown from './arrow-narrow-down.svg?react' +// import arrowNarrowLeft from './arrow-narrow-left.svg?react' +// import arrowNarrowRight from './arrow-narrow-right.svg?react' +// import arrowNarrowUp from './arrow-narrow-up.svg?react' +// import arrowRight from './arrow-right.svg?react' +import arrowUp from './arrow-up.svg?react' +// import arrowsExpand from './arrows-expand.svg?react' +// import atSymbol from './at-symbol.svg?react' +// import backspace from './backspace.svg?react' +// import badgeCheck from './badge-check.svg?react' +import ban from './ban.svg?react' +// import beaker from './beaker.svg?react' +// import bell from './bell.svg?react' +import bookOpen from './book-open.svg?react' +// import bookmarkAlt from './bookmark-alt.svg?react' +// import bookmark from './bookmark.svg?react' +// import briefcase from './briefcase.svg?react' +// import cake from './cake.svg?react' +// import calculator from './calculator.svg?react' +// import calendar from './calendar.svg?react' +// import camera from './camera.svg?react' +// import cash from './cash.svg?react' +// import chartBar from './chart-bar.svg?react' +// import chartPie from './chart-pie.svg?react' +// import chartSquareBar from './chart-square-bar.svg?react' +// import chatAlt2 from './chat-alt-2.svg?react' +// import chatAlt from './chat-alt.svg?react' +// import chat from './chat.svg?react' +import checkCircle from './check-circle.svg?react' +import check from './check.svg?react' +// import chevronDoubleDown from './chevron-double-down.svg?react' +// import chevronDoubleLeft from './chevron-double-left.svg?react' +// import chevronDoubleRight from './chevron-double-right.svg?react' +// import chevronDoubleUp from './chevron-double-up.svg?react' +import chevronDown from './chevron-down.svg?react' +import chevronLeft from './chevron-left.svg?react' +import chevronRight from './chevron-right.svg?react' +import chevronUp from './chevron-up.svg?react' +// import chip from './chip.svg?react' +// import clipboardCheck from './clipboard-check.svg?react' +import clipboardCopy from './clipboard-copy.svg?react' +// import clipboardList from './clipboard-list.svg?react' +// import clipboard from './clipboard.svg?react' +// import clock from './clock.svg?react' +// import cloudDownload from './cloud-download.svg?react' +// import cloudUpload from './cloud-upload.svg?react' +// import cloud from './cloud.svg?react' +// import code from './code.svg?react' +import cog from './cog.svg?react' +// import collection from './collection.svg?react' +// import colorSwatch from './color-swatch.svg?react' +// import creditCard from './credit-card.svg?react' +// import cubeTransparent from './cube-transparent.svg?react' +// import cube from './cube.svg?react' +// import currencyBangladeshi from './currency-bangladeshi.svg?react' +// import currencyDollar from './currency-dollar.svg?react' +// import currencyEuro from './currency-euro.svg?react' +// import currencyPound from './currency-pound.svg?react' +// import currencyRupee from './currency-rupee.svg?react' +// import currencyYen from './currency-yen.svg?react' +// import cursorClick from './cursor-click.svg?react' +import database from './database.svg?react' +// import desktopComputer from './desktop-computer.svg?react' +// import deviceMobile from './device-mobile.svg?react' +// import deviceTablet from './device-tablet.svg?react' +// import documentAdd from './document-add.svg?react' +// import documentDownload from './document-download.svg?react' +// import documentDuplicate from './document-duplicate.svg?react' +// import documentRemove from './document-remove.svg?react' +// import documentReport from './document-report.svg?react' +// import documentSearch from './document-search.svg?react' +import documentText from './document-text.svg?react' +import document from './document.svg?react' +// import dotsCircleHorizontal from './dots-circle-horizontal.svg?react' +// import dotsHorizontal from './dots-horizontal.svg?react' +// import dotsVertical from './dots-vertical.svg?react' +import download from './download.svg?react' +// import duplicate from './duplicate.svg?react' +// import emojiHappy from './emoji-happy.svg?react' +// import emojiSad from './emoji-sad.svg?react' +import exclamationCircle from './exclamation-circle.svg?react' +import exclamationTriangle from './exclamation-triangle.svg?react' +import exclamation from './exclamation.svg?react' +import externalLink from './external-link.svg?react' +import eyeOff from './eye-off.svg?react' +import eye from './eye.svg?react' +// import fastForward from './fast-forward.svg?react' +// import film from './film.svg?react' +// import filter from './filter.svg?react' +// import fingerPrint from './finger-print.svg?react' +// import fire from './fire.svg?react' +import flag from './flag.svg?react' +// import folderAdd from './folder-add.svg?react' +// import folderDownload from './folder-download.svg?react' +// import folderOpen from './folder-open.svg?react' +// import folderRemove from './folder-remove.svg?react' +import folder from './folder.svg?react' +// import gift from './gift.svg?react' +import globeAlt from './globe-alt.svg?react' +// import globe from './globe.svg?react' +// import hand from './hand.svg?react' +// import hashtag from './hashtag.svg?react' +// import heart from './heart.svg?react' +import home from './home.svg?react' +// import identification from './identification.svg?react' +// import inboxIn from './inbox-in.svg?react' +// import inbox from './inbox.svg?react' +import informationCircle from './information-circle.svg?react' +// import key from './key.svg?react' +// import library from './library.svg?react' +import lightBulb from './light-bulb.svg?react' +// import lightningBolt from './lightning-bolt.svg?react' +// import link from './link.svg?react' +// import locationMarker from './location-marker.svg?react' +import lockClosed from './lock-closed.svg?react' +// import lockOpen from './lock-open.svg?react' +// import login from './login.svg?react' +// import logout from './logout.svg?react' +// import mailOpen from './mail-open.svg?react' +// import mail from './mail.svg?react' +// import map from './map.svg?react' +// import menuAlt1 from './menu-alt-1.svg?react' +// import menuAlt2 from './menu-alt-2.svg?react' +// import menuAlt3 from './menu-alt-3.svg?react' +// import menuAlt4 from './menu-alt-4.svg?react' +// import menu from './menu.svg?react' +// import microphone from './microphone.svg?react' +// import minusCircle from './minus-circle.svg?react' +// import minusSm from './minus-sm.svg?react' +// import minus from './minus.svg?react' +import moon from './moon.svg?react' +// import musicNote from './music-note.svg?react' +// import newspaper from './newspaper.svg?react' +import noSymbol from './no-symbol.svg?react' +// import officeBuilding from './office-building.svg?react' +// import paperAirplane from './paper-airplane.svg?react' +// import paperClip from './paper-clip.svg?react' +// import pause from './pause.svg?react' +// import pencilAlt from './pencil-alt.svg?react' +// import pencil from './pencil.svg?react' +// import phoneIncoming from './phone-incoming.svg?react' +// import phoneMissedCall from './phone-missed-call.svg?react' +// import phoneOutgoing from './phone-outgoing.svg?react' +// import phone from './phone.svg?react' +// import photograph from './photograph.svg?react' +// import play from './play.svg?react' +import plusCircle from './plus-circle.svg?react' +// import plusSm from './plus-sm.svg?react' +// import plus from './plus.svg?react' +// import presentationChartBar from './presentation-chart-bar.svg?react' +// import presentationChartLine from './presentation-chart-line.svg?react' +import printer from './printer.svg?react' +// import puzzle from './puzzle.svg?react' +// import qrcode from './qrcode.svg?react' +import questionMarkCircle from './question-mark-circle.svg?react' +// import receiptRefund from './receipt-refund.svg?react' +// import receiptTax from './receipt-tax.svg?react' +import refresh from './refresh.svg?react' +// import reply from './reply.svg?react' +// import rewind from './rewind.svg?react' +// import rss from './rss.svg?react' +// import saveAs from './save-as.svg?react' +// import save from './save.svg?react' +// import scale from './scale.svg?react' +// import scissors from './scissors.svg?react' +// import searchCircle from './search-circle.svg?react' +import search from './search.svg?react' +// import selector from './selector.svg?react' +// import server from './server.svg?react' +// import share from './share.svg?react' +// import shieldCheck from './shield-check.svg?react' +// import shieldExclamation from './shield-exclamation.svg?react' +// import shoppingBag from './shopping-bag.svg?react' +// import shoppingCart from './shopping-cart.svg?react' +// import sortAscending from './sort-ascending.svg?react' +// import sortDescending from './sort-descending.svg?react' +// import sparkles from './sparkles.svg?react' +import speakerphone from './speakerphone.svg?react' +// import star from './star.svg?react' +// import statusOffline from './status-offline.svg?react' +// import statusOnline from './status-online.svg?react' +// import stop from './stop.svg?react' +import sun from './sun.svg?react' +// import support from './support.svg?react' +// import switchHorizontal from './switch-horizontal.svg?react' +// import switchVertical from './switch-vertical.svg?react' +// import table from './table.svg?react' +// import tag from './tag.svg?react' +// import template from './template.svg?react' +// import terminal from './terminal.svg?react' +// import thumbDown from './thumb-down.svg?react' +// import thumbUp from './thumb-up.svg?react' +// import ticket from './ticket.svg?react' +// import translate from './translate.svg?react' +import trash from './trash.svg?react' +// import trendingDown from './trending-down.svg?react' +// import trendingUp from './trending-up.svg?react' +// import truck from './truck.svg?react' +// import upload from './upload.svg?react' +// import userAdd from './user-add.svg?react' +// import userCircle from './user-circle.svg?react' +// import userGroup from './user-group.svg?react' +// import userRemove from './user-remove.svg?react' +// import user from './user.svg?react' +// import users from './users.svg?react' +// import variable from './variable.svg?react' +// import videoCamera from './video-camera.svg?react' +// import viewBoards from './view-boards.svg?react' +// import viewGridAdd from './view-grid-add.svg?react' +// import viewGrid from './view-grid.svg?react' +// import viewList from './view-list.svg?react' +// import volumeOff from './volume-off.svg?react' +// import volumeUp from './volume-up.svg?react' +// import wifi from './wifi.svg?react' +import xCircle from './x-circle.svg?react' +import x from './x.svg?react' +// import zoomIn from './zoom-in.svg?react' +// import zoomOut from './zoom-out.svg?react' -export { - arrowDown, - arrowUp, - ban, - bookOpen, - checkCircle, - check, - chevronDown, - chevronLeft, - chevronRight, - chevronUp, - clipboardCopy, - cog, - database, - documentText, - document, - download, - exclamationCircle, - exclamationTriangle, - exclamation, - externalLink, - eyeOff, - eye, - flag, - folder, - globeAlt, - home, - informationCircle, - lightBulb, - lockClosed, - moon, - noSymbol, - plusCircle, - printer, - questionMarkCircle, - refresh, - search, - speakerphone, - sun, - trash, - xCircle, - x, -} +export { arrowDown, arrowUp, ban, bookOpen, checkCircle, check, chevronDown, chevronLeft, chevronRight, chevronUp, clipboardCopy, cog, database, documentText, document, download, exclamationCircle, exclamationTriangle, exclamation, externalLink, eyeOff, eye, flag, folder, globeAlt, home, informationCircle, lightBulb, lockClosed, moon, noSymbol, plusCircle, printer, questionMarkCircle, refresh, search, speakerphone, sun, trash, xCircle, x } \ No newline at end of file diff --git a/src/ui/Icon/svg/solid/index.jsx b/src/ui/Icon/svg/solid/index.jsx index 88b3814d85..6c5354e2b1 100644 --- a/src/ui/Icon/svg/solid/index.jsx +++ b/src/ui/Icon/svg/solid/index.jsx @@ -1,270 +1,229 @@ -// import { ReactComponent as academicCap } from './academic-cap.svg' -// import { ReactComponent as adjustments } from './adjustments.svg' -// import { ReactComponent as annotation } from './annotation.svg' -// import { ReactComponent as archive } from './archive.svg' -// import { ReactComponent as arrowCircleDown } from './arrow-circle-down.svg' -// import { ReactComponent as arrowCircleLeft } from './arrow-circle-left.svg' -// import { ReactComponent as arrowCircleRight } from './arrow-circle-right.svg' -// import { ReactComponent as arrowCircleUp } from './arrow-circle-up.svg' -import { ReactComponent as arrowDown } from './arrow-down.svg' -// import { ReactComponent as arrowLeft } from './arrow-left.svg' -// import { ReactComponent as arrowNarrowDown } from './arrow-narrow-down.svg' -// import { ReactComponent as arrowNarrowLeft } from './arrow-narrow-left.svg' -// import { ReactComponent as arrowNarrowRight } from './arrow-narrow-right.svg' -// import { ReactComponent as arrowNarrowUp } from './arrow-narrow-up.svg' -// import { ReactComponent as arrowRight } from './arrow-right.svg' -import { ReactComponent as arrowUp } from './arrow-up.svg' -// import { ReactComponent as arrowsExpand } from './arrows-expand.svg' -// import { ReactComponent as atSymbol } from './at-symbol.svg' -// import { ReactComponent as backspace } from './backspace.svg' -// import { ReactComponent as badgeCheck } from './badge-check.svg' -import { ReactComponent as ban } from './ban.svg' -// import { ReactComponent as beaker } from './beaker.svg' -// import { ReactComponent as bell } from './bell.svg' -import { ReactComponent as bookOpen } from './book-open.svg' -// import { ReactComponent as bookmarkAlt } from './bookmark-alt.svg' -// import { ReactComponent as bookmark } from './bookmark.svg' -// import { ReactComponent as briefcase } from './briefcase.svg' -// import { ReactComponent as cake } from './cake.svg' -// import { ReactComponent as calculator } from './calculator.svg' -// import { ReactComponent as calendar } from './calendar.svg' -// import { ReactComponent as camera } from './camera.svg' -// import { ReactComponent as cash } from './cash.svg' -// import { ReactComponent as chartBar } from './chart-bar.svg' -// import { ReactComponent as chartPie } from './chart-pie.svg' -// import { ReactComponent as chartSquareBar } from './chart-square-bar.svg' -// import { ReactComponent as chatAlt2 } from './chat-alt-2.svg' -// import { ReactComponent as chatAlt } from './chat-alt.svg' -// import { ReactComponent as chat } from './chat.svg' -import { ReactComponent as checkCircle } from './check-circle.svg' -import { ReactComponent as check } from './check.svg' -// import { ReactComponent as chevronDoubleDown } from './chevron-double-down.svg' -// import { ReactComponent as chevronDoubleLeft } from './chevron-double-left.svg' -// import { ReactComponent as chevronDoubleRight } from './chevron-double-right.svg' -// import { ReactComponent as chevronDoubleUp } from './chevron-double-up.svg' -import { ReactComponent as chevronDown } from './chevron-down.svg' -import { ReactComponent as chevronLeft } from './chevron-left.svg' -import { ReactComponent as chevronRight } from './chevron-right.svg' -import { ReactComponent as chevronUp } from './chevron-up.svg' -// import { ReactComponent as chip } from './chip.svg' -// import { ReactComponent as clipboardCheck } from './clipboard-check.svg' -import { ReactComponent as clipboardCopy } from './clipboard-copy.svg' -// import { ReactComponent as clipboardList } from './clipboard-list.svg' -// import { ReactComponent as clipboard } from './clipboard.svg' -// import { ReactComponent as clock } from './clock.svg' -// import { ReactComponent as cloudDownload } from './cloud-download.svg' -// import { ReactComponent as cloudUpload } from './cloud-upload.svg' -// import { ReactComponent as cloud } from './cloud.svg' -// import { ReactComponent as code } from './code.svg' -import { ReactComponent as cog } from './cog.svg' -// import { ReactComponent as collection } from './collection.svg' -// import { ReactComponent as colorSwatch } from './color-swatch.svg' -// import { ReactComponent as creditCard } from './credit-card.svg' -// import { ReactComponent as cubeTransparent } from './cube-transparent.svg' -// import { ReactComponent as cube } from './cube.svg' -// import { ReactComponent as currencyBangladeshi } from './currency-bangladeshi.svg' -// import { ReactComponent as currencyDollar } from './currency-dollar.svg' -// import { ReactComponent as currencyEuro } from './currency-euro.svg' -// import { ReactComponent as currencyPound } from './currency-pound.svg' -// import { ReactComponent as currencyRupee } from './currency-rupee.svg' -// import { ReactComponent as currencyYen } from './currency-yen.svg' -// import { ReactComponent as cursorClick } from './cursor-click.svg' -import { ReactComponent as database } from './database.svg' -// import { ReactComponent as desktopComputer } from './desktop-computer.svg' -// import { ReactComponent as deviceMobile } from './device-mobile.svg' -// import { ReactComponent as deviceTablet } from './device-tablet.svg' -// import { ReactComponent as documentAdd } from './document-add.svg' -// import { ReactComponent as documentDownload } from './document-download.svg' -// import { ReactComponent as documentDuplicate } from './document-duplicate.svg' -// import { ReactComponent as documentRemove } from './document-remove.svg' -// import { ReactComponent as documentReport } from './document-report.svg' -// import { ReactComponent as documentSearch } from './document-search.svg' -import { ReactComponent as documentText } from './document-text.svg' -import { ReactComponent as document } from './document.svg' -// import { ReactComponent as dotsCircleHorizontal } from './dots-circle-horizontal.svg' -// import { ReactComponent as dotsHorizontal } from './dots-horizontal.svg' -// import { ReactComponent as dotsVertical } from './dots-vertical.svg' -import { ReactComponent as download } from './download.svg' -// import { ReactComponent as duplicate } from './duplicate.svg' -// import { ReactComponent as emojiHappy } from './emoji-happy.svg' -// import { ReactComponent as emojiSad } from './emoji-sad.svg' -import { ReactComponent as exclamationCircle } from './exclamation-circle.svg' -import { ReactComponent as exclamation } from './exclamation.svg' -import { ReactComponent as externalLink } from './external-link.svg' -import { ReactComponent as eyeOff } from './eye-off.svg' -import { ReactComponent as eye } from './eye.svg' -// import { ReactComponent as fastForward } from './fast-forward.svg' -// import { ReactComponent as film } from './film.svg' -// import { ReactComponent as filter } from './filter.svg' -// import { ReactComponent as fingerPrint } from './finger-print.svg' -// import { ReactComponent as fire } from './fire.svg' -import { ReactComponent as flag } from './flag.svg' -// import { ReactComponent as folderAdd } from './folder-add.svg' -// import { ReactComponent as folderDownload } from './folder-download.svg' -// import { ReactComponent as folderOpen } from './folder-open.svg' -// import { ReactComponent as folderRemove } from './folder-remove.svg' -import { ReactComponent as folder } from './folder.svg' -// import { ReactComponent as gift } from './gift.svg' -import { ReactComponent as globeAlt } from './globe-alt.svg' -// import { ReactComponent as globe } from './globe.svg' -// import { ReactComponent as hand } from './hand.svg' -// import { ReactComponent as hashtag } from './hashtag.svg' -// import { ReactComponent as heart } from './heart.svg' -import { ReactComponent as home } from './home.svg' -// import { ReactComponent as identification } from './identification.svg' -// import { ReactComponent as inboxIn } from './inbox-in.svg' -// import { ReactComponent as inbox } from './inbox.svg' -import { ReactComponent as informationCircle } from './information-circle.svg' -// import { ReactComponent as key } from './key.svg' -// import { ReactComponent as library } from './library.svg' -import { ReactComponent as lightBulb } from './light-bulb.svg' -// import { ReactComponent as lightningBolt } from './lightning-bolt.svg' -// import { ReactComponent as link } from './link.svg' -// import { ReactComponent as locationMarker } from './location-marker.svg' -import { ReactComponent as lockClosed } from './lock-closed.svg' -// import { ReactComponent as lockOpen } from './lock-open.svg' -// import { ReactComponent as login } from './login.svg' -// import { ReactComponent as logout } from './logout.svg' -// import { ReactComponent as mailOpen } from './mail-open.svg' -// import { ReactComponent as mail } from './mail.svg' -// import { ReactComponent as map } from './map.svg' -// import { ReactComponent as menuAlt1 } from './menu-alt-1.svg' -// import { ReactComponent as menuAlt2 } from './menu-alt-2.svg' -// import { ReactComponent as menuAlt3 } from './menu-alt-3.svg' -// import { ReactComponent as menuAlt4 } from './menu-alt-4.svg' -// import { ReactComponent as menu } from './menu.svg' -// import { ReactComponent as microphone } from './microphone.svg' -// import { ReactComponent as minusCircle } from './minus-circle.svg' -// import { ReactComponent as minusSm } from './minus-sm.svg' -// import { ReactComponent as minus } from './minus.svg' -import { ReactComponent as moon } from './moon.svg' -// import { ReactComponent as musicNote } from './music-note.svg' -// import { ReactComponent as newspaper } from './newspaper.svg' -import { ReactComponent as noSymbol } from './no-symbol.svg' -// import { ReactComponent as officeBuilding } from './office-building.svg' -// import { ReactComponent as paperAirplane } from './paper-airplane.svg' -// import { ReactComponent as paperClip } from './paper-clip.svg' -// import { ReactComponent as pause } from './pause.svg' -// import { ReactComponent as pencilAlt } from './pencil-alt.svg' -// import { ReactComponent as pencil } from './pencil.svg' -// import { ReactComponent as phoneIncoming } from './phone-incoming.svg' -// import { ReactComponent as phoneMissedCall } from './phone-missed-call.svg' -// import { ReactComponent as phoneOutgoing } from './phone-outgoing.svg' -// import { ReactComponent as phone } from './phone.svg' -// import { ReactComponent as photograph } from './photograph.svg' -// import { ReactComponent as play } from './play.svg' -import { ReactComponent as plusCircle } from './plus-circle.svg' -// import { ReactComponent as plusSm } from './plus-sm.svg' -// import { ReactComponent as plus } from './plus.svg' -// import { ReactComponent as presentationChartBar } from './presentation-chart-bar.svg' -// import { ReactComponent as presentationChartLine } from './presentation-chart-line.svg' -import { ReactComponent as printer } from './printer.svg' -// import { ReactComponent as puzzle } from './puzzle.svg' -// import { ReactComponent as qrcode } from './qrcode.svg' -import { ReactComponent as questionMarkCircle } from './question-mark-circle.svg' -// import { ReactComponent as receiptRefund } from './receipt-refund.svg' -// import { ReactComponent as receiptTax } from './receipt-tax.svg' -import { ReactComponent as refresh } from './refresh.svg' -// import { ReactComponent as reply } from './reply.svg' -// import { ReactComponent as rewind } from './rewind.svg' -// import { ReactComponent as rss } from './rss.svg' -// import { ReactComponent as saveAs } from './save-as.svg' -// import { ReactComponent as save } from './save.svg' -// import { ReactComponent as scale } from './scale.svg' -// import { ReactComponent as scissors } from './scissors.svg' -// import { ReactComponent as searchCircle } from './search-circle.svg' -import { ReactComponent as search } from './search.svg' -// import { ReactComponent as selector } from './selector.svg' -// import { ReactComponent as server } from './server.svg' -// import { ReactComponent as share } from './share.svg' -// import { ReactComponent as shieldCheck } from './shield-check.svg' -// import { ReactComponent as shieldExclamation } from './shield-exclamation.svg' -// import { ReactComponent as shoppingBag } from './shopping-bag.svg' -// import { ReactComponent as shoppingCart } from './shopping-cart.svg' -// import { ReactComponent as sortAscending } from './sort-ascending.svg' -// import { ReactComponent as sortDescending } from './sort-descending.svg' -// import { ReactComponent as sparkles } from './sparkles.svg' -import { ReactComponent as speakerphone } from './speakerphone.svg' -// import { ReactComponent as star } from './star.svg' -// import { ReactComponent as statusOffline } from './status-offline.svg' -// import { ReactComponent as statusOnline } from './status-online.svg' -// import { ReactComponent as stop } from './stop.svg' -import { ReactComponent as sun } from './sun.svg' -// import { ReactComponent as support } from './support.svg' -// import { ReactComponent as switchHorizontal } from './switch-horizontal.svg' -// import { ReactComponent as switchVertical } from './switch-vertical.svg' -// import { ReactComponent as table } from './table.svg' -// import { ReactComponent as tag } from './tag.svg' -// import { ReactComponent as template } from './template.svg' -// import { ReactComponent as terminal } from './terminal.svg' -// import { ReactComponent as thumbDown } from './thumb-down.svg' -// import { ReactComponent as thumbUp } from './thumb-up.svg' -// import { ReactComponent as ticket } from './ticket.svg' -// import { ReactComponent as translate } from './translate.svg' -import { ReactComponent as trash } from './trash.svg' -// import { ReactComponent as trendingDown } from './trending-down.svg' -// import { ReactComponent as trendingUp } from './trending-up.svg' -// import { ReactComponent as truck } from './truck.svg' -// import { ReactComponent as upload } from './upload.svg' -// import { ReactComponent as userAdd } from './user-add.svg' -// import { ReactComponent as userCircle } from './user-circle.svg' -// import { ReactComponent as userGroup } from './user-group.svg' -// import { ReactComponent as userRemove } from './user-remove.svg' -// import { ReactComponent as user } from './user.svg' -// import { ReactComponent as users } from './users.svg' -// import { ReactComponent as variable } from './variable.svg' -// import { ReactComponent as videoCamera } from './video-camera.svg' -// import { ReactComponent as viewBoards } from './view-boards.svg' -// import { ReactComponent as viewGridAdd } from './view-grid-add.svg' -// import { ReactComponent as viewGrid } from './view-grid.svg' -// import { ReactComponent as viewList } from './view-list.svg' -// import { ReactComponent as volumeOff } from './volume-off.svg' -// import { ReactComponent as volumeUp } from './volume-up.svg' -// import { ReactComponent as wifi } from './wifi.svg' -import { ReactComponent as xCircle } from './x-circle.svg' -import { ReactComponent as x } from './x.svg' -// import { ReactComponent as zoomIn } from './zoom-in.svg' -// import { ReactComponent as zoomOut } from './zoom-out.svg' +// import academicCap from './academic-cap.svg?react' +// import adjustments from './adjustments.svg?react' +// import annotation from './annotation.svg?react' +// import archive from './archive.svg?react' +// import arrowCircleDown from './arrow-circle-down.svg?react' +// import arrowCircleLeft from './arrow-circle-left.svg?react' +// import arrowCircleRight from './arrow-circle-right.svg?react' +// import arrowCircleUp from './arrow-circle-up.svg?react' +import arrowDown from './arrow-down.svg?react' +// import arrowLeft from './arrow-left.svg?react' +// import arrowNarrowDown from './arrow-narrow-down.svg?react' +// import arrowNarrowLeft from './arrow-narrow-left.svg?react' +// import arrowNarrowRight from './arrow-narrow-right.svg?react' +// import arrowNarrowUp from './arrow-narrow-up.svg?react' +// import arrowRight from './arrow-right.svg?react' +import arrowUp from './arrow-up.svg?react' +// import arrowsExpand from './arrows-expand.svg?react' +// import atSymbol from './at-symbol.svg?react' +// import backspace from './backspace.svg?react' +// import badgeCheck from './badge-check.svg?react' +import ban from './ban.svg?react' +// import beaker from './beaker.svg?react' +// import bell from './bell.svg?react' +import bookOpen from './book-open.svg?react' +// import bookmarkAlt from './bookmark-alt.svg?react' +// import bookmark from './bookmark.svg?react' +// import briefcase from './briefcase.svg?react' +// import cake from './cake.svg?react' +// import calculator from './calculator.svg?react' +// import calendar from './calendar.svg?react' +// import camera from './camera.svg?react' +// import cash from './cash.svg?react' +// import chartBar from './chart-bar.svg?react' +// import chartPie from './chart-pie.svg?react' +// import chartSquareBar from './chart-square-bar.svg?react' +// import chatAlt2 from './chat-alt-2.svg?react' +// import chatAlt from './chat-alt.svg?react' +// import chat from './chat.svg?react' +import checkCircle from './check-circle.svg?react' +import check from './check.svg?react' +// import chevronDoubleDown from './chevron-double-down.svg?react' +// import chevronDoubleLeft from './chevron-double-left.svg?react' +// import chevronDoubleRight from './chevron-double-right.svg?react' +// import chevronDoubleUp from './chevron-double-up.svg?react' +import chevronDown from './chevron-down.svg?react' +import chevronLeft from './chevron-left.svg?react' +import chevronRight from './chevron-right.svg?react' +import chevronUp from './chevron-up.svg?react' +// import chip from './chip.svg?react' +// import clipboardCheck from './clipboard-check.svg?react' +import clipboardCopy from './clipboard-copy.svg?react' +// import clipboardList from './clipboard-list.svg?react' +// import clipboard from './clipboard.svg?react' +// import clock from './clock.svg?react' +// import cloudDownload from './cloud-download.svg?react' +// import cloudUpload from './cloud-upload.svg?react' +// import cloud from './cloud.svg?react' +// import code from './code.svg?react' +import cog from './cog.svg?react' +// import collection from './collection.svg?react' +// import colorSwatch from './color-swatch.svg?react' +// import creditCard from './credit-card.svg?react' +// import cubeTransparent from './cube-transparent.svg?react' +// import cube from './cube.svg?react' +// import currencyBangladeshi from './currency-bangladeshi.svg?react' +// import currencyDollar from './currency-dollar.svg?react' +// import currencyEuro from './currency-euro.svg?react' +// import currencyPound from './currency-pound.svg?react' +// import currencyRupee from './currency-rupee.svg?react' +// import currencyYen from './currency-yen.svg?react' +// import cursorClick from './cursor-click.svg?react' +import database from './database.svg?react' +// import desktopComputer from './desktop-computer.svg?react' +// import deviceMobile from './device-mobile.svg?react' +// import deviceTablet from './device-tablet.svg?react' +// import documentAdd from './document-add.svg?react' +// import documentDownload from './document-download.svg?react' +// import documentDuplicate from './document-duplicate.svg?react' +// import documentRemove from './document-remove.svg?react' +// import documentReport from './document-report.svg?react' +// import documentSearch from './document-search.svg?react' +import documentText from './document-text.svg?react' +import document from './document.svg?react' +// import dotsCircleHorizontal from './dots-circle-horizontal.svg?react' +// import dotsHorizontal from './dots-horizontal.svg?react' +// import dotsVertical from './dots-vertical.svg?react' +import download from './download.svg?react' +// import duplicate from './duplicate.svg?react' +// import emojiHappy from './emoji-happy.svg?react' +// import emojiSad from './emoji-sad.svg?react' +import exclamationCircle from './exclamation-circle.svg?react' +import exclamation from './exclamation.svg?react' +import externalLink from './external-link.svg?react' +import eyeOff from './eye-off.svg?react' +import eye from './eye.svg?react' +// import fastForward from './fast-forward.svg?react' +// import film from './film.svg?react' +// import filter from './filter.svg?react' +// import fingerPrint from './finger-print.svg?react' +// import fire from './fire.svg?react' +import flag from './flag.svg?react' +// import folderAdd from './folder-add.svg?react' +// import folderDownload from './folder-download.svg?react' +// import folderOpen from './folder-open.svg?react' +// import folderRemove from './folder-remove.svg?react' +import folder from './folder.svg?react' +// import gift from './gift.svg?react' +import globeAlt from './globe-alt.svg?react' +// import globe from './globe.svg?react' +// import hand from './hand.svg?react' +// import hashtag from './hashtag.svg?react' +// import heart from './heart.svg?react' +import home from './home.svg?react' +// import identification from './identification.svg?react' +// import inboxIn from './inbox-in.svg?react' +// import inbox from './inbox.svg?react' +import informationCircle from './information-circle.svg?react' +// import key from './key.svg?react' +// import library from './library.svg?react' +import lightBulb from './light-bulb.svg?react' +// import lightningBolt from './lightning-bolt.svg?react' +// import link from './link.svg?react' +// import locationMarker from './location-marker.svg?react' +import lockClosed from './lock-closed.svg?react' +// import lockOpen from './lock-open.svg?react' +// import login from './login.svg?react' +// import logout from './logout.svg?react' +// import mailOpen from './mail-open.svg?react' +// import mail from './mail.svg?react' +// import map from './map.svg?react' +// import menuAlt1 from './menu-alt-1.svg?react' +// import menuAlt2 from './menu-alt-2.svg?react' +// import menuAlt3 from './menu-alt-3.svg?react' +// import menuAlt4 from './menu-alt-4.svg?react' +// import menu from './menu.svg?react' +// import microphone from './microphone.svg?react' +// import minusCircle from './minus-circle.svg?react' +// import minusSm from './minus-sm.svg?react' +// import minus from './minus.svg?react' +import moon from './moon.svg?react' +// import musicNote from './music-note.svg?react' +// import newspaper from './newspaper.svg?react' +import noSymbol from './no-symbol.svg?react' +// import officeBuilding from './office-building.svg?react' +// import paperAirplane from './paper-airplane.svg?react' +// import paperClip from './paper-clip.svg?react' +// import pause from './pause.svg?react' +// import pencilAlt from './pencil-alt.svg?react' +// import pencil from './pencil.svg?react' +// import phoneIncoming from './phone-incoming.svg?react' +// import phoneMissedCall from './phone-missed-call.svg?react' +// import phoneOutgoing from './phone-outgoing.svg?react' +// import phone from './phone.svg?react' +// import photograph from './photograph.svg?react' +// import play from './play.svg?react' +import plusCircle from './plus-circle.svg?react' +// import plusSm from './plus-sm.svg?react' +// import plus from './plus.svg?react' +// import presentationChartBar from './presentation-chart-bar.svg?react' +// import presentationChartLine from './presentation-chart-line.svg?react' +import printer from './printer.svg?react' +// import puzzle from './puzzle.svg?react' +// import qrcode from './qrcode.svg?react' +import questionMarkCircle from './question-mark-circle.svg?react' +// import receiptRefund from './receipt-refund.svg?react' +// import receiptTax from './receipt-tax.svg?react' +import refresh from './refresh.svg?react' +// import reply from './reply.svg?react' +// import rewind from './rewind.svg?react' +// import rss from './rss.svg?react' +// import saveAs from './save-as.svg?react' +// import save from './save.svg?react' +// import scale from './scale.svg?react' +// import scissors from './scissors.svg?react' +// import searchCircle from './search-circle.svg?react' +import search from './search.svg?react' +// import selector from './selector.svg?react' +// import server from './server.svg?react' +// import share from './share.svg?react' +// import shieldCheck from './shield-check.svg?react' +// import shieldExclamation from './shield-exclamation.svg?react' +// import shoppingBag from './shopping-bag.svg?react' +// import shoppingCart from './shopping-cart.svg?react' +// import sortAscending from './sort-ascending.svg?react' +// import sortDescending from './sort-descending.svg?react' +// import sparkles from './sparkles.svg?react' +import speakerphone from './speakerphone.svg?react' +// import star from './star.svg?react' +// import statusOffline from './status-offline.svg?react' +// import statusOnline from './status-online.svg?react' +// import stop from './stop.svg?react' +import sun from './sun.svg?react' +// import support from './support.svg?react' +// import switchHorizontal from './switch-horizontal.svg?react' +// import switchVertical from './switch-vertical.svg?react' +// import table from './table.svg?react' +// import tag from './tag.svg?react' +// import template from './template.svg?react' +// import terminal from './terminal.svg?react' +// import thumbDown from './thumb-down.svg?react' +// import thumbUp from './thumb-up.svg?react' +// import ticket from './ticket.svg?react' +// import translate from './translate.svg?react' +import trash from './trash.svg?react' +// import trendingDown from './trending-down.svg?react' +// import trendingUp from './trending-up.svg?react' +// import truck from './truck.svg?react' +// import upload from './upload.svg?react' +// import userAdd from './user-add.svg?react' +// import userCircle from './user-circle.svg?react' +// import userGroup from './user-group.svg?react' +// import userRemove from './user-remove.svg?react' +// import user from './user.svg?react' +// import users from './users.svg?react' +// import variable from './variable.svg?react' +// import videoCamera from './video-camera.svg?react' +// import viewBoards from './view-boards.svg?react' +// import viewGridAdd from './view-grid-add.svg?react' +// import viewGrid from './view-grid.svg?react' +// import viewList from './view-list.svg?react' +// import volumeOff from './volume-off.svg?react' +// import volumeUp from './volume-up.svg?react' +// import wifi from './wifi.svg?react' +import xCircle from './x-circle.svg?react' +import x from './x.svg?react' +// import zoomIn from './zoom-in.svg?react' +// import zoomOut from './zoom-out.svg?react' -export { - arrowDown, - arrowUp, - ban, - bookOpen, - checkCircle, - check, - chevronDown, - chevronLeft, - chevronRight, - chevronUp, - clipboardCopy, - cog, - database, - documentText, - document, - download, - exclamationCircle, - exclamation, - externalLink, - eyeOff, - eye, - flag, - folder, - globeAlt, - home, - informationCircle, - lightBulb, - lockClosed, - moon, - noSymbol, - plusCircle, - printer, - questionMarkCircle, - refresh, - search, - speakerphone, - sun, - trash, - xCircle, - x, -} +export { arrowDown, arrowUp, ban, bookOpen, checkCircle, check, chevronDown, chevronLeft, chevronRight, chevronUp, clipboardCopy, cog, database, documentText, document, download, exclamationCircle, exclamation, externalLink, eyeOff, eye, flag, folder, globeAlt, home, informationCircle, lightBulb, lockClosed, moon, noSymbol, plusCircle, printer, questionMarkCircle, refresh, search, speakerphone, sun, trash, xCircle, x } \ No newline at end of file From 3f154bb1d740aad0d9b49030a50eabbbe5c4315b Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 14:46:46 -0300 Subject: [PATCH 05/43] ignore test test files in craco --- craco.config.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/craco.config.cjs b/craco.config.cjs index 5486ed0702..b68840aafe 100644 --- a/craco.config.cjs +++ b/craco.config.cjs @@ -48,6 +48,7 @@ module.exports = { }, jest: { configure: { + modulePathIgnorePatterns: ['.*.test.*'], moduleNameMapper: { '^layouts/(.*)$': '/src/layouts/$1', '^ui/(.*)$': '/src/ui/$1', From 71f0a33b36e5697f357c0e58491ea1fcdf218fed Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 14:58:33 -0300 Subject: [PATCH 06/43] add in coverage stuff for vitest --- package.json | 9 ++- vitest.config.mjs | 21 +++++- yarn.lock | 182 ++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 202 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 5e1a79d115..8066ab8d04 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,12 @@ "build": "yarn generate-icons:webpack && craco build --config craco.config.cjs", "build:stats": "yarn generate-icons:webpack && craco build --config craco.stats.config.cjs", "test": "yarn generate-icons:webpack && craco test", - "test:new": "yarn generate-icons:vite && vitest --config ./vitest.config.mjs", - "test:mutation": "npx stryker run", "test:ci": "yarn generate-icons:webpack && craco test --collectCoverage --reporters=default --reporters=jest-junit", + "test:new": "yarn generate-icons:vite && vitest run --changed --config ./vitest.config.mjs", + "test:watch:new": "yarn generate-icons:vite && vitest watch --config ./vitest.config.mjs", + "test:ci:new": "yarn generate-icons:vite && vitest run --config ./vitest.config.mjs --coverage", + "preview-coverage": "npx vite preview --open --outDir coverage", + "test:mutation": "npx stryker run", "eject": "craco eject", "lint": "eslint --fix --no-ignore --max-warnings=-1 -c .eslintrc.json", "storybook": "storybook dev -p 6006", @@ -146,6 +149,8 @@ "@types/react-router-dom": "^5.3.3", "@types/semver": "^7", "@vitejs/plugin-react": "^4.3.1", + "@vitest/coverage-v8": "^2.1.1", + "@vitest/ui": "^2.1.1", "autoprefixer": "^10.4.14", "eslint": "^8.39.0", "eslint-config-prettier": "^9.1.0", diff --git a/vitest.config.mjs b/vitest.config.mjs index 27d08d738f..f91685b150 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -7,10 +7,29 @@ export default defineConfig((configEnv) => viteConfig(configEnv), defineConfig({ test: { + coverage: { + provider: 'v8', + reporters: [ + ['text'], + ['html', { outputFile: 'coverage/index.html' }], + ['junit', { outputFile: 'reports/junit/junit.xml' }], + ], + reportOnFailure: true, + }, globals: true, environment: ['jsdom'], setupFiles: './src/vitest.setup.js', - include: ['**/*.test.*'], + include: ['src/**/*.test.*'], + exclude: [ + // Default exclude patterns + '**/node_modules/**', + '**/dist/**', + '**/cypress/**', + '**/.{idea,git,cache,output,temp}/**', + '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', + // Custom exclude patterns + 'src/**/*.spec.*' + ], }, }) ) diff --git a/yarn.lock b/yarn.lock index dfe98a016e..652f2a4fca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -51,7 +51,7 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.0": +"@ampproject/remapping@npm:^2.2.0, @ampproject/remapping@npm:^2.3.0": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" dependencies: @@ -587,6 +587,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.25.4": + version: 7.25.6 + resolution: "@babel/parser@npm:7.25.6" + dependencies: + "@babel/types": "npm:^7.25.6" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/f88a0e895dbb096fd37c4527ea97d12b5fc013720602580a941ac3a339698872f0c911e318c292b184c36b5fbe23b612f05aff9d24071bc847c7b1c21552c41d + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.7" @@ -2190,6 +2201,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.25.4, @babel/types@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/types@npm:7.25.6" + dependencies: + "@babel/helper-string-parser": "npm:^7.24.8" + "@babel/helper-validator-identifier": "npm:^7.24.7" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/89d45fbee24e27a05dca2d08300a26b905bd384a480448823f6723c72d3a30327c517476389b7280ce8cb9a2c48ef8f47da7f9f6d326faf6f53fd6b68237bdc4 + languageName: node + linkType: hard + "@base2/pretty-print-object@npm:1.0.1": version: 1.0.1 resolution: "@base2/pretty-print-object@npm:1.0.1" @@ -3120,7 +3142,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -3404,6 +3426,13 @@ __metadata: languageName: node linkType: hard +"@polka/url@npm:^1.0.0-next.24": + version: 1.0.0-next.25 + resolution: "@polka/url@npm:1.0.0-next.25" + checksum: 10c0/ef61f0a0fe94bb6e1143fc5b9d5a12e6ca9dbd2c57843ebf81db432c21b9f1005c09e8a1ef8b6d5ddfa42146ca65b640feb2d353bd0d3546da46ba59e48a5349 + languageName: node + linkType: hard + "@radix-ui/primitive@npm:1.1.0": version: 1.1.0 resolution: "@radix-ui/primitive@npm:1.1.0" @@ -6629,6 +6658,32 @@ __metadata: languageName: node linkType: hard +"@vitest/coverage-v8@npm:^2.1.1": + version: 2.1.1 + resolution: "@vitest/coverage-v8@npm:2.1.1" + dependencies: + "@ampproject/remapping": "npm:^2.3.0" + "@bcoe/v8-coverage": "npm:^0.2.3" + debug: "npm:^4.3.6" + istanbul-lib-coverage: "npm:^3.2.2" + istanbul-lib-report: "npm:^3.0.1" + istanbul-lib-source-maps: "npm:^5.0.6" + istanbul-reports: "npm:^3.1.7" + magic-string: "npm:^0.30.11" + magicast: "npm:^0.3.4" + std-env: "npm:^3.7.0" + test-exclude: "npm:^7.0.1" + tinyrainbow: "npm:^1.2.0" + peerDependencies: + "@vitest/browser": 2.1.1 + vitest: 2.1.1 + peerDependenciesMeta: + "@vitest/browser": + optional: true + checksum: 10c0/3deba40edfae79ac4545cadb0786ecf6c8deb72cdfd1ba0f205d84804d241740a7e78892782a3002f87bb5c0a2705ab613fe5f54374f2fe9866cd0a574d65156 + languageName: node + linkType: hard + "@vitest/expect@npm:2.1.1": version: 2.1.1 resolution: "@vitest/expect@npm:2.1.1" @@ -6700,6 +6755,23 @@ __metadata: languageName: node linkType: hard +"@vitest/ui@npm:^2.1.1": + version: 2.1.1 + resolution: "@vitest/ui@npm:2.1.1" + dependencies: + "@vitest/utils": "npm:2.1.1" + fflate: "npm:^0.8.2" + flatted: "npm:^3.3.1" + pathe: "npm:^1.1.2" + sirv: "npm:^2.0.4" + tinyglobby: "npm:^0.2.6" + tinyrainbow: "npm:^1.2.0" + peerDependencies: + vitest: 2.1.1 + checksum: 10c0/52b1580edb9a7c87bdbfdc6521a8b01af1294a2a674f97597a8a923a663f198571972a7b65c66aebe5afb5f886bf1cd4e0828913558c95bc118f568d68afa046 + languageName: node + linkType: hard + "@vitest/utils@npm:2.1.1": version: 2.1.1 resolution: "@vitest/utils@npm:2.1.1" @@ -10983,6 +11055,25 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.3.0": + version: 6.3.0 + resolution: "fdir@npm:6.3.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/be91cd6ab2edbc6df457a69b79672ee9345996986821918ef01908ce9619b8cbecd9c6c13d4ca5d0aeb548b162050d68c599f45bb3fbff194a91e16f25e646b5 + languageName: node + linkType: hard + +"fflate@npm:^0.8.2": + version: 0.8.2 + resolution: "fflate@npm:0.8.2" + checksum: 10c0/03448d630c0a583abea594835a9fdb2aaf7d67787055a761515bf4ed862913cfd693b4c4ffd5c3f3b355a70cf1e19033e9ae5aedcca103188aaff91b8bd6e293 + languageName: node + linkType: hard + "figures@npm:^3.0.0, figures@npm:^3.2.0": version: 3.2.0 resolution: "figures@npm:3.2.0" @@ -11131,7 +11222,7 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.2.9": +"flatted@npm:^3.2.9, flatted@npm:^3.3.1": version: 3.3.1 resolution: "flatted@npm:3.3.1" checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf @@ -11442,6 +11533,8 @@ __metadata: "@types/react-router-dom": "npm:^5.3.3" "@types/semver": "npm:^7" "@vitejs/plugin-react": "npm:^4.3.1" + "@vitest/coverage-v8": "npm:^2.1.1" + "@vitest/ui": "npm:^2.1.1" autoprefixer: "npm:^10.4.14" classnames: "npm:^2.3.1" copy-to-clipboard: "npm:^3.3.3" @@ -11652,7 +11745,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.4.1": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -12915,7 +13008,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0, istanbul-lib-coverage@npm:^3.2.2": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b @@ -12935,7 +13028,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-report@npm:^3.0.0": +"istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": version: 3.0.1 resolution: "istanbul-lib-report@npm:3.0.1" dependencies: @@ -12957,7 +13050,18 @@ __metadata: languageName: node linkType: hard -"istanbul-reports@npm:^3.1.3": +"istanbul-lib-source-maps@npm:^5.0.6": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.23" + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3, istanbul-reports@npm:^3.1.7": version: 3.1.7 resolution: "istanbul-reports@npm:3.1.7" dependencies: @@ -14394,6 +14498,17 @@ __metadata: languageName: node linkType: hard +"magicast@npm:^0.3.4": + version: 0.3.5 + resolution: "magicast@npm:0.3.5" + dependencies: + "@babel/parser": "npm:^7.25.4" + "@babel/types": "npm:^7.25.4" + source-map-js: "npm:^1.2.0" + checksum: 10c0/a6cacc0a848af84f03e3f5bda7b0de75e4d0aa9ddce5517fd23ed0f31b5ddd51b2d0ff0b7e09b51f7de0f4053c7a1107117edda6b0732dca3e9e39e6c5a68c64 + languageName: node + linkType: hard + "make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -15285,6 +15400,13 @@ __metadata: languageName: node linkType: hard +"mrmime@npm:^2.0.0": + version: 2.0.0 + resolution: "mrmime@npm:2.0.0" + checksum: 10c0/312b35ed288986aec90955410b21ed7427fd1e4ee318cb5fc18765c8d029eeded9444faa46589e5b1ed6b35fb2054a802ac8dcb917ddf6b3e189cb3bf11a965c + languageName: node + linkType: hard + "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -16141,6 +16263,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc + languageName: node + linkType: hard + "pidtree@npm:~0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -18945,6 +19074,17 @@ __metadata: languageName: node linkType: hard +"sirv@npm:^2.0.4": + version: 2.0.4 + resolution: "sirv@npm:2.0.4" + dependencies: + "@polka/url": "npm:^1.0.0-next.24" + mrmime: "npm:^2.0.0" + totalist: "npm:^3.0.0" + checksum: 10c0/68f8ee857f6a9415e9c07a1f31c7c561df8d5f1b1ba79bee3de583fa37da8718def5309f6b1c6e2c3ef77de45d74f5e49efc7959214443aa92d42e9c99180a4e + languageName: node + linkType: hard + "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" @@ -19943,6 +20083,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^7.0.1": + version: 7.0.1 + resolution: "test-exclude@npm:7.0.1" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^10.4.1" + minimatch: "npm:^9.0.4" + checksum: 10c0/6d67b9af4336a2e12b26a68c83308c7863534c65f27ed4ff7068a56f5a58f7ac703e8fc80f698a19bb154fd8f705cdf7ec347d9512b2c522c737269507e7b263 + languageName: node + linkType: hard + "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -20024,6 +20175,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.6": + version: 0.2.6 + resolution: "tinyglobby@npm:0.2.6" + dependencies: + fdir: "npm:^6.3.0" + picomatch: "npm:^4.0.2" + checksum: 10c0/d7b5eb4c5b9c341f961c1d3c30624f9a1e22b27b48a79a65b48120245a77c143827f75f5854628fef1a4bd4bc3cfaf06ce76497f3a574e3f933229c5e556e5fe + languageName: node + linkType: hard + "tinypool@npm:^1.0.0": version: 1.0.1 resolution: "tinypool@npm:1.0.1" @@ -20091,6 +20252,13 @@ __metadata: languageName: node linkType: hard +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 10c0/4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 + languageName: node + linkType: hard + "tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.4": version: 4.1.4 resolution: "tough-cookie@npm:4.1.4" From b08164be9cbb747a738375474fc8875076ca7496 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 15:06:01 -0300 Subject: [PATCH 07/43] setup CI to run vitest tests --- .github/workflows/ci.yml | 140 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 131 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da98998df1..45a732804a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,6 +45,7 @@ jobs: if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }} run: | yarn install + lint: name: Run Lint runs-on: ubuntu-latest @@ -138,9 +139,9 @@ jobs: uses: codecov/gha-workflows/.github/workflows/codecov-startup.yml@v1.2.14 secrets: inherit - runner-indexes: + runner-indexes-craco: runs-on: ubuntu-latest - name: Generate runner indexes + name: Generate runner indexes CRACO needs: install env: TEST_SPLIT_NUMBER: 80 @@ -154,7 +155,7 @@ jobs: id: generate-index-list run: | shopt -s globstar - TEST_LIST=$(ls src/**/*.spec.js src/**/*.test.js src/**/*.spec.jsx src/**/*.spec.ts src/**/*.spec.tsx | jq -R -s -c 'split("\n")[:-1]') + TEST_LIST=$(ls src/**/*.spec.js src/**/*.spec.jsx src/**/*.spec.ts src/**/*.spec.tsx | jq -R -s -c 'split("\n")[:-1]') TEST_LENGTH=$(echo $TEST_LIST | jq length) MAX_INDEX=$((($TEST_LENGTH/${{ env.TEST_SPLIT_NUMBER }}))) MAX_INDEX=$(($MAX_INDEX < 0 ? 0 : $TEST_LENGTH % ${{ env.TEST_SPLIT_NUMBER }} == 0 ? $MAX_INDEX - 1 : $MAX_INDEX)) @@ -163,13 +164,13 @@ jobs: echo json=${INDEX_JSON} >> $GITHUB_OUTPUT echo test_list_array=$(echo ${TEST_LIST} | jq -c '[_nwise(${{ env.TEST_SPLIT_NUMBER }})]') >> $GITHUB_OUTPUT - test: + test-craco: name: 'Test Runner #${{ matrix.runner-index }}' - needs: [install, codecovstartup, runner-indexes] + needs: [install, codecovstartup, runner-indexes-craco] runs-on: ubuntu-latest strategy: matrix: - runner-index: ${{ fromjson(needs.runner-indexes.outputs.json) }} + runner-index: ${{ fromjson(needs.runner-indexes-craco.outputs.json) }} steps: - name: Checkout uses: actions/checkout@v4 @@ -199,7 +200,128 @@ jobs: yarn test:ci --maxWorkers=2 $TESTS env: JEST_JUNIT_OUTPUT_DIR: ./reports/junit/ - TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes.outputs.test_list_array)[matrix.runner-index]) }} + TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-craco.outputs.test_list_array)[matrix.runner-index]) }} + + - name: Upload test results to codecov + uses: codecov/test-results-action@v1 + if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} + with: + token: ${{ secrets.CODECOV_ORG_TOKEN }} + url: ${{ secrets.CODECOV_URL }} + + - name: Upload test results to codecov + uses: codecov/test-results-action@v1 + if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} + with: + token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} + url: ${{ secrets.CODECOV_STAGING_URL }} + + - name: Upload test results to codecov + uses: codecov/test-results-action@v1 + if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} + with: + token: ${{ secrets.CODECOV_QA_TOKEN }} + url: ${{ secrets.CODECOV_QA_URL }} + + - name: Upload test results to codecov + uses: codecov/test-results-action@v1 + if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} + with: + token: ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} + url: ${{ secrets.CODECOV_PUBLIC_QA_URL }} + + - name: Install CLI + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + make test_env.install_cli + + ## Don't upload on forks for now. + - name: Upload to Production + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error + + - name: Upload to Staging + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + codecovcli -u ${{ secrets.CODECOV_STAGING_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} --fail-on-error + + - name: Upload to QA + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + codecovcli -u ${{ secrets.CODECOV_QA_URL }} do-upload -t ${{ secrets.CODECOV_QA_TOKEN }} --fail-on-error + + - name: Upload to Public QA + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + codecovcli -u ${{ secrets.CODECOV_PUBLIC_QA_URL }} do-upload -t ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} --fail-on-error + + runner-indexes-vitest: + runs-on: ubuntu-latest + name: Generate runner indexes Vite + needs: install + env: + TEST_SPLIT_NUMBER: 80 + outputs: + json: ${{ steps.generate-index-list.outputs.json }} + test_list_array: ${{ steps.generate-index-list.outputs.test_list_array }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Generate test index list + id: generate-index-list + # We currently don't have all of these yet, so we'll need to add them in as we go along + # src/**/*.test.js + # src/**/*.test.ts + # src/**/*.test.tsx + run: | + shopt -s globstar + TEST_LIST=$(ls src/**/*.test.jsx | jq -R -s -c 'split("\n")[:-1]') + TEST_LENGTH=$(echo $TEST_LIST | jq length) + MAX_INDEX=$((($TEST_LENGTH/${{ env.TEST_SPLIT_NUMBER }}))) + MAX_INDEX=$(($MAX_INDEX < 0 ? 0 : $TEST_LENGTH % ${{ env.TEST_SPLIT_NUMBER }} == 0 ? $MAX_INDEX - 1 : $MAX_INDEX)) + INDEX_LIST=$(seq 0 ${MAX_INDEX}) + INDEX_JSON=$(jq --null-input --compact-output '. |= [inputs]' <<< ${INDEX_LIST}) + echo json=${INDEX_JSON} >> $GITHUB_OUTPUT + echo test_list_array=$(echo ${TEST_LIST} | jq -c '[_nwise(${{ env.TEST_SPLIT_NUMBER }})]') >> $GITHUB_OUTPUT + + test-vitest: + name: 'Test Runner #${{ matrix.runner-index }}' + needs: [install, codecovstartup, runner-indexes-vitest] + runs-on: ubuntu-latest + strategy: + matrix: + runner-index: ${{ fromjson(needs.runner-indexes-vitest.outputs.json) }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + env: + cache-name: cache-gazebo-node-modules + with: + path: | + node_modules + key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-${{ env.cache-name }}- + + - name: Run tests + run: | + TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') + yarn test:ci:new --maxWorkers=2 $TESTS + env: + JEST_JUNIT_OUTPUT_DIR: ./reports/junit/ + TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} - name: Upload test results to codecov uses: codecov/test-results-action@v1 @@ -383,7 +505,7 @@ jobs: build: name: Build App runs-on: ubuntu-latest - needs: [install, test] + needs: [install, test-craco] steps: - name: Checkout uses: actions/checkout@v4 @@ -420,7 +542,7 @@ jobs: self-hosted: name: Push Self Hosted Image - needs: [build-self-hosted, test] + needs: [build-self-hosted, test-craco] secrets: inherit if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/main' && github.repository_owner == 'codecov' }} uses: codecov/gha-workflows/.github/workflows/self-hosted.yml@v1.2.14 From 7b06a1ef4f5a004b7320dd8938ab6e425c49b099 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 15:08:00 -0300 Subject: [PATCH 08/43] whoops didn't mean to commit these --- src/old_ui/Icon/svg/index.jsx | 51 ++- src/ui/Icon/svg/developer/index.jsx | 26 +- src/ui/Icon/svg/outline/index.jsx | 500 +++++++++++++++------------- src/ui/Icon/svg/solid/index.jsx | 497 ++++++++++++++------------- 4 files changed, 587 insertions(+), 487 deletions(-) diff --git a/src/old_ui/Icon/svg/index.jsx b/src/old_ui/Icon/svg/index.jsx index 00e3a5b742..77c4f20d3b 100644 --- a/src/old_ui/Icon/svg/index.jsx +++ b/src/old_ui/Icon/svg/index.jsx @@ -1,18 +1,35 @@ -import angleDown from './angleDown.svg?react' -import angleUp from './angleUp.svg?react' -import arrowLeft from './arrowLeft.svg?react' -import ban from './ban.svg?react' -import check from './check.svg?react' -import chevronLeft from './chevronLeft.svg?react' -import chevronRight from './chevronRight.svg?react' -import creditCard from './creditCard.svg?react' -import exclamationCircle from './exclamationCircle.svg?react' -import fileAlt from './fileAlt.svg?react' -import hamburger from './hamburger.svg?react' -import infoCircle from './infoCircle.svg?react' -import search from './search.svg?react' -import setting from './setting.svg?react' -import signOut from './signOut.svg?react' -import times from './times.svg?react' +import { ReactComponent as angleDown } from './angleDown.svg' +import { ReactComponent as angleUp } from './angleUp.svg' +import { ReactComponent as arrowLeft } from './arrowLeft.svg' +import { ReactComponent as ban } from './ban.svg' +import { ReactComponent as check } from './check.svg' +import { ReactComponent as chevronLeft } from './chevronLeft.svg' +import { ReactComponent as chevronRight } from './chevronRight.svg' +import { ReactComponent as creditCard } from './creditCard.svg' +import { ReactComponent as exclamationCircle } from './exclamationCircle.svg' +import { ReactComponent as fileAlt } from './fileAlt.svg' +import { ReactComponent as hamburger } from './hamburger.svg' +import { ReactComponent as infoCircle } from './infoCircle.svg' +import { ReactComponent as search } from './search.svg' +import { ReactComponent as setting } from './setting.svg' +import { ReactComponent as signOut } from './signOut.svg' +import { ReactComponent as times } from './times.svg' -export { angleDown, angleUp, arrowLeft, ban, check, chevronLeft, chevronRight, creditCard, exclamationCircle, fileAlt, hamburger, infoCircle, search, setting, signOut, times } \ No newline at end of file +export { + angleDown, + angleUp, + arrowLeft, + ban, + check, + chevronLeft, + chevronRight, + creditCard, + exclamationCircle, + fileAlt, + hamburger, + infoCircle, + search, + setting, + signOut, + times, +} diff --git a/src/ui/Icon/svg/developer/index.jsx b/src/ui/Icon/svg/developer/index.jsx index 4f9619e56c..e2d4375846 100644 --- a/src/ui/Icon/svg/developer/index.jsx +++ b/src/ui/Icon/svg/developer/index.jsx @@ -1,14 +1,14 @@ -// import branchDeleted from './branch-deleted.svg?react' -import branch from './branch.svg?react' -// import commit from './commit.svg?react' -// import comparison from './comparison.svg?react' -// import fork from './fork.svg?react' -// import gitMerge from './git-merge.svg?react' -// import hook from './hook.svg?react' -import merge from './merge.svg?react' -import pullRequestClosed from './pull-request-closed.svg?react' -import pullRequestOpen from './pull-request-open.svg?react' -// import pullRequest from './pull-request.svg?react' -// import statusRunning from './status-running.svg?react' +// import { ReactComponent as branchDeleted } from './branch-deleted.svg' +import { ReactComponent as branch } from './branch.svg' +// import { ReactComponent as commit } from './commit.svg' +// import { ReactComponent as comparison } from './comparison.svg' +// import { ReactComponent as fork } from './fork.svg' +// import { ReactComponent as gitMerge } from './git-merge.svg' +// import { ReactComponent as hook } from './hook.svg' +import { ReactComponent as merge } from './merge.svg' +import { ReactComponent as pullRequestClosed } from './pull-request-closed.svg' +import { ReactComponent as pullRequestOpen } from './pull-request-open.svg' +// import { ReactComponent as pullRequest } from './pull-request.svg' +// import { ReactComponent as statusRunning } from './status-running.svg' -export { branch, merge, pullRequestClosed, pullRequestOpen } \ No newline at end of file +export { branch, merge, pullRequestClosed, pullRequestOpen } diff --git a/src/ui/Icon/svg/outline/index.jsx b/src/ui/Icon/svg/outline/index.jsx index 49993e1c52..2984fcb5ef 100644 --- a/src/ui/Icon/svg/outline/index.jsx +++ b/src/ui/Icon/svg/outline/index.jsx @@ -1,230 +1,272 @@ -// import academicCap from './academic-cap.svg?react' -// import adjustments from './adjustments.svg?react' -// import annotation from './annotation.svg?react' -// import archive from './archive.svg?react' -// import arrowCircleDown from './arrow-circle-down.svg?react' -// import arrowCircleLeft from './arrow-circle-left.svg?react' -// import arrowCircleRight from './arrow-circle-right.svg?react' -// import arrowCircleUp from './arrow-circle-up.svg?react' -import arrowDown from './arrow-down.svg?react' -// import arrowLeft from './arrow-left.svg?react' -// import arrowNarrowDown from './arrow-narrow-down.svg?react' -// import arrowNarrowLeft from './arrow-narrow-left.svg?react' -// import arrowNarrowRight from './arrow-narrow-right.svg?react' -// import arrowNarrowUp from './arrow-narrow-up.svg?react' -// import arrowRight from './arrow-right.svg?react' -import arrowUp from './arrow-up.svg?react' -// import arrowsExpand from './arrows-expand.svg?react' -// import atSymbol from './at-symbol.svg?react' -// import backspace from './backspace.svg?react' -// import badgeCheck from './badge-check.svg?react' -import ban from './ban.svg?react' -// import beaker from './beaker.svg?react' -// import bell from './bell.svg?react' -import bookOpen from './book-open.svg?react' -// import bookmarkAlt from './bookmark-alt.svg?react' -// import bookmark from './bookmark.svg?react' -// import briefcase from './briefcase.svg?react' -// import cake from './cake.svg?react' -// import calculator from './calculator.svg?react' -// import calendar from './calendar.svg?react' -// import camera from './camera.svg?react' -// import cash from './cash.svg?react' -// import chartBar from './chart-bar.svg?react' -// import chartPie from './chart-pie.svg?react' -// import chartSquareBar from './chart-square-bar.svg?react' -// import chatAlt2 from './chat-alt-2.svg?react' -// import chatAlt from './chat-alt.svg?react' -// import chat from './chat.svg?react' -import checkCircle from './check-circle.svg?react' -import check from './check.svg?react' -// import chevronDoubleDown from './chevron-double-down.svg?react' -// import chevronDoubleLeft from './chevron-double-left.svg?react' -// import chevronDoubleRight from './chevron-double-right.svg?react' -// import chevronDoubleUp from './chevron-double-up.svg?react' -import chevronDown from './chevron-down.svg?react' -import chevronLeft from './chevron-left.svg?react' -import chevronRight from './chevron-right.svg?react' -import chevronUp from './chevron-up.svg?react' -// import chip from './chip.svg?react' -// import clipboardCheck from './clipboard-check.svg?react' -import clipboardCopy from './clipboard-copy.svg?react' -// import clipboardList from './clipboard-list.svg?react' -// import clipboard from './clipboard.svg?react' -// import clock from './clock.svg?react' -// import cloudDownload from './cloud-download.svg?react' -// import cloudUpload from './cloud-upload.svg?react' -// import cloud from './cloud.svg?react' -// import code from './code.svg?react' -import cog from './cog.svg?react' -// import collection from './collection.svg?react' -// import colorSwatch from './color-swatch.svg?react' -// import creditCard from './credit-card.svg?react' -// import cubeTransparent from './cube-transparent.svg?react' -// import cube from './cube.svg?react' -// import currencyBangladeshi from './currency-bangladeshi.svg?react' -// import currencyDollar from './currency-dollar.svg?react' -// import currencyEuro from './currency-euro.svg?react' -// import currencyPound from './currency-pound.svg?react' -// import currencyRupee from './currency-rupee.svg?react' -// import currencyYen from './currency-yen.svg?react' -// import cursorClick from './cursor-click.svg?react' -import database from './database.svg?react' -// import desktopComputer from './desktop-computer.svg?react' -// import deviceMobile from './device-mobile.svg?react' -// import deviceTablet from './device-tablet.svg?react' -// import documentAdd from './document-add.svg?react' -// import documentDownload from './document-download.svg?react' -// import documentDuplicate from './document-duplicate.svg?react' -// import documentRemove from './document-remove.svg?react' -// import documentReport from './document-report.svg?react' -// import documentSearch from './document-search.svg?react' -import documentText from './document-text.svg?react' -import document from './document.svg?react' -// import dotsCircleHorizontal from './dots-circle-horizontal.svg?react' -// import dotsHorizontal from './dots-horizontal.svg?react' -// import dotsVertical from './dots-vertical.svg?react' -import download from './download.svg?react' -// import duplicate from './duplicate.svg?react' -// import emojiHappy from './emoji-happy.svg?react' -// import emojiSad from './emoji-sad.svg?react' -import exclamationCircle from './exclamation-circle.svg?react' -import exclamationTriangle from './exclamation-triangle.svg?react' -import exclamation from './exclamation.svg?react' -import externalLink from './external-link.svg?react' -import eyeOff from './eye-off.svg?react' -import eye from './eye.svg?react' -// import fastForward from './fast-forward.svg?react' -// import film from './film.svg?react' -// import filter from './filter.svg?react' -// import fingerPrint from './finger-print.svg?react' -// import fire from './fire.svg?react' -import flag from './flag.svg?react' -// import folderAdd from './folder-add.svg?react' -// import folderDownload from './folder-download.svg?react' -// import folderOpen from './folder-open.svg?react' -// import folderRemove from './folder-remove.svg?react' -import folder from './folder.svg?react' -// import gift from './gift.svg?react' -import globeAlt from './globe-alt.svg?react' -// import globe from './globe.svg?react' -// import hand from './hand.svg?react' -// import hashtag from './hashtag.svg?react' -// import heart from './heart.svg?react' -import home from './home.svg?react' -// import identification from './identification.svg?react' -// import inboxIn from './inbox-in.svg?react' -// import inbox from './inbox.svg?react' -import informationCircle from './information-circle.svg?react' -// import key from './key.svg?react' -// import library from './library.svg?react' -import lightBulb from './light-bulb.svg?react' -// import lightningBolt from './lightning-bolt.svg?react' -// import link from './link.svg?react' -// import locationMarker from './location-marker.svg?react' -import lockClosed from './lock-closed.svg?react' -// import lockOpen from './lock-open.svg?react' -// import login from './login.svg?react' -// import logout from './logout.svg?react' -// import mailOpen from './mail-open.svg?react' -// import mail from './mail.svg?react' -// import map from './map.svg?react' -// import menuAlt1 from './menu-alt-1.svg?react' -// import menuAlt2 from './menu-alt-2.svg?react' -// import menuAlt3 from './menu-alt-3.svg?react' -// import menuAlt4 from './menu-alt-4.svg?react' -// import menu from './menu.svg?react' -// import microphone from './microphone.svg?react' -// import minusCircle from './minus-circle.svg?react' -// import minusSm from './minus-sm.svg?react' -// import minus from './minus.svg?react' -import moon from './moon.svg?react' -// import musicNote from './music-note.svg?react' -// import newspaper from './newspaper.svg?react' -import noSymbol from './no-symbol.svg?react' -// import officeBuilding from './office-building.svg?react' -// import paperAirplane from './paper-airplane.svg?react' -// import paperClip from './paper-clip.svg?react' -// import pause from './pause.svg?react' -// import pencilAlt from './pencil-alt.svg?react' -// import pencil from './pencil.svg?react' -// import phoneIncoming from './phone-incoming.svg?react' -// import phoneMissedCall from './phone-missed-call.svg?react' -// import phoneOutgoing from './phone-outgoing.svg?react' -// import phone from './phone.svg?react' -// import photograph from './photograph.svg?react' -// import play from './play.svg?react' -import plusCircle from './plus-circle.svg?react' -// import plusSm from './plus-sm.svg?react' -// import plus from './plus.svg?react' -// import presentationChartBar from './presentation-chart-bar.svg?react' -// import presentationChartLine from './presentation-chart-line.svg?react' -import printer from './printer.svg?react' -// import puzzle from './puzzle.svg?react' -// import qrcode from './qrcode.svg?react' -import questionMarkCircle from './question-mark-circle.svg?react' -// import receiptRefund from './receipt-refund.svg?react' -// import receiptTax from './receipt-tax.svg?react' -import refresh from './refresh.svg?react' -// import reply from './reply.svg?react' -// import rewind from './rewind.svg?react' -// import rss from './rss.svg?react' -// import saveAs from './save-as.svg?react' -// import save from './save.svg?react' -// import scale from './scale.svg?react' -// import scissors from './scissors.svg?react' -// import searchCircle from './search-circle.svg?react' -import search from './search.svg?react' -// import selector from './selector.svg?react' -// import server from './server.svg?react' -// import share from './share.svg?react' -// import shieldCheck from './shield-check.svg?react' -// import shieldExclamation from './shield-exclamation.svg?react' -// import shoppingBag from './shopping-bag.svg?react' -// import shoppingCart from './shopping-cart.svg?react' -// import sortAscending from './sort-ascending.svg?react' -// import sortDescending from './sort-descending.svg?react' -// import sparkles from './sparkles.svg?react' -import speakerphone from './speakerphone.svg?react' -// import star from './star.svg?react' -// import statusOffline from './status-offline.svg?react' -// import statusOnline from './status-online.svg?react' -// import stop from './stop.svg?react' -import sun from './sun.svg?react' -// import support from './support.svg?react' -// import switchHorizontal from './switch-horizontal.svg?react' -// import switchVertical from './switch-vertical.svg?react' -// import table from './table.svg?react' -// import tag from './tag.svg?react' -// import template from './template.svg?react' -// import terminal from './terminal.svg?react' -// import thumbDown from './thumb-down.svg?react' -// import thumbUp from './thumb-up.svg?react' -// import ticket from './ticket.svg?react' -// import translate from './translate.svg?react' -import trash from './trash.svg?react' -// import trendingDown from './trending-down.svg?react' -// import trendingUp from './trending-up.svg?react' -// import truck from './truck.svg?react' -// import upload from './upload.svg?react' -// import userAdd from './user-add.svg?react' -// import userCircle from './user-circle.svg?react' -// import userGroup from './user-group.svg?react' -// import userRemove from './user-remove.svg?react' -// import user from './user.svg?react' -// import users from './users.svg?react' -// import variable from './variable.svg?react' -// import videoCamera from './video-camera.svg?react' -// import viewBoards from './view-boards.svg?react' -// import viewGridAdd from './view-grid-add.svg?react' -// import viewGrid from './view-grid.svg?react' -// import viewList from './view-list.svg?react' -// import volumeOff from './volume-off.svg?react' -// import volumeUp from './volume-up.svg?react' -// import wifi from './wifi.svg?react' -import xCircle from './x-circle.svg?react' -import x from './x.svg?react' -// import zoomIn from './zoom-in.svg?react' -// import zoomOut from './zoom-out.svg?react' +// import { ReactComponent as academicCap } from './academic-cap.svg' +// import { ReactComponent as adjustments } from './adjustments.svg' +// import { ReactComponent as annotation } from './annotation.svg' +// import { ReactComponent as archive } from './archive.svg' +// import { ReactComponent as arrowCircleDown } from './arrow-circle-down.svg' +// import { ReactComponent as arrowCircleLeft } from './arrow-circle-left.svg' +// import { ReactComponent as arrowCircleRight } from './arrow-circle-right.svg' +// import { ReactComponent as arrowCircleUp } from './arrow-circle-up.svg' +import { ReactComponent as arrowDown } from './arrow-down.svg' +// import { ReactComponent as arrowLeft } from './arrow-left.svg' +// import { ReactComponent as arrowNarrowDown } from './arrow-narrow-down.svg' +// import { ReactComponent as arrowNarrowLeft } from './arrow-narrow-left.svg' +// import { ReactComponent as arrowNarrowRight } from './arrow-narrow-right.svg' +// import { ReactComponent as arrowNarrowUp } from './arrow-narrow-up.svg' +// import { ReactComponent as arrowRight } from './arrow-right.svg' +import { ReactComponent as arrowUp } from './arrow-up.svg' +// import { ReactComponent as arrowsExpand } from './arrows-expand.svg' +// import { ReactComponent as atSymbol } from './at-symbol.svg' +// import { ReactComponent as backspace } from './backspace.svg' +// import { ReactComponent as badgeCheck } from './badge-check.svg' +import { ReactComponent as ban } from './ban.svg' +// import { ReactComponent as beaker } from './beaker.svg' +// import { ReactComponent as bell } from './bell.svg' +import { ReactComponent as bookOpen } from './book-open.svg' +// import { ReactComponent as bookmarkAlt } from './bookmark-alt.svg' +// import { ReactComponent as bookmark } from './bookmark.svg' +// import { ReactComponent as briefcase } from './briefcase.svg' +// import { ReactComponent as cake } from './cake.svg' +// import { ReactComponent as calculator } from './calculator.svg' +// import { ReactComponent as calendar } from './calendar.svg' +// import { ReactComponent as camera } from './camera.svg' +// import { ReactComponent as cash } from './cash.svg' +// import { ReactComponent as chartBar } from './chart-bar.svg' +// import { ReactComponent as chartPie } from './chart-pie.svg' +// import { ReactComponent as chartSquareBar } from './chart-square-bar.svg' +// import { ReactComponent as chatAlt2 } from './chat-alt-2.svg' +// import { ReactComponent as chatAlt } from './chat-alt.svg' +// import { ReactComponent as chat } from './chat.svg' +import { ReactComponent as checkCircle } from './check-circle.svg' +import { ReactComponent as check } from './check.svg' +// import { ReactComponent as chevronDoubleDown } from './chevron-double-down.svg' +// import { ReactComponent as chevronDoubleLeft } from './chevron-double-left.svg' +// import { ReactComponent as chevronDoubleRight } from './chevron-double-right.svg' +// import { ReactComponent as chevronDoubleUp } from './chevron-double-up.svg' +import { ReactComponent as chevronDown } from './chevron-down.svg' +import { ReactComponent as chevronLeft } from './chevron-left.svg' +import { ReactComponent as chevronRight } from './chevron-right.svg' +import { ReactComponent as chevronUp } from './chevron-up.svg' +// import { ReactComponent as chip } from './chip.svg' +// import { ReactComponent as clipboardCheck } from './clipboard-check.svg' +import { ReactComponent as clipboardCopy } from './clipboard-copy.svg' +// import { ReactComponent as clipboardList } from './clipboard-list.svg' +// import { ReactComponent as clipboard } from './clipboard.svg' +// import { ReactComponent as clock } from './clock.svg' +// import { ReactComponent as cloudDownload } from './cloud-download.svg' +// import { ReactComponent as cloudUpload } from './cloud-upload.svg' +// import { ReactComponent as cloud } from './cloud.svg' +// import { ReactComponent as code } from './code.svg' +import { ReactComponent as cog } from './cog.svg' +// import { ReactComponent as collection } from './collection.svg' +// import { ReactComponent as colorSwatch } from './color-swatch.svg' +// import { ReactComponent as creditCard } from './credit-card.svg' +// import { ReactComponent as cubeTransparent } from './cube-transparent.svg' +// import { ReactComponent as cube } from './cube.svg' +// import { ReactComponent as currencyBangladeshi } from './currency-bangladeshi.svg' +// import { ReactComponent as currencyDollar } from './currency-dollar.svg' +// import { ReactComponent as currencyEuro } from './currency-euro.svg' +// import { ReactComponent as currencyPound } from './currency-pound.svg' +// import { ReactComponent as currencyRupee } from './currency-rupee.svg' +// import { ReactComponent as currencyYen } from './currency-yen.svg' +// import { ReactComponent as cursorClick } from './cursor-click.svg' +import { ReactComponent as database } from './database.svg' +// import { ReactComponent as desktopComputer } from './desktop-computer.svg' +// import { ReactComponent as deviceMobile } from './device-mobile.svg' +// import { ReactComponent as deviceTablet } from './device-tablet.svg' +// import { ReactComponent as documentAdd } from './document-add.svg' +// import { ReactComponent as documentDownload } from './document-download.svg' +// import { ReactComponent as documentDuplicate } from './document-duplicate.svg' +// import { ReactComponent as documentRemove } from './document-remove.svg' +// import { ReactComponent as documentReport } from './document-report.svg' +// import { ReactComponent as documentSearch } from './document-search.svg' +import { ReactComponent as documentText } from './document-text.svg' +import { ReactComponent as document } from './document.svg' +// import { ReactComponent as dotsCircleHorizontal } from './dots-circle-horizontal.svg' +// import { ReactComponent as dotsHorizontal } from './dots-horizontal.svg' +// import { ReactComponent as dotsVertical } from './dots-vertical.svg' +import { ReactComponent as download } from './download.svg' +// import { ReactComponent as duplicate } from './duplicate.svg' +// import { ReactComponent as emojiHappy } from './emoji-happy.svg' +// import { ReactComponent as emojiSad } from './emoji-sad.svg' +import { ReactComponent as exclamationCircle } from './exclamation-circle.svg' +import { ReactComponent as exclamationTriangle } from './exclamation-triangle.svg' +import { ReactComponent as exclamation } from './exclamation.svg' +import { ReactComponent as externalLink } from './external-link.svg' +import { ReactComponent as eyeOff } from './eye-off.svg' +import { ReactComponent as eye } from './eye.svg' +// import { ReactComponent as fastForward } from './fast-forward.svg' +// import { ReactComponent as film } from './film.svg' +// import { ReactComponent as filter } from './filter.svg' +// import { ReactComponent as fingerPrint } from './finger-print.svg' +// import { ReactComponent as fire } from './fire.svg' +import { ReactComponent as flag } from './flag.svg' +// import { ReactComponent as folderAdd } from './folder-add.svg' +// import { ReactComponent as folderDownload } from './folder-download.svg' +// import { ReactComponent as folderOpen } from './folder-open.svg' +// import { ReactComponent as folderRemove } from './folder-remove.svg' +import { ReactComponent as folder } from './folder.svg' +// import { ReactComponent as gift } from './gift.svg' +import { ReactComponent as globeAlt } from './globe-alt.svg' +// import { ReactComponent as globe } from './globe.svg' +// import { ReactComponent as hand } from './hand.svg' +// import { ReactComponent as hashtag } from './hashtag.svg' +// import { ReactComponent as heart } from './heart.svg' +import { ReactComponent as home } from './home.svg' +// import { ReactComponent as identification } from './identification.svg' +// import { ReactComponent as inboxIn } from './inbox-in.svg' +// import { ReactComponent as inbox } from './inbox.svg' +import { ReactComponent as informationCircle } from './information-circle.svg' +// import { ReactComponent as key } from './key.svg' +// import { ReactComponent as library } from './library.svg' +import { ReactComponent as lightBulb } from './light-bulb.svg' +// import { ReactComponent as lightningBolt } from './lightning-bolt.svg' +// import { ReactComponent as link } from './link.svg' +// import { ReactComponent as locationMarker } from './location-marker.svg' +import { ReactComponent as lockClosed } from './lock-closed.svg' +// import { ReactComponent as lockOpen } from './lock-open.svg' +// import { ReactComponent as login } from './login.svg' +// import { ReactComponent as logout } from './logout.svg' +// import { ReactComponent as mailOpen } from './mail-open.svg' +// import { ReactComponent as mail } from './mail.svg' +// import { ReactComponent as map } from './map.svg' +// import { ReactComponent as menuAlt1 } from './menu-alt-1.svg' +// import { ReactComponent as menuAlt2 } from './menu-alt-2.svg' +// import { ReactComponent as menuAlt3 } from './menu-alt-3.svg' +// import { ReactComponent as menuAlt4 } from './menu-alt-4.svg' +// import { ReactComponent as menu } from './menu.svg' +// import { ReactComponent as microphone } from './microphone.svg' +// import { ReactComponent as minusCircle } from './minus-circle.svg' +// import { ReactComponent as minusSm } from './minus-sm.svg' +// import { ReactComponent as minus } from './minus.svg' +import { ReactComponent as moon } from './moon.svg' +// import { ReactComponent as musicNote } from './music-note.svg' +// import { ReactComponent as newspaper } from './newspaper.svg' +import { ReactComponent as noSymbol } from './no-symbol.svg' +// import { ReactComponent as officeBuilding } from './office-building.svg' +// import { ReactComponent as paperAirplane } from './paper-airplane.svg' +// import { ReactComponent as paperClip } from './paper-clip.svg' +// import { ReactComponent as pause } from './pause.svg' +// import { ReactComponent as pencilAlt } from './pencil-alt.svg' +// import { ReactComponent as pencil } from './pencil.svg' +// import { ReactComponent as phoneIncoming } from './phone-incoming.svg' +// import { ReactComponent as phoneMissedCall } from './phone-missed-call.svg' +// import { ReactComponent as phoneOutgoing } from './phone-outgoing.svg' +// import { ReactComponent as phone } from './phone.svg' +// import { ReactComponent as photograph } from './photograph.svg' +// import { ReactComponent as play } from './play.svg' +import { ReactComponent as plusCircle } from './plus-circle.svg' +// import { ReactComponent as plusSm } from './plus-sm.svg' +// import { ReactComponent as plus } from './plus.svg' +// import { ReactComponent as presentationChartBar } from './presentation-chart-bar.svg' +// import { ReactComponent as presentationChartLine } from './presentation-chart-line.svg' +import { ReactComponent as printer } from './printer.svg' +// import { ReactComponent as puzzle } from './puzzle.svg' +// import { ReactComponent as qrcode } from './qrcode.svg' +import { ReactComponent as questionMarkCircle } from './question-mark-circle.svg' +// import { ReactComponent as receiptRefund } from './receipt-refund.svg' +// import { ReactComponent as receiptTax } from './receipt-tax.svg' +import { ReactComponent as refresh } from './refresh.svg' +// import { ReactComponent as reply } from './reply.svg' +// import { ReactComponent as rewind } from './rewind.svg' +// import { ReactComponent as rss } from './rss.svg' +// import { ReactComponent as saveAs } from './save-as.svg' +// import { ReactComponent as save } from './save.svg' +// import { ReactComponent as scale } from './scale.svg' +// import { ReactComponent as scissors } from './scissors.svg' +// import { ReactComponent as searchCircle } from './search-circle.svg' +import { ReactComponent as search } from './search.svg' +// import { ReactComponent as selector } from './selector.svg' +// import { ReactComponent as server } from './server.svg' +// import { ReactComponent as share } from './share.svg' +// import { ReactComponent as shieldCheck } from './shield-check.svg' +// import { ReactComponent as shieldExclamation } from './shield-exclamation.svg' +// import { ReactComponent as shoppingBag } from './shopping-bag.svg' +// import { ReactComponent as shoppingCart } from './shopping-cart.svg' +// import { ReactComponent as sortAscending } from './sort-ascending.svg' +// import { ReactComponent as sortDescending } from './sort-descending.svg' +// import { ReactComponent as sparkles } from './sparkles.svg' +import { ReactComponent as speakerphone } from './speakerphone.svg' +// import { ReactComponent as star } from './star.svg' +// import { ReactComponent as statusOffline } from './status-offline.svg' +// import { ReactComponent as statusOnline } from './status-online.svg' +// import { ReactComponent as stop } from './stop.svg' +import { ReactComponent as sun } from './sun.svg' +// import { ReactComponent as support } from './support.svg' +// import { ReactComponent as switchHorizontal } from './switch-horizontal.svg' +// import { ReactComponent as switchVertical } from './switch-vertical.svg' +// import { ReactComponent as table } from './table.svg' +// import { ReactComponent as tag } from './tag.svg' +// import { ReactComponent as template } from './template.svg' +// import { ReactComponent as terminal } from './terminal.svg' +// import { ReactComponent as thumbDown } from './thumb-down.svg' +// import { ReactComponent as thumbUp } from './thumb-up.svg' +// import { ReactComponent as ticket } from './ticket.svg' +// import { ReactComponent as translate } from './translate.svg' +import { ReactComponent as trash } from './trash.svg' +// import { ReactComponent as trendingDown } from './trending-down.svg' +// import { ReactComponent as trendingUp } from './trending-up.svg' +// import { ReactComponent as truck } from './truck.svg' +// import { ReactComponent as upload } from './upload.svg' +// import { ReactComponent as userAdd } from './user-add.svg' +// import { ReactComponent as userCircle } from './user-circle.svg' +// import { ReactComponent as userGroup } from './user-group.svg' +// import { ReactComponent as userRemove } from './user-remove.svg' +// import { ReactComponent as user } from './user.svg' +// import { ReactComponent as users } from './users.svg' +// import { ReactComponent as variable } from './variable.svg' +// import { ReactComponent as videoCamera } from './video-camera.svg' +// import { ReactComponent as viewBoards } from './view-boards.svg' +// import { ReactComponent as viewGridAdd } from './view-grid-add.svg' +// import { ReactComponent as viewGrid } from './view-grid.svg' +// import { ReactComponent as viewList } from './view-list.svg' +// import { ReactComponent as volumeOff } from './volume-off.svg' +// import { ReactComponent as volumeUp } from './volume-up.svg' +// import { ReactComponent as wifi } from './wifi.svg' +import { ReactComponent as xCircle } from './x-circle.svg' +import { ReactComponent as x } from './x.svg' +// import { ReactComponent as zoomIn } from './zoom-in.svg' +// import { ReactComponent as zoomOut } from './zoom-out.svg' -export { arrowDown, arrowUp, ban, bookOpen, checkCircle, check, chevronDown, chevronLeft, chevronRight, chevronUp, clipboardCopy, cog, database, documentText, document, download, exclamationCircle, exclamationTriangle, exclamation, externalLink, eyeOff, eye, flag, folder, globeAlt, home, informationCircle, lightBulb, lockClosed, moon, noSymbol, plusCircle, printer, questionMarkCircle, refresh, search, speakerphone, sun, trash, xCircle, x } \ No newline at end of file +export { + arrowDown, + arrowUp, + ban, + bookOpen, + checkCircle, + check, + chevronDown, + chevronLeft, + chevronRight, + chevronUp, + clipboardCopy, + cog, + database, + documentText, + document, + download, + exclamationCircle, + exclamationTriangle, + exclamation, + externalLink, + eyeOff, + eye, + flag, + folder, + globeAlt, + home, + informationCircle, + lightBulb, + lockClosed, + moon, + noSymbol, + plusCircle, + printer, + questionMarkCircle, + refresh, + search, + speakerphone, + sun, + trash, + xCircle, + x, +} diff --git a/src/ui/Icon/svg/solid/index.jsx b/src/ui/Icon/svg/solid/index.jsx index 6c5354e2b1..88b3814d85 100644 --- a/src/ui/Icon/svg/solid/index.jsx +++ b/src/ui/Icon/svg/solid/index.jsx @@ -1,229 +1,270 @@ -// import academicCap from './academic-cap.svg?react' -// import adjustments from './adjustments.svg?react' -// import annotation from './annotation.svg?react' -// import archive from './archive.svg?react' -// import arrowCircleDown from './arrow-circle-down.svg?react' -// import arrowCircleLeft from './arrow-circle-left.svg?react' -// import arrowCircleRight from './arrow-circle-right.svg?react' -// import arrowCircleUp from './arrow-circle-up.svg?react' -import arrowDown from './arrow-down.svg?react' -// import arrowLeft from './arrow-left.svg?react' -// import arrowNarrowDown from './arrow-narrow-down.svg?react' -// import arrowNarrowLeft from './arrow-narrow-left.svg?react' -// import arrowNarrowRight from './arrow-narrow-right.svg?react' -// import arrowNarrowUp from './arrow-narrow-up.svg?react' -// import arrowRight from './arrow-right.svg?react' -import arrowUp from './arrow-up.svg?react' -// import arrowsExpand from './arrows-expand.svg?react' -// import atSymbol from './at-symbol.svg?react' -// import backspace from './backspace.svg?react' -// import badgeCheck from './badge-check.svg?react' -import ban from './ban.svg?react' -// import beaker from './beaker.svg?react' -// import bell from './bell.svg?react' -import bookOpen from './book-open.svg?react' -// import bookmarkAlt from './bookmark-alt.svg?react' -// import bookmark from './bookmark.svg?react' -// import briefcase from './briefcase.svg?react' -// import cake from './cake.svg?react' -// import calculator from './calculator.svg?react' -// import calendar from './calendar.svg?react' -// import camera from './camera.svg?react' -// import cash from './cash.svg?react' -// import chartBar from './chart-bar.svg?react' -// import chartPie from './chart-pie.svg?react' -// import chartSquareBar from './chart-square-bar.svg?react' -// import chatAlt2 from './chat-alt-2.svg?react' -// import chatAlt from './chat-alt.svg?react' -// import chat from './chat.svg?react' -import checkCircle from './check-circle.svg?react' -import check from './check.svg?react' -// import chevronDoubleDown from './chevron-double-down.svg?react' -// import chevronDoubleLeft from './chevron-double-left.svg?react' -// import chevronDoubleRight from './chevron-double-right.svg?react' -// import chevronDoubleUp from './chevron-double-up.svg?react' -import chevronDown from './chevron-down.svg?react' -import chevronLeft from './chevron-left.svg?react' -import chevronRight from './chevron-right.svg?react' -import chevronUp from './chevron-up.svg?react' -// import chip from './chip.svg?react' -// import clipboardCheck from './clipboard-check.svg?react' -import clipboardCopy from './clipboard-copy.svg?react' -// import clipboardList from './clipboard-list.svg?react' -// import clipboard from './clipboard.svg?react' -// import clock from './clock.svg?react' -// import cloudDownload from './cloud-download.svg?react' -// import cloudUpload from './cloud-upload.svg?react' -// import cloud from './cloud.svg?react' -// import code from './code.svg?react' -import cog from './cog.svg?react' -// import collection from './collection.svg?react' -// import colorSwatch from './color-swatch.svg?react' -// import creditCard from './credit-card.svg?react' -// import cubeTransparent from './cube-transparent.svg?react' -// import cube from './cube.svg?react' -// import currencyBangladeshi from './currency-bangladeshi.svg?react' -// import currencyDollar from './currency-dollar.svg?react' -// import currencyEuro from './currency-euro.svg?react' -// import currencyPound from './currency-pound.svg?react' -// import currencyRupee from './currency-rupee.svg?react' -// import currencyYen from './currency-yen.svg?react' -// import cursorClick from './cursor-click.svg?react' -import database from './database.svg?react' -// import desktopComputer from './desktop-computer.svg?react' -// import deviceMobile from './device-mobile.svg?react' -// import deviceTablet from './device-tablet.svg?react' -// import documentAdd from './document-add.svg?react' -// import documentDownload from './document-download.svg?react' -// import documentDuplicate from './document-duplicate.svg?react' -// import documentRemove from './document-remove.svg?react' -// import documentReport from './document-report.svg?react' -// import documentSearch from './document-search.svg?react' -import documentText from './document-text.svg?react' -import document from './document.svg?react' -// import dotsCircleHorizontal from './dots-circle-horizontal.svg?react' -// import dotsHorizontal from './dots-horizontal.svg?react' -// import dotsVertical from './dots-vertical.svg?react' -import download from './download.svg?react' -// import duplicate from './duplicate.svg?react' -// import emojiHappy from './emoji-happy.svg?react' -// import emojiSad from './emoji-sad.svg?react' -import exclamationCircle from './exclamation-circle.svg?react' -import exclamation from './exclamation.svg?react' -import externalLink from './external-link.svg?react' -import eyeOff from './eye-off.svg?react' -import eye from './eye.svg?react' -// import fastForward from './fast-forward.svg?react' -// import film from './film.svg?react' -// import filter from './filter.svg?react' -// import fingerPrint from './finger-print.svg?react' -// import fire from './fire.svg?react' -import flag from './flag.svg?react' -// import folderAdd from './folder-add.svg?react' -// import folderDownload from './folder-download.svg?react' -// import folderOpen from './folder-open.svg?react' -// import folderRemove from './folder-remove.svg?react' -import folder from './folder.svg?react' -// import gift from './gift.svg?react' -import globeAlt from './globe-alt.svg?react' -// import globe from './globe.svg?react' -// import hand from './hand.svg?react' -// import hashtag from './hashtag.svg?react' -// import heart from './heart.svg?react' -import home from './home.svg?react' -// import identification from './identification.svg?react' -// import inboxIn from './inbox-in.svg?react' -// import inbox from './inbox.svg?react' -import informationCircle from './information-circle.svg?react' -// import key from './key.svg?react' -// import library from './library.svg?react' -import lightBulb from './light-bulb.svg?react' -// import lightningBolt from './lightning-bolt.svg?react' -// import link from './link.svg?react' -// import locationMarker from './location-marker.svg?react' -import lockClosed from './lock-closed.svg?react' -// import lockOpen from './lock-open.svg?react' -// import login from './login.svg?react' -// import logout from './logout.svg?react' -// import mailOpen from './mail-open.svg?react' -// import mail from './mail.svg?react' -// import map from './map.svg?react' -// import menuAlt1 from './menu-alt-1.svg?react' -// import menuAlt2 from './menu-alt-2.svg?react' -// import menuAlt3 from './menu-alt-3.svg?react' -// import menuAlt4 from './menu-alt-4.svg?react' -// import menu from './menu.svg?react' -// import microphone from './microphone.svg?react' -// import minusCircle from './minus-circle.svg?react' -// import minusSm from './minus-sm.svg?react' -// import minus from './minus.svg?react' -import moon from './moon.svg?react' -// import musicNote from './music-note.svg?react' -// import newspaper from './newspaper.svg?react' -import noSymbol from './no-symbol.svg?react' -// import officeBuilding from './office-building.svg?react' -// import paperAirplane from './paper-airplane.svg?react' -// import paperClip from './paper-clip.svg?react' -// import pause from './pause.svg?react' -// import pencilAlt from './pencil-alt.svg?react' -// import pencil from './pencil.svg?react' -// import phoneIncoming from './phone-incoming.svg?react' -// import phoneMissedCall from './phone-missed-call.svg?react' -// import phoneOutgoing from './phone-outgoing.svg?react' -// import phone from './phone.svg?react' -// import photograph from './photograph.svg?react' -// import play from './play.svg?react' -import plusCircle from './plus-circle.svg?react' -// import plusSm from './plus-sm.svg?react' -// import plus from './plus.svg?react' -// import presentationChartBar from './presentation-chart-bar.svg?react' -// import presentationChartLine from './presentation-chart-line.svg?react' -import printer from './printer.svg?react' -// import puzzle from './puzzle.svg?react' -// import qrcode from './qrcode.svg?react' -import questionMarkCircle from './question-mark-circle.svg?react' -// import receiptRefund from './receipt-refund.svg?react' -// import receiptTax from './receipt-tax.svg?react' -import refresh from './refresh.svg?react' -// import reply from './reply.svg?react' -// import rewind from './rewind.svg?react' -// import rss from './rss.svg?react' -// import saveAs from './save-as.svg?react' -// import save from './save.svg?react' -// import scale from './scale.svg?react' -// import scissors from './scissors.svg?react' -// import searchCircle from './search-circle.svg?react' -import search from './search.svg?react' -// import selector from './selector.svg?react' -// import server from './server.svg?react' -// import share from './share.svg?react' -// import shieldCheck from './shield-check.svg?react' -// import shieldExclamation from './shield-exclamation.svg?react' -// import shoppingBag from './shopping-bag.svg?react' -// import shoppingCart from './shopping-cart.svg?react' -// import sortAscending from './sort-ascending.svg?react' -// import sortDescending from './sort-descending.svg?react' -// import sparkles from './sparkles.svg?react' -import speakerphone from './speakerphone.svg?react' -// import star from './star.svg?react' -// import statusOffline from './status-offline.svg?react' -// import statusOnline from './status-online.svg?react' -// import stop from './stop.svg?react' -import sun from './sun.svg?react' -// import support from './support.svg?react' -// import switchHorizontal from './switch-horizontal.svg?react' -// import switchVertical from './switch-vertical.svg?react' -// import table from './table.svg?react' -// import tag from './tag.svg?react' -// import template from './template.svg?react' -// import terminal from './terminal.svg?react' -// import thumbDown from './thumb-down.svg?react' -// import thumbUp from './thumb-up.svg?react' -// import ticket from './ticket.svg?react' -// import translate from './translate.svg?react' -import trash from './trash.svg?react' -// import trendingDown from './trending-down.svg?react' -// import trendingUp from './trending-up.svg?react' -// import truck from './truck.svg?react' -// import upload from './upload.svg?react' -// import userAdd from './user-add.svg?react' -// import userCircle from './user-circle.svg?react' -// import userGroup from './user-group.svg?react' -// import userRemove from './user-remove.svg?react' -// import user from './user.svg?react' -// import users from './users.svg?react' -// import variable from './variable.svg?react' -// import videoCamera from './video-camera.svg?react' -// import viewBoards from './view-boards.svg?react' -// import viewGridAdd from './view-grid-add.svg?react' -// import viewGrid from './view-grid.svg?react' -// import viewList from './view-list.svg?react' -// import volumeOff from './volume-off.svg?react' -// import volumeUp from './volume-up.svg?react' -// import wifi from './wifi.svg?react' -import xCircle from './x-circle.svg?react' -import x from './x.svg?react' -// import zoomIn from './zoom-in.svg?react' -// import zoomOut from './zoom-out.svg?react' +// import { ReactComponent as academicCap } from './academic-cap.svg' +// import { ReactComponent as adjustments } from './adjustments.svg' +// import { ReactComponent as annotation } from './annotation.svg' +// import { ReactComponent as archive } from './archive.svg' +// import { ReactComponent as arrowCircleDown } from './arrow-circle-down.svg' +// import { ReactComponent as arrowCircleLeft } from './arrow-circle-left.svg' +// import { ReactComponent as arrowCircleRight } from './arrow-circle-right.svg' +// import { ReactComponent as arrowCircleUp } from './arrow-circle-up.svg' +import { ReactComponent as arrowDown } from './arrow-down.svg' +// import { ReactComponent as arrowLeft } from './arrow-left.svg' +// import { ReactComponent as arrowNarrowDown } from './arrow-narrow-down.svg' +// import { ReactComponent as arrowNarrowLeft } from './arrow-narrow-left.svg' +// import { ReactComponent as arrowNarrowRight } from './arrow-narrow-right.svg' +// import { ReactComponent as arrowNarrowUp } from './arrow-narrow-up.svg' +// import { ReactComponent as arrowRight } from './arrow-right.svg' +import { ReactComponent as arrowUp } from './arrow-up.svg' +// import { ReactComponent as arrowsExpand } from './arrows-expand.svg' +// import { ReactComponent as atSymbol } from './at-symbol.svg' +// import { ReactComponent as backspace } from './backspace.svg' +// import { ReactComponent as badgeCheck } from './badge-check.svg' +import { ReactComponent as ban } from './ban.svg' +// import { ReactComponent as beaker } from './beaker.svg' +// import { ReactComponent as bell } from './bell.svg' +import { ReactComponent as bookOpen } from './book-open.svg' +// import { ReactComponent as bookmarkAlt } from './bookmark-alt.svg' +// import { ReactComponent as bookmark } from './bookmark.svg' +// import { ReactComponent as briefcase } from './briefcase.svg' +// import { ReactComponent as cake } from './cake.svg' +// import { ReactComponent as calculator } from './calculator.svg' +// import { ReactComponent as calendar } from './calendar.svg' +// import { ReactComponent as camera } from './camera.svg' +// import { ReactComponent as cash } from './cash.svg' +// import { ReactComponent as chartBar } from './chart-bar.svg' +// import { ReactComponent as chartPie } from './chart-pie.svg' +// import { ReactComponent as chartSquareBar } from './chart-square-bar.svg' +// import { ReactComponent as chatAlt2 } from './chat-alt-2.svg' +// import { ReactComponent as chatAlt } from './chat-alt.svg' +// import { ReactComponent as chat } from './chat.svg' +import { ReactComponent as checkCircle } from './check-circle.svg' +import { ReactComponent as check } from './check.svg' +// import { ReactComponent as chevronDoubleDown } from './chevron-double-down.svg' +// import { ReactComponent as chevronDoubleLeft } from './chevron-double-left.svg' +// import { ReactComponent as chevronDoubleRight } from './chevron-double-right.svg' +// import { ReactComponent as chevronDoubleUp } from './chevron-double-up.svg' +import { ReactComponent as chevronDown } from './chevron-down.svg' +import { ReactComponent as chevronLeft } from './chevron-left.svg' +import { ReactComponent as chevronRight } from './chevron-right.svg' +import { ReactComponent as chevronUp } from './chevron-up.svg' +// import { ReactComponent as chip } from './chip.svg' +// import { ReactComponent as clipboardCheck } from './clipboard-check.svg' +import { ReactComponent as clipboardCopy } from './clipboard-copy.svg' +// import { ReactComponent as clipboardList } from './clipboard-list.svg' +// import { ReactComponent as clipboard } from './clipboard.svg' +// import { ReactComponent as clock } from './clock.svg' +// import { ReactComponent as cloudDownload } from './cloud-download.svg' +// import { ReactComponent as cloudUpload } from './cloud-upload.svg' +// import { ReactComponent as cloud } from './cloud.svg' +// import { ReactComponent as code } from './code.svg' +import { ReactComponent as cog } from './cog.svg' +// import { ReactComponent as collection } from './collection.svg' +// import { ReactComponent as colorSwatch } from './color-swatch.svg' +// import { ReactComponent as creditCard } from './credit-card.svg' +// import { ReactComponent as cubeTransparent } from './cube-transparent.svg' +// import { ReactComponent as cube } from './cube.svg' +// import { ReactComponent as currencyBangladeshi } from './currency-bangladeshi.svg' +// import { ReactComponent as currencyDollar } from './currency-dollar.svg' +// import { ReactComponent as currencyEuro } from './currency-euro.svg' +// import { ReactComponent as currencyPound } from './currency-pound.svg' +// import { ReactComponent as currencyRupee } from './currency-rupee.svg' +// import { ReactComponent as currencyYen } from './currency-yen.svg' +// import { ReactComponent as cursorClick } from './cursor-click.svg' +import { ReactComponent as database } from './database.svg' +// import { ReactComponent as desktopComputer } from './desktop-computer.svg' +// import { ReactComponent as deviceMobile } from './device-mobile.svg' +// import { ReactComponent as deviceTablet } from './device-tablet.svg' +// import { ReactComponent as documentAdd } from './document-add.svg' +// import { ReactComponent as documentDownload } from './document-download.svg' +// import { ReactComponent as documentDuplicate } from './document-duplicate.svg' +// import { ReactComponent as documentRemove } from './document-remove.svg' +// import { ReactComponent as documentReport } from './document-report.svg' +// import { ReactComponent as documentSearch } from './document-search.svg' +import { ReactComponent as documentText } from './document-text.svg' +import { ReactComponent as document } from './document.svg' +// import { ReactComponent as dotsCircleHorizontal } from './dots-circle-horizontal.svg' +// import { ReactComponent as dotsHorizontal } from './dots-horizontal.svg' +// import { ReactComponent as dotsVertical } from './dots-vertical.svg' +import { ReactComponent as download } from './download.svg' +// import { ReactComponent as duplicate } from './duplicate.svg' +// import { ReactComponent as emojiHappy } from './emoji-happy.svg' +// import { ReactComponent as emojiSad } from './emoji-sad.svg' +import { ReactComponent as exclamationCircle } from './exclamation-circle.svg' +import { ReactComponent as exclamation } from './exclamation.svg' +import { ReactComponent as externalLink } from './external-link.svg' +import { ReactComponent as eyeOff } from './eye-off.svg' +import { ReactComponent as eye } from './eye.svg' +// import { ReactComponent as fastForward } from './fast-forward.svg' +// import { ReactComponent as film } from './film.svg' +// import { ReactComponent as filter } from './filter.svg' +// import { ReactComponent as fingerPrint } from './finger-print.svg' +// import { ReactComponent as fire } from './fire.svg' +import { ReactComponent as flag } from './flag.svg' +// import { ReactComponent as folderAdd } from './folder-add.svg' +// import { ReactComponent as folderDownload } from './folder-download.svg' +// import { ReactComponent as folderOpen } from './folder-open.svg' +// import { ReactComponent as folderRemove } from './folder-remove.svg' +import { ReactComponent as folder } from './folder.svg' +// import { ReactComponent as gift } from './gift.svg' +import { ReactComponent as globeAlt } from './globe-alt.svg' +// import { ReactComponent as globe } from './globe.svg' +// import { ReactComponent as hand } from './hand.svg' +// import { ReactComponent as hashtag } from './hashtag.svg' +// import { ReactComponent as heart } from './heart.svg' +import { ReactComponent as home } from './home.svg' +// import { ReactComponent as identification } from './identification.svg' +// import { ReactComponent as inboxIn } from './inbox-in.svg' +// import { ReactComponent as inbox } from './inbox.svg' +import { ReactComponent as informationCircle } from './information-circle.svg' +// import { ReactComponent as key } from './key.svg' +// import { ReactComponent as library } from './library.svg' +import { ReactComponent as lightBulb } from './light-bulb.svg' +// import { ReactComponent as lightningBolt } from './lightning-bolt.svg' +// import { ReactComponent as link } from './link.svg' +// import { ReactComponent as locationMarker } from './location-marker.svg' +import { ReactComponent as lockClosed } from './lock-closed.svg' +// import { ReactComponent as lockOpen } from './lock-open.svg' +// import { ReactComponent as login } from './login.svg' +// import { ReactComponent as logout } from './logout.svg' +// import { ReactComponent as mailOpen } from './mail-open.svg' +// import { ReactComponent as mail } from './mail.svg' +// import { ReactComponent as map } from './map.svg' +// import { ReactComponent as menuAlt1 } from './menu-alt-1.svg' +// import { ReactComponent as menuAlt2 } from './menu-alt-2.svg' +// import { ReactComponent as menuAlt3 } from './menu-alt-3.svg' +// import { ReactComponent as menuAlt4 } from './menu-alt-4.svg' +// import { ReactComponent as menu } from './menu.svg' +// import { ReactComponent as microphone } from './microphone.svg' +// import { ReactComponent as minusCircle } from './minus-circle.svg' +// import { ReactComponent as minusSm } from './minus-sm.svg' +// import { ReactComponent as minus } from './minus.svg' +import { ReactComponent as moon } from './moon.svg' +// import { ReactComponent as musicNote } from './music-note.svg' +// import { ReactComponent as newspaper } from './newspaper.svg' +import { ReactComponent as noSymbol } from './no-symbol.svg' +// import { ReactComponent as officeBuilding } from './office-building.svg' +// import { ReactComponent as paperAirplane } from './paper-airplane.svg' +// import { ReactComponent as paperClip } from './paper-clip.svg' +// import { ReactComponent as pause } from './pause.svg' +// import { ReactComponent as pencilAlt } from './pencil-alt.svg' +// import { ReactComponent as pencil } from './pencil.svg' +// import { ReactComponent as phoneIncoming } from './phone-incoming.svg' +// import { ReactComponent as phoneMissedCall } from './phone-missed-call.svg' +// import { ReactComponent as phoneOutgoing } from './phone-outgoing.svg' +// import { ReactComponent as phone } from './phone.svg' +// import { ReactComponent as photograph } from './photograph.svg' +// import { ReactComponent as play } from './play.svg' +import { ReactComponent as plusCircle } from './plus-circle.svg' +// import { ReactComponent as plusSm } from './plus-sm.svg' +// import { ReactComponent as plus } from './plus.svg' +// import { ReactComponent as presentationChartBar } from './presentation-chart-bar.svg' +// import { ReactComponent as presentationChartLine } from './presentation-chart-line.svg' +import { ReactComponent as printer } from './printer.svg' +// import { ReactComponent as puzzle } from './puzzle.svg' +// import { ReactComponent as qrcode } from './qrcode.svg' +import { ReactComponent as questionMarkCircle } from './question-mark-circle.svg' +// import { ReactComponent as receiptRefund } from './receipt-refund.svg' +// import { ReactComponent as receiptTax } from './receipt-tax.svg' +import { ReactComponent as refresh } from './refresh.svg' +// import { ReactComponent as reply } from './reply.svg' +// import { ReactComponent as rewind } from './rewind.svg' +// import { ReactComponent as rss } from './rss.svg' +// import { ReactComponent as saveAs } from './save-as.svg' +// import { ReactComponent as save } from './save.svg' +// import { ReactComponent as scale } from './scale.svg' +// import { ReactComponent as scissors } from './scissors.svg' +// import { ReactComponent as searchCircle } from './search-circle.svg' +import { ReactComponent as search } from './search.svg' +// import { ReactComponent as selector } from './selector.svg' +// import { ReactComponent as server } from './server.svg' +// import { ReactComponent as share } from './share.svg' +// import { ReactComponent as shieldCheck } from './shield-check.svg' +// import { ReactComponent as shieldExclamation } from './shield-exclamation.svg' +// import { ReactComponent as shoppingBag } from './shopping-bag.svg' +// import { ReactComponent as shoppingCart } from './shopping-cart.svg' +// import { ReactComponent as sortAscending } from './sort-ascending.svg' +// import { ReactComponent as sortDescending } from './sort-descending.svg' +// import { ReactComponent as sparkles } from './sparkles.svg' +import { ReactComponent as speakerphone } from './speakerphone.svg' +// import { ReactComponent as star } from './star.svg' +// import { ReactComponent as statusOffline } from './status-offline.svg' +// import { ReactComponent as statusOnline } from './status-online.svg' +// import { ReactComponent as stop } from './stop.svg' +import { ReactComponent as sun } from './sun.svg' +// import { ReactComponent as support } from './support.svg' +// import { ReactComponent as switchHorizontal } from './switch-horizontal.svg' +// import { ReactComponent as switchVertical } from './switch-vertical.svg' +// import { ReactComponent as table } from './table.svg' +// import { ReactComponent as tag } from './tag.svg' +// import { ReactComponent as template } from './template.svg' +// import { ReactComponent as terminal } from './terminal.svg' +// import { ReactComponent as thumbDown } from './thumb-down.svg' +// import { ReactComponent as thumbUp } from './thumb-up.svg' +// import { ReactComponent as ticket } from './ticket.svg' +// import { ReactComponent as translate } from './translate.svg' +import { ReactComponent as trash } from './trash.svg' +// import { ReactComponent as trendingDown } from './trending-down.svg' +// import { ReactComponent as trendingUp } from './trending-up.svg' +// import { ReactComponent as truck } from './truck.svg' +// import { ReactComponent as upload } from './upload.svg' +// import { ReactComponent as userAdd } from './user-add.svg' +// import { ReactComponent as userCircle } from './user-circle.svg' +// import { ReactComponent as userGroup } from './user-group.svg' +// import { ReactComponent as userRemove } from './user-remove.svg' +// import { ReactComponent as user } from './user.svg' +// import { ReactComponent as users } from './users.svg' +// import { ReactComponent as variable } from './variable.svg' +// import { ReactComponent as videoCamera } from './video-camera.svg' +// import { ReactComponent as viewBoards } from './view-boards.svg' +// import { ReactComponent as viewGridAdd } from './view-grid-add.svg' +// import { ReactComponent as viewGrid } from './view-grid.svg' +// import { ReactComponent as viewList } from './view-list.svg' +// import { ReactComponent as volumeOff } from './volume-off.svg' +// import { ReactComponent as volumeUp } from './volume-up.svg' +// import { ReactComponent as wifi } from './wifi.svg' +import { ReactComponent as xCircle } from './x-circle.svg' +import { ReactComponent as x } from './x.svg' +// import { ReactComponent as zoomIn } from './zoom-in.svg' +// import { ReactComponent as zoomOut } from './zoom-out.svg' -export { arrowDown, arrowUp, ban, bookOpen, checkCircle, check, chevronDown, chevronLeft, chevronRight, chevronUp, clipboardCopy, cog, database, documentText, document, download, exclamationCircle, exclamation, externalLink, eyeOff, eye, flag, folder, globeAlt, home, informationCircle, lightBulb, lockClosed, moon, noSymbol, plusCircle, printer, questionMarkCircle, refresh, search, speakerphone, sun, trash, xCircle, x } \ No newline at end of file +export { + arrowDown, + arrowUp, + ban, + bookOpen, + checkCircle, + check, + chevronDown, + chevronLeft, + chevronRight, + chevronUp, + clipboardCopy, + cog, + database, + documentText, + document, + download, + exclamationCircle, + exclamation, + externalLink, + eyeOff, + eye, + flag, + folder, + globeAlt, + home, + informationCircle, + lightBulb, + lockClosed, + moon, + noSymbol, + plusCircle, + printer, + questionMarkCircle, + refresh, + search, + speakerphone, + sun, + trash, + xCircle, + x, +} From b572a9df651e10afe52692bb9e7f9b464d5b7849 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 15:09:40 -0300 Subject: [PATCH 09/43] add names to test runner indexes --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45a732804a..04557cc55d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -165,7 +165,7 @@ jobs: echo test_list_array=$(echo ${TEST_LIST} | jq -c '[_nwise(${{ env.TEST_SPLIT_NUMBER }})]') >> $GITHUB_OUTPUT test-craco: - name: 'Test Runner #${{ matrix.runner-index }}' + name: 'Test Runner #${{ matrix.runner-index }} - CRACO' needs: [install, codecovstartup, runner-indexes-craco] runs-on: ubuntu-latest strategy: @@ -258,7 +258,7 @@ jobs: runner-indexes-vitest: runs-on: ubuntu-latest - name: Generate runner indexes Vite + name: Generate runner indexes Vitest needs: install env: TEST_SPLIT_NUMBER: 80 @@ -286,7 +286,7 @@ jobs: echo test_list_array=$(echo ${TEST_LIST} | jq -c '[_nwise(${{ env.TEST_SPLIT_NUMBER }})]') >> $GITHUB_OUTPUT test-vitest: - name: 'Test Runner #${{ matrix.runner-index }}' + name: 'Test Runner #${{ matrix.runner-index }} - Vitest' needs: [install, codecovstartup, runner-indexes-vitest] runs-on: ubuntu-latest strategy: From ce0b6e562af7f11f63b875cce3e19a4b40ee6136 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 15:13:00 -0300 Subject: [PATCH 10/43] set min threads --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04557cc55d..93fbb5ef2c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -318,7 +318,7 @@ jobs: - name: Run tests run: | TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') - yarn test:ci:new --maxWorkers=2 $TESTS + yarn test:ci:new --minWorkers=1 --maxWorkers=2 $TESTS env: JEST_JUNIT_OUTPUT_DIR: ./reports/junit/ TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} @@ -330,21 +330,21 @@ jobs: token: ${{ secrets.CODECOV_ORG_TOKEN }} url: ${{ secrets.CODECOV_URL }} - - name: Upload test results to codecov + - name: Upload test results to codecov staging uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} url: ${{ secrets.CODECOV_STAGING_URL }} - - name: Upload test results to codecov + - name: Upload test results to codecov QA uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_QA_TOKEN }} url: ${{ secrets.CODECOV_QA_URL }} - - name: Upload test results to codecov + - name: Upload test results to codecov public QA uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: From bb488b99eaa712c512195538d96130771b09b54d Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 15:18:44 -0300 Subject: [PATCH 11/43] add in reporter all tests --- vitest.config.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vitest.config.mjs b/vitest.config.mjs index f91685b150..52b06ba773 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -12,13 +12,13 @@ export default defineConfig((configEnv) => reporters: [ ['text'], ['html', { outputFile: 'coverage/index.html' }], - ['junit', { outputFile: 'reports/junit/junit.xml' }], ], reportOnFailure: true, }, globals: true, environment: ['jsdom'], setupFiles: './src/vitest.setup.js', + reporters: ['junit', { outputFile: 'reports/junit/junit.xml' }], include: ['src/**/*.test.*'], exclude: [ // Default exclude patterns @@ -28,7 +28,7 @@ export default defineConfig((configEnv) => '**/.{idea,git,cache,output,temp}/**', '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', // Custom exclude patterns - 'src/**/*.spec.*' + 'src/**/*.spec.*', ], }, }) From 950d6acc1652f09eb75bc2f5ae155776b00e92e3 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 15:32:58 -0300 Subject: [PATCH 12/43] conditionally enable junit test reporter --- .github/workflows/ci.yml | 2 +- vitest.config.mjs | 65 +++++++++++++++++++++------------------- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 93fbb5ef2c..b5bad497b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -320,7 +320,7 @@ jobs: TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') yarn test:ci:new --minWorkers=1 --maxWorkers=2 $TESTS env: - JEST_JUNIT_OUTPUT_DIR: ./reports/junit/ + ENABLE_TEST_REPORTER: true TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} - name: Upload test results to codecov diff --git a/vitest.config.mjs b/vitest.config.mjs index 52b06ba773..b4b4917c9a 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -1,36 +1,39 @@ import { defineConfig, mergeConfig } from 'vitest/config' -import viteConfig from './vite.config.mjs' +import ViteConfig from './vite.config.mjs' -export default defineConfig((configEnv) => - mergeConfig( - viteConfig(configEnv), - defineConfig({ - test: { - coverage: { - provider: 'v8', - reporters: [ - ['text'], - ['html', { outputFile: 'coverage/index.html' }], - ], - reportOnFailure: true, - }, - globals: true, - environment: ['jsdom'], - setupFiles: './src/vitest.setup.js', - reporters: ['junit', { outputFile: 'reports/junit/junit.xml' }], - include: ['src/**/*.test.*'], - exclude: [ - // Default exclude patterns - '**/node_modules/**', - '**/dist/**', - '**/cypress/**', - '**/.{idea,git,cache,output,temp}/**', - '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', - // Custom exclude patterns - 'src/**/*.spec.*', - ], +const VitestConfig = defineConfig((config) => { + const reporters = [] + if (process.env.ENABLE_TEST_REPORTER) { + reporters.push(['junit', { outputFile: 'reports/junit/junit.xml' }]) + } + + return { + test: { + coverage: { + provider: 'v8', + reporters: [['text'], ['html', { outputFile: 'coverage/index.html' }]], + reportOnFailure: true, }, - }) - ) + globals: true, + environment: ['jsdom'], + setupFiles: './src/vitest.setup.js', + reporters: reporters, + include: ['src/**/*.test.*'], + exclude: [ + // Default exclude patterns + '**/node_modules/**', + '**/dist/**', + '**/cypress/**', + '**/.{idea,git,cache,output,temp}/**', + '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', + // Custom exclude patterns + 'src/**/*.spec.*', + ], + }, + } +}) + +export default defineConfig((configEnv) => + mergeConfig(ViteConfig(configEnv), VitestConfig(configEnv)) ) From 64c293937216fee0df1bf9a97579c1afb0b0068e Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 15:45:32 -0300 Subject: [PATCH 13/43] only include src files in coverage reporting --- vitest.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/vitest.config.mjs b/vitest.config.mjs index b4b4917c9a..be5246e4c8 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -11,6 +11,7 @@ const VitestConfig = defineConfig((config) => { return { test: { coverage: { + include: ['src/**/*'], provider: 'v8', reporters: [['text'], ['html', { outputFile: 'coverage/index.html' }]], reportOnFailure: true, From 9917c187714da0b88f6306870bce757415c9f6ca Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Mon, 16 Sep 2024 15:57:52 -0300 Subject: [PATCH 14/43] exclude some files from coverage reporting --- codecov.yml | 4 ++++ src/{vitest.setup.js => vitest.setup.ts} | 9 +++++++++ vitest.config.mjs | 10 ++++++++++ 3 files changed, 23 insertions(+) rename src/{vitest.setup.js => vitest.setup.ts} (62%) diff --git a/codecov.yml b/codecov.yml index 5f5184914a..6fcf0b03b1 100644 --- a/codecov.yml +++ b/codecov.yml @@ -32,6 +32,10 @@ ignore: - ./src/**/*.stories.tsx - ./src/setupTests.js - ./src/setupProxy.js + - ./src/ts-override.d.ts + - ./src/types.ts + - ./src/vite-env.d.ts + - ./src/vitest.setup.ts - ./src/reportWebVitals.js - ./scripts/* - ./src/index.ts diff --git a/src/vitest.setup.js b/src/vitest.setup.ts similarity index 62% rename from src/vitest.setup.js rename to src/vitest.setup.ts index 54098c59d4..fd63776896 100644 --- a/src/vitest.setup.js +++ b/src/vitest.setup.ts @@ -9,3 +9,12 @@ expect.extend(matchers) afterEach(() => { cleanup() }) + +// Prevent timezone differences between local and CI/CD +const setupTestGlobal = async () => { + process.env.TZ = 'UTC' +} + +export default setupTestGlobal + +process.env.REACT_APP_ZOD_IGNORE_TESTS = 'true' diff --git a/vitest.config.mjs b/vitest.config.mjs index be5246e4c8..5929e22ff9 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -12,6 +12,16 @@ const VitestConfig = defineConfig((config) => { test: { coverage: { include: ['src/**/*'], + exclude: [ + 'vitest.setup.ts', + 'custom-testing-library.js', + 'setupTestGlobal.js', + 'setupTests.js', + 'setupProxy.js', + 'ts-override.d.ts', + 'types.ts', + 'vite-env.d.ts', + ], provider: 'v8', reporters: [['text'], ['html', { outputFile: 'coverage/index.html' }]], reportOnFailure: true, From cab197320d139e7486a94376ac69c3e43f2c244b Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Tue, 17 Sep 2024 07:27:43 -0300 Subject: [PATCH 15/43] there are some issues with coverage excludes making the files not accessible to run --- vitest.config.mjs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/vitest.config.mjs b/vitest.config.mjs index 5929e22ff9..0a5d0829c5 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -12,16 +12,7 @@ const VitestConfig = defineConfig((config) => { test: { coverage: { include: ['src/**/*'], - exclude: [ - 'vitest.setup.ts', - 'custom-testing-library.js', - 'setupTestGlobal.js', - 'setupTests.js', - 'setupProxy.js', - 'ts-override.d.ts', - 'types.ts', - 'vite-env.d.ts', - ], + exclude: [], provider: 'v8', reporters: [['text'], ['html', { outputFile: 'coverage/index.html' }]], reportOnFailure: true, From f5b64665bb1520a04e9305f9b52a7ba8e18c32d0 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Tue, 17 Sep 2024 07:32:01 -0300 Subject: [PATCH 16/43] forgot that I moved the setup file to ts --- vitest.config.mjs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/vitest.config.mjs b/vitest.config.mjs index 0a5d0829c5..f01ff5e4d7 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -12,14 +12,23 @@ const VitestConfig = defineConfig((config) => { test: { coverage: { include: ['src/**/*'], - exclude: [], + exclude: [ + 'vitest.setup.ts', + 'custom-testing-library.js', + 'setupTestGlobal.js', + 'setupTests.js', + 'setupProxy.js', + 'ts-override.d.ts', + 'types.ts', + 'vite-env.d.ts', + ], provider: 'v8', reporters: [['text'], ['html', { outputFile: 'coverage/index.html' }]], reportOnFailure: true, }, globals: true, environment: ['jsdom'], - setupFiles: './src/vitest.setup.js', + setupFiles: './src/vitest.setup.ts', reporters: reporters, include: ['src/**/*.test.*'], exclude: [ From d2bd52b53897af578fab5df813446cdc8635263e Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Tue, 17 Sep 2024 07:59:43 -0300 Subject: [PATCH 17/43] add --changed to test watch command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8066ab8d04..b81be95556 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "test": "yarn generate-icons:webpack && craco test", "test:ci": "yarn generate-icons:webpack && craco test --collectCoverage --reporters=default --reporters=jest-junit", "test:new": "yarn generate-icons:vite && vitest run --changed --config ./vitest.config.mjs", - "test:watch:new": "yarn generate-icons:vite && vitest watch --config ./vitest.config.mjs", + "test:watch:new": "yarn generate-icons:vite && vitest watch --changed --config ./vitest.config.mjs", "test:ci:new": "yarn generate-icons:vite && vitest run --config ./vitest.config.mjs --coverage", "preview-coverage": "npx vite preview --open --outDir coverage", "test:mutation": "npx stryker run", From d1203800f2dc2c19066c2952630923701d2b7a36 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Tue, 17 Sep 2024 10:18:32 -0300 Subject: [PATCH 18/43] add name to prod uploads for craco and vitest --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b5bad497b8..b7671c0ed1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -209,21 +209,21 @@ jobs: token: ${{ secrets.CODECOV_ORG_TOKEN }} url: ${{ secrets.CODECOV_URL }} - - name: Upload test results to codecov + - name: Upload test results to codecov staging uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} url: ${{ secrets.CODECOV_STAGING_URL }} - - name: Upload test results to codecov + - name: Upload test results to codecov QA uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_QA_TOKEN }} url: ${{ secrets.CODECOV_QA_URL }} - - name: Upload test results to codecov + - name: Upload test results to codecov public QA uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: @@ -239,7 +239,7 @@ jobs: - name: Upload to Production if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | - codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error + codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error --name "CRACO-${{ matrix.runner-index }}" - name: Upload to Staging if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} @@ -360,7 +360,7 @@ jobs: - name: Upload to Production if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | - codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error + codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error --name "VITEST-${{ matrix.runner-index }}" - name: Upload to Staging if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} From fc5eb5b81af21e49a99db8ae56d9b976bb8b1242 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Tue, 17 Sep 2024 10:25:16 -0300 Subject: [PATCH 19/43] tidying up some stuff in the ci --- .github/workflows/ci.yml | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7671c0ed1..0fd718dc30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,7 +133,7 @@ jobs: run: | yarn format-check - codecovstartup: + codecov-startup: name: Codecov Startup needs: install uses: codecov/gha-workflows/.github/workflows/codecov-startup.yml@v1.2.14 @@ -166,7 +166,7 @@ jobs: test-craco: name: 'Test Runner #${{ matrix.runner-index }} - CRACO' - needs: [install, codecovstartup, runner-indexes-craco] + needs: [install, codecov-startup, runner-indexes-craco] runs-on: ubuntu-latest strategy: matrix: @@ -202,28 +202,28 @@ jobs: JEST_JUNIT_OUTPUT_DIR: ./reports/junit/ TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-craco.outputs.test_list_array)[matrix.runner-index]) }} - - name: Upload test results to codecov + - name: Upload test results to Codecov uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_ORG_TOKEN }} url: ${{ secrets.CODECOV_URL }} - - name: Upload test results to codecov staging + - name: Upload test results to Codecov staging uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} url: ${{ secrets.CODECOV_STAGING_URL }} - - name: Upload test results to codecov QA + - name: Upload test results to Codecov QA uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_QA_TOKEN }} url: ${{ secrets.CODECOV_QA_URL }} - - name: Upload test results to codecov public QA + - name: Upload test results to Codecov public QA uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: @@ -236,22 +236,22 @@ jobs: make test_env.install_cli ## Don't upload on forks for now. - - name: Upload to Production + - name: Upload coverage to Production if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error --name "CRACO-${{ matrix.runner-index }}" - - name: Upload to Staging + - name: Upload coverage to Staging if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | codecovcli -u ${{ secrets.CODECOV_STAGING_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} --fail-on-error - - name: Upload to QA + - name: Upload coverage to QA if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | codecovcli -u ${{ secrets.CODECOV_QA_URL }} do-upload -t ${{ secrets.CODECOV_QA_TOKEN }} --fail-on-error - - name: Upload to Public QA + - name: Upload coverage to Public QA if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | codecovcli -u ${{ secrets.CODECOV_PUBLIC_QA_URL }} do-upload -t ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} --fail-on-error @@ -287,7 +287,7 @@ jobs: test-vitest: name: 'Test Runner #${{ matrix.runner-index }} - Vitest' - needs: [install, codecovstartup, runner-indexes-vitest] + needs: [install, codecov-startup, runner-indexes-vitest] runs-on: ubuntu-latest strategy: matrix: @@ -323,28 +323,28 @@ jobs: ENABLE_TEST_REPORTER: true TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} - - name: Upload test results to codecov + - name: Upload test results to Codecov uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_ORG_TOKEN }} url: ${{ secrets.CODECOV_URL }} - - name: Upload test results to codecov staging + - name: Upload test results to Codecov staging uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} url: ${{ secrets.CODECOV_STAGING_URL }} - - name: Upload test results to codecov QA + - name: Upload test results to Codecov QA uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: token: ${{ secrets.CODECOV_QA_TOKEN }} url: ${{ secrets.CODECOV_QA_URL }} - - name: Upload test results to codecov public QA + - name: Upload test results to Codecov public QA uses: codecov/test-results-action@v1 if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} with: @@ -357,22 +357,22 @@ jobs: make test_env.install_cli ## Don't upload on forks for now. - - name: Upload to Production + - name: Upload coverage to Production if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error --name "VITEST-${{ matrix.runner-index }}" - - name: Upload to Staging + - name: Upload coverage to Staging if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | codecovcli -u ${{ secrets.CODECOV_STAGING_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} --fail-on-error - - name: Upload to QA + - name: Upload coverage to QA if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | codecovcli -u ${{ secrets.CODECOV_QA_URL }} do-upload -t ${{ secrets.CODECOV_QA_TOKEN }} --fail-on-error - - name: Upload to Public QA + - name: Upload coverage to Public QA if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} run: | codecovcli -u ${{ secrets.CODECOV_PUBLIC_QA_URL }} do-upload -t ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} --fail-on-error From 168ffa49233b1a30d5815e12be553f7672f107e8 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Tue, 17 Sep 2024 14:15:27 -0300 Subject: [PATCH 20/43] disable vitest to see what happens --- .github/workflows/ci.yml | 182 +++++++++++++++++++-------------------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0fd718dc30..038c176830 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -285,97 +285,97 @@ jobs: echo json=${INDEX_JSON} >> $GITHUB_OUTPUT echo test_list_array=$(echo ${TEST_LIST} | jq -c '[_nwise(${{ env.TEST_SPLIT_NUMBER }})]') >> $GITHUB_OUTPUT - test-vitest: - name: 'Test Runner #${{ matrix.runner-index }} - Vitest' - needs: [install, codecov-startup, runner-indexes-vitest] - runs-on: ubuntu-latest - strategy: - matrix: - runner-index: ${{ fromjson(needs.runner-indexes-vitest.outputs.json) }} - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Cache node_modules - id: cache-node-modules - uses: actions/cache@v4 - env: - cache-name: cache-gazebo-node-modules - with: - path: | - node_modules - key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-${{ env.cache-name }}- - - - name: Run tests - run: | - TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') - yarn test:ci:new --minWorkers=1 --maxWorkers=2 $TESTS - env: - ENABLE_TEST_REPORTER: true - TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} - - - name: Upload test results to Codecov - uses: codecov/test-results-action@v1 - if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} - with: - token: ${{ secrets.CODECOV_ORG_TOKEN }} - url: ${{ secrets.CODECOV_URL }} - - - name: Upload test results to Codecov staging - uses: codecov/test-results-action@v1 - if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} - with: - token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} - url: ${{ secrets.CODECOV_STAGING_URL }} - - - name: Upload test results to Codecov QA - uses: codecov/test-results-action@v1 - if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} - with: - token: ${{ secrets.CODECOV_QA_TOKEN }} - url: ${{ secrets.CODECOV_QA_URL }} - - - name: Upload test results to Codecov public QA - uses: codecov/test-results-action@v1 - if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} - with: - token: ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} - url: ${{ secrets.CODECOV_PUBLIC_QA_URL }} - - - name: Install CLI - if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} - run: | - make test_env.install_cli - - ## Don't upload on forks for now. - - name: Upload coverage to Production - if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} - run: | - codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error --name "VITEST-${{ matrix.runner-index }}" - - - name: Upload coverage to Staging - if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} - run: | - codecovcli -u ${{ secrets.CODECOV_STAGING_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} --fail-on-error - - - name: Upload coverage to QA - if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} - run: | - codecovcli -u ${{ secrets.CODECOV_QA_URL }} do-upload -t ${{ secrets.CODECOV_QA_TOKEN }} --fail-on-error - - - name: Upload coverage to Public QA - if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} - run: | - codecovcli -u ${{ secrets.CODECOV_PUBLIC_QA_URL }} do-upload -t ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} --fail-on-error +# test-vitest: +# name: 'Test Runner #${{ matrix.runner-index }} - Vitest' +# needs: [install, codecov-startup, runner-indexes-vitest] +# runs-on: ubuntu-latest +# strategy: +# matrix: +# runner-index: ${{ fromjson(needs.runner-indexes-vitest.outputs.json) }} +# steps: +# - name: Checkout +# uses: actions/checkout@v4 +# with: +# fetch-depth: 2 + +# - name: Setup Node +# uses: actions/setup-node@v4 +# with: +# node-version: 20 + +# - name: Cache node_modules +# id: cache-node-modules +# uses: actions/cache@v4 +# env: +# cache-name: cache-gazebo-node-modules +# with: +# path: | +# node_modules +# key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} +# restore-keys: | +# ${{ runner.os }}-${{ env.cache-name }}- + +# - name: Run tests +# run: | +# TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') +# yarn test:ci:new --minWorkers=1 --maxWorkers=2 $TESTS +# env: +# ENABLE_TEST_REPORTER: true +# TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} + +# - name: Upload test results to Codecov +# uses: codecov/test-results-action@v1 +# if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} +# with: +# token: ${{ secrets.CODECOV_ORG_TOKEN }} +# url: ${{ secrets.CODECOV_URL }} + +# - name: Upload test results to Codecov staging +# uses: codecov/test-results-action@v1 +# if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} +# with: +# token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} +# url: ${{ secrets.CODECOV_STAGING_URL }} + +# - name: Upload test results to Codecov QA +# uses: codecov/test-results-action@v1 +# if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} +# with: +# token: ${{ secrets.CODECOV_QA_TOKEN }} +# url: ${{ secrets.CODECOV_QA_URL }} + +# - name: Upload test results to Codecov public QA +# uses: codecov/test-results-action@v1 +# if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} +# with: +# token: ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} +# url: ${{ secrets.CODECOV_PUBLIC_QA_URL }} + +# - name: Install CLI +# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} +# run: | +# make test_env.install_cli + +# ## Don't upload on forks for now. +# - name: Upload coverage to Production +# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} +# run: | +# codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error --name "VITEST-${{ matrix.runner-index }}" + +# - name: Upload coverage to Staging +# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} +# run: | +# codecovcli -u ${{ secrets.CODECOV_STAGING_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} --fail-on-error + +# - name: Upload coverage to QA +# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} +# run: | +# codecovcli -u ${{ secrets.CODECOV_QA_URL }} do-upload -t ${{ secrets.CODECOV_QA_TOKEN }} --fail-on-error + +# - name: Upload coverage to Public QA +# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} +# run: | +# codecovcli -u ${{ secrets.CODECOV_PUBLIC_QA_URL }} do-upload -t ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} --fail-on-error upload-bundle-stats-to-prod: name: Upload Bundle Stats - Production From 619bbac9aec1f52bcd760527fc6e0f5204085a3a Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Tue, 17 Sep 2024 14:55:48 -0300 Subject: [PATCH 21/43] increase n builds --- .github/workflows/ci.yml | 182 +++++++++++++++++++-------------------- codecov.yml | 2 +- 2 files changed, 92 insertions(+), 92 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 038c176830..0fd718dc30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -285,97 +285,97 @@ jobs: echo json=${INDEX_JSON} >> $GITHUB_OUTPUT echo test_list_array=$(echo ${TEST_LIST} | jq -c '[_nwise(${{ env.TEST_SPLIT_NUMBER }})]') >> $GITHUB_OUTPUT -# test-vitest: -# name: 'Test Runner #${{ matrix.runner-index }} - Vitest' -# needs: [install, codecov-startup, runner-indexes-vitest] -# runs-on: ubuntu-latest -# strategy: -# matrix: -# runner-index: ${{ fromjson(needs.runner-indexes-vitest.outputs.json) }} -# steps: -# - name: Checkout -# uses: actions/checkout@v4 -# with: -# fetch-depth: 2 - -# - name: Setup Node -# uses: actions/setup-node@v4 -# with: -# node-version: 20 - -# - name: Cache node_modules -# id: cache-node-modules -# uses: actions/cache@v4 -# env: -# cache-name: cache-gazebo-node-modules -# with: -# path: | -# node_modules -# key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} -# restore-keys: | -# ${{ runner.os }}-${{ env.cache-name }}- - -# - name: Run tests -# run: | -# TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') -# yarn test:ci:new --minWorkers=1 --maxWorkers=2 $TESTS -# env: -# ENABLE_TEST_REPORTER: true -# TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} - -# - name: Upload test results to Codecov -# uses: codecov/test-results-action@v1 -# if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} -# with: -# token: ${{ secrets.CODECOV_ORG_TOKEN }} -# url: ${{ secrets.CODECOV_URL }} - -# - name: Upload test results to Codecov staging -# uses: codecov/test-results-action@v1 -# if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} -# with: -# token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} -# url: ${{ secrets.CODECOV_STAGING_URL }} - -# - name: Upload test results to Codecov QA -# uses: codecov/test-results-action@v1 -# if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} -# with: -# token: ${{ secrets.CODECOV_QA_TOKEN }} -# url: ${{ secrets.CODECOV_QA_URL }} - -# - name: Upload test results to Codecov public QA -# uses: codecov/test-results-action@v1 -# if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} -# with: -# token: ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} -# url: ${{ secrets.CODECOV_PUBLIC_QA_URL }} - -# - name: Install CLI -# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} -# run: | -# make test_env.install_cli - -# ## Don't upload on forks for now. -# - name: Upload coverage to Production -# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} -# run: | -# codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error --name "VITEST-${{ matrix.runner-index }}" - -# - name: Upload coverage to Staging -# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} -# run: | -# codecovcli -u ${{ secrets.CODECOV_STAGING_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} --fail-on-error - -# - name: Upload coverage to QA -# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} -# run: | -# codecovcli -u ${{ secrets.CODECOV_QA_URL }} do-upload -t ${{ secrets.CODECOV_QA_TOKEN }} --fail-on-error - -# - name: Upload coverage to Public QA -# if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} -# run: | -# codecovcli -u ${{ secrets.CODECOV_PUBLIC_QA_URL }} do-upload -t ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} --fail-on-error + test-vitest: + name: 'Test Runner #${{ matrix.runner-index }} - Vitest' + needs: [install, codecov-startup, runner-indexes-vitest] + runs-on: ubuntu-latest + strategy: + matrix: + runner-index: ${{ fromjson(needs.runner-indexes-vitest.outputs.json) }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + env: + cache-name: cache-gazebo-node-modules + with: + path: | + node_modules + key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-${{ env.cache-name }}- + + - name: Run tests + run: | + TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') + yarn test:ci:new --minWorkers=1 --maxWorkers=2 $TESTS + env: + ENABLE_TEST_REPORTER: true + TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} + + - name: Upload test results to Codecov + uses: codecov/test-results-action@v1 + if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} + with: + token: ${{ secrets.CODECOV_ORG_TOKEN }} + url: ${{ secrets.CODECOV_URL }} + + - name: Upload test results to Codecov staging + uses: codecov/test-results-action@v1 + if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} + with: + token: ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} + url: ${{ secrets.CODECOV_STAGING_URL }} + + - name: Upload test results to Codecov QA + uses: codecov/test-results-action@v1 + if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} + with: + token: ${{ secrets.CODECOV_QA_TOKEN }} + url: ${{ secrets.CODECOV_QA_URL }} + + - name: Upload test results to Codecov public QA + uses: codecov/test-results-action@v1 + if: ${{ !cancelled() && !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov'}} + with: + token: ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} + url: ${{ secrets.CODECOV_PUBLIC_QA_URL }} + + - name: Install CLI + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + make test_env.install_cli + + ## Don't upload on forks for now. + - name: Upload coverage to Production + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + codecovcli -u ${{ secrets.CODECOV_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN }} --fail-on-error --name "VITEST-${{ matrix.runner-index }}" + + - name: Upload coverage to Staging + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + codecovcli -u ${{ secrets.CODECOV_STAGING_URL }} do-upload -t ${{ secrets.CODECOV_ORG_TOKEN_STAGING }} --fail-on-error + + - name: Upload coverage to QA + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + codecovcli -u ${{ secrets.CODECOV_QA_URL }} do-upload -t ${{ secrets.CODECOV_QA_TOKEN }} --fail-on-error + + - name: Upload coverage to Public QA + if: ${{ !github.event.pull_request.head.repo.fork && github.repository_owner == 'codecov' }} + run: | + codecovcli -u ${{ secrets.CODECOV_PUBLIC_QA_URL }} do-upload -t ${{ secrets.CODECOV_PUBLIC_QA_TOKEN }} --fail-on-error upload-bundle-stats-to-prod: name: Upload Bundle Stats - Production diff --git a/codecov.yml b/codecov.yml index 6fcf0b03b1..161b5a5001 100644 --- a/codecov.yml +++ b/codecov.yml @@ -23,7 +23,7 @@ comment: require_changes: no require_base: no require_head: yes - after_n_builds: 9 # ceil(number of test files / 80). See ci.yml for more details. + after_n_builds: 10 # ceil(number of test files / 80). See ci.yml for more details. ignore: - ./src/**/*.stories.js From 84d12768a44e1dc446b84a59b00baa94d0cad2c6 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 08:25:20 -0300 Subject: [PATCH 22/43] remove generating icons for webpack --- package.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index b81be95556..abdfb7cb85 100644 --- a/package.json +++ b/package.json @@ -7,14 +7,14 @@ "start:vite": "yarn generate-icons:vite && vite", "build:vite": "yarn generate-icons:vite && tsc -b && vite build", "dev": "yarn start", - "start": "yarn generate-icons:webpack && craco start", - "build": "yarn generate-icons:webpack && craco build --config craco.config.cjs", - "build:stats": "yarn generate-icons:webpack && craco build --config craco.stats.config.cjs", - "test": "yarn generate-icons:webpack && craco test", - "test:ci": "yarn generate-icons:webpack && craco test --collectCoverage --reporters=default --reporters=jest-junit", - "test:new": "yarn generate-icons:vite && vitest run --changed --config ./vitest.config.mjs", - "test:watch:new": "yarn generate-icons:vite && vitest watch --changed --config ./vitest.config.mjs", - "test:ci:new": "yarn generate-icons:vite && vitest run --config ./vitest.config.mjs --coverage", + "start": "craco start", + "build": "craco build --config craco.config.cjs", + "build:stats": "craco build --config craco.stats.config.cjs", + "test": "craco test", + "test:ci": "craco test --collectCoverage --reporters=default --reporters=jest-junit", + "test:vite": "yarn generate-icons:vite && vitest run --changed --config ./vitest.config.mjs", + "test:watch:vite": "yarn generate-icons:vite && vitest watch --changed --config ./vitest.config.mjs", + "test:ci:vite": "yarn generate-icons:vite && vitest run --config ./vitest.config.mjs --coverage", "preview-coverage": "npx vite preview --open --outDir coverage", "test:mutation": "npx stryker run", "eject": "craco eject", From 3d6ef258485f626dda088bed98ed673da6de2466 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 08:25:32 -0300 Subject: [PATCH 23/43] update ci command --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0fd718dc30..540020e0c4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -318,7 +318,7 @@ jobs: - name: Run tests run: | TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') - yarn test:ci:new --minWorkers=1 --maxWorkers=2 $TESTS + yarn test:ci:vite --minWorkers=1 --maxWorkers=2 $TESTS env: ENABLE_TEST_REPORTER: true TEST_LIST: ${{ tojson(fromjson(needs.runner-indexes-vitest.outputs.test_list_array)[matrix.runner-index]) }} From 71f095570827bd9a6dfb5a304779d51ff9f3a203 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 08:29:21 -0300 Subject: [PATCH 24/43] rename to .jsx because it contains jsx --- src/pages/RepoPage/{repo-jest-setup.js => repo-jest-setup.jsx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/pages/RepoPage/{repo-jest-setup.js => repo-jest-setup.jsx} (100%) diff --git a/src/pages/RepoPage/repo-jest-setup.js b/src/pages/RepoPage/repo-jest-setup.jsx similarity index 100% rename from src/pages/RepoPage/repo-jest-setup.js rename to src/pages/RepoPage/repo-jest-setup.jsx From 53616b223a9969c7ba8cd748d57dfbb007967817 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 08:29:41 -0300 Subject: [PATCH 25/43] swap from v8 to istanbul for coverage reporting --- package.json | 1 + vitest.config.mjs | 49 +++++++++++++++++++++----------------- yarn.lock | 60 +++++++++++++++++++++++++++++++++++++---------- 3 files changed, 76 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index abdfb7cb85..e53799c084 100644 --- a/package.json +++ b/package.json @@ -149,6 +149,7 @@ "@types/react-router-dom": "^5.3.3", "@types/semver": "^7", "@vitejs/plugin-react": "^4.3.1", + "@vitest/coverage-istanbul": "^2.1.1", "@vitest/coverage-v8": "^2.1.1", "@vitest/ui": "^2.1.1", "autoprefixer": "^10.4.14", diff --git a/vitest.config.mjs b/vitest.config.mjs index f01ff5e4d7..0323a01157 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -2,6 +2,31 @@ import { defineConfig, mergeConfig } from 'vitest/config' import ViteConfig from './vite.config.mjs' +const EXCLUDE_FROM_TESTING = [ + // Default exclude patterns + '**/node_modules/**', + '**/dist/**', + '**/cypress/**', + '**/.{idea,git,cache,output,temp}/**', + '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', + // Custom exclude patterns + 'src/**/*.spec.*', +] + +const EXCLUDE_FROM_COVERAGE = [ + 'src/**/*.spec.*', + 'src/**/*.stories.*', + 'repo-jest-setup.jsx', + 'vitest.setup.ts', + 'custom-testing-library.js', + 'setupTestGlobal.js', + 'setupTests.js', + 'setupProxy.js', + 'ts-override.d.ts', + 'types.ts', + 'vite-env.d.ts', +] + const VitestConfig = defineConfig((config) => { const reporters = [] if (process.env.ENABLE_TEST_REPORTER) { @@ -12,17 +37,8 @@ const VitestConfig = defineConfig((config) => { test: { coverage: { include: ['src/**/*'], - exclude: [ - 'vitest.setup.ts', - 'custom-testing-library.js', - 'setupTestGlobal.js', - 'setupTests.js', - 'setupProxy.js', - 'ts-override.d.ts', - 'types.ts', - 'vite-env.d.ts', - ], - provider: 'v8', + exclude: EXCLUDE_FROM_COVERAGE, + provider: 'istanbul', reporters: [['text'], ['html', { outputFile: 'coverage/index.html' }]], reportOnFailure: true, }, @@ -31,16 +47,7 @@ const VitestConfig = defineConfig((config) => { setupFiles: './src/vitest.setup.ts', reporters: reporters, include: ['src/**/*.test.*'], - exclude: [ - // Default exclude patterns - '**/node_modules/**', - '**/dist/**', - '**/cypress/**', - '**/.{idea,git,cache,output,temp}/**', - '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', - // Custom exclude patterns - 'src/**/*.spec.*', - ], + exclude: EXCLUDE_FROM_TESTING, }, } }) diff --git a/yarn.lock b/yarn.lock index 652f2a4fca..273f5e6f54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -128,7 +128,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.21.3, @babel/core@npm:^7.24.5": +"@babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.5": version: 7.25.2 resolution: "@babel/core@npm:7.25.2" dependencies: @@ -567,6 +567,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.4": + version: 7.25.6 + resolution: "@babel/parser@npm:7.25.6" + dependencies: + "@babel/types": "npm:^7.25.6" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/f88a0e895dbb096fd37c4527ea97d12b5fc013720602580a941ac3a339698872f0c911e318c292b184c36b5fbe23b612f05aff9d24071bc847c7b1c21552c41d + languageName: node + linkType: hard + "@babel/parser@npm:^7.25.0": version: 7.25.0 resolution: "@babel/parser@npm:7.25.0" @@ -587,17 +598,6 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.25.4": - version: 7.25.6 - resolution: "@babel/parser@npm:7.25.6" - dependencies: - "@babel/types": "npm:^7.25.6" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/f88a0e895dbb096fd37c4527ea97d12b5fc013720602580a941ac3a339698872f0c911e318c292b184c36b5fbe23b612f05aff9d24071bc847c7b1c21552c41d - languageName: node - linkType: hard - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.7" @@ -2801,7 +2801,7 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2": +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a @@ -6658,6 +6658,26 @@ __metadata: languageName: node linkType: hard +"@vitest/coverage-istanbul@npm:^2.1.1": + version: 2.1.1 + resolution: "@vitest/coverage-istanbul@npm:2.1.1" + dependencies: + "@istanbuljs/schema": "npm:^0.1.3" + debug: "npm:^4.3.6" + istanbul-lib-coverage: "npm:^3.2.2" + istanbul-lib-instrument: "npm:^6.0.3" + istanbul-lib-report: "npm:^3.0.1" + istanbul-lib-source-maps: "npm:^5.0.6" + istanbul-reports: "npm:^3.1.7" + magicast: "npm:^0.3.4" + test-exclude: "npm:^7.0.1" + tinyrainbow: "npm:^1.2.0" + peerDependencies: + vitest: 2.1.1 + checksum: 10c0/4dd4109294c2cc51306cb1cbabf22e0815664b07f3d668df3ebb0968fbf564213e85eca2e369c8dca838baf3e5ed4fbb243e7a98f20899a8040779fa7e6ee381 + languageName: node + linkType: hard + "@vitest/coverage-v8@npm:^2.1.1": version: 2.1.1 resolution: "@vitest/coverage-v8@npm:2.1.1" @@ -11533,6 +11553,7 @@ __metadata: "@types/react-router-dom": "npm:^5.3.3" "@types/semver": "npm:^7" "@vitejs/plugin-react": "npm:^4.3.1" + "@vitest/coverage-istanbul": "npm:^2.1.1" "@vitest/coverage-v8": "npm:^2.1.1" "@vitest/ui": "npm:^2.1.1" autoprefixer: "npm:^10.4.14" @@ -13028,6 +13049,19 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.3": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": version: 3.0.1 resolution: "istanbul-lib-report@npm:3.0.1" From d188c3ef4ec4c3dd7c12bb42dae8ce00745cfedd Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 09:39:29 -0300 Subject: [PATCH 26/43] only generate icons for vite, and craco build --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e53799c084..284d856c40 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build:vite": "yarn generate-icons:vite && tsc -b && vite build", "dev": "yarn start", "start": "craco start", - "build": "craco build --config craco.config.cjs", + "build": "yarn generate-icons:webpack && craco build --config craco.config.cjs", "build:stats": "craco build --config craco.stats.config.cjs", "test": "craco test", "test:ci": "craco test --collectCoverage --reporters=default --reporters=jest-junit", From 2a1068db78c6e846377cebe117b62c44b5365dc2 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 09:39:45 -0300 Subject: [PATCH 27/43] small tweaks to the codecov yml config --- codecov.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/codecov.yml b/codecov.yml index 161b5a5001..7c24041679 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,5 +1,5 @@ codecov: - require_ci_to_pass: yes + require_ci_to_pass: true ai_pr_review: enabled: false @@ -11,8 +11,8 @@ coverage: status: project: yes - patch: yes - changes: no + patch: true + changes: false github_checks: annotations: false @@ -20,9 +20,9 @@ github_checks: comment: layout: 'reach, diff, flags, files, components, footer' behavior: default - require_changes: no - require_base: no - require_head: yes + require_changes: false + require_base: false + require_head: true after_n_builds: 10 # ceil(number of test files / 80). See ci.yml for more details. ignore: @@ -46,6 +46,9 @@ ignore: - ./src/pages/RepoPage/repo-jest-setup.js - ./src/ui/SunburstChart/*.jsx - ./src/ui/SunburstChart/*.js + - './src/**/*.svg' + - './src/**/*.png' + - './src/**/*.jpg' component_management: default_rules: From 976ade00b4a27589f3d73df35249cdee01db3ee1 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 09:40:01 -0300 Subject: [PATCH 28/43] generate webpack icons before running tests --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 540020e0c4..4fd4e2071f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -196,6 +196,7 @@ jobs: - name: Run tests run: | + yarn generate-icons:webpack TESTS=$(echo $TEST_LIST | jq -cr 'join(" ")') yarn test:ci --maxWorkers=2 $TESTS env: From 0a5ed3883eeba14527f759d4ae08c27ea214fcee Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 09:40:15 -0300 Subject: [PATCH 29/43] styling tweaks to vitest --- vitest.config.mjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vitest.config.mjs b/vitest.config.mjs index 0323a01157..2b49b2e9d4 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -39,7 +39,10 @@ const VitestConfig = defineConfig((config) => { include: ['src/**/*'], exclude: EXCLUDE_FROM_COVERAGE, provider: 'istanbul', - reporters: [['text'], ['html', { outputFile: 'coverage/index.html' }]], + reporters: [ + ['text'], + ['html', { outputFile: 'coverage/index.html' }], + ], reportOnFailure: true, }, globals: true, From e53de7e8bc224ca96c5ba092a4fd68143f6c6398 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 10:52:53 -0300 Subject: [PATCH 30/43] small tweaks to vitest config --- vitest.config.mjs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/vitest.config.mjs b/vitest.config.mjs index 2b49b2e9d4..ab219d35ff 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -34,19 +34,17 @@ const VitestConfig = defineConfig((config) => { } return { + test: { coverage: { include: ['src/**/*'], exclude: EXCLUDE_FROM_COVERAGE, provider: 'istanbul', - reporters: [ - ['text'], - ['html', { outputFile: 'coverage/index.html' }], - ], + reporters: [['text'], ['html', { outputFile: 'coverage/index.html' }]], reportOnFailure: true, }, globals: true, - environment: ['jsdom'], + environment: 'jsdom', setupFiles: './src/vitest.setup.ts', reporters: reporters, include: ['src/**/*.test.*'], From 19b463eb6290e96cd03cb24179593e0f04f57ec1 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 10:53:06 -0300 Subject: [PATCH 31/43] add in msw 2 --- package.json | 1 + yarn.lock | 271 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 268 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 284d856c40..9bb558bb5f 100644 --- a/package.json +++ b/package.json @@ -165,6 +165,7 @@ "jsdom": "^25.0.0", "lint-staged": "^15.2.8", "msw": "^1.2.1", + "msw2": "npm:msw@^2.4.8", "postcss": "^8.4.31", "prettier": "^3.3.3", "react-scripts": "^5.0.1", diff --git a/yarn.lock b/yarn.lock index 273f5e6f54..06aa13a2e3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2226,6 +2226,34 @@ __metadata: languageName: node linkType: hard +"@bundled-es-modules/cookie@npm:^2.0.0": + version: 2.0.0 + resolution: "@bundled-es-modules/cookie@npm:2.0.0" + dependencies: + cookie: "npm:^0.5.0" + checksum: 10c0/0655dd331b35d7b5b6dd2301c3bcfb7233018c0e3235a40ced1d53f00463ab92dc01f0091f153812867bc0ef0f8e0a157a30acb16e8d7ef149702bf8db9fe7a6 + languageName: node + linkType: hard + +"@bundled-es-modules/statuses@npm:^1.0.1": + version: 1.0.1 + resolution: "@bundled-es-modules/statuses@npm:1.0.1" + dependencies: + statuses: "npm:^2.0.1" + checksum: 10c0/c1a8ede3efa8da61ccda4b98e773582a9733edfbeeee569d4630785f8e018766202edb190a754a3ec7a7f6bd738e857829affc2fdb676b6dab4db1bb44e62785 + languageName: node + linkType: hard + +"@bundled-es-modules/tough-cookie@npm:^0.1.6": + version: 0.1.6 + resolution: "@bundled-es-modules/tough-cookie@npm:0.1.6" + dependencies: + "@types/tough-cookie": "npm:^4.0.5" + tough-cookie: "npm:^4.1.4" + checksum: 10c0/28bcac878bff6b34719ba3aa8341e9924772ee55de5487680ebe784981ec9fccb70ed5d46f563e2404855a04de606f9e56aa4202842d4f5835bc04a4fe820571 + languageName: node + linkType: hard + "@chromatic-com/storybook@npm:^1": version: 1.6.1 resolution: "@chromatic-com/storybook@npm:1.6.1" @@ -2774,6 +2802,61 @@ __metadata: languageName: node linkType: hard +"@inquirer/confirm@npm:^3.0.0": + version: 3.2.0 + resolution: "@inquirer/confirm@npm:3.2.0" + dependencies: + "@inquirer/core": "npm:^9.1.0" + "@inquirer/type": "npm:^1.5.3" + checksum: 10c0/a2cbfc8ae9c880bba4cce1993f5c399fb0d12741fdd574917c87fceb40ece62ffa60e35aaadf4e62d7c114f54008e45aee5d6d90497bb62d493996c02725d243 + languageName: node + linkType: hard + +"@inquirer/core@npm:^9.1.0": + version: 9.2.1 + resolution: "@inquirer/core@npm:9.2.1" + dependencies: + "@inquirer/figures": "npm:^1.0.6" + "@inquirer/type": "npm:^2.0.0" + "@types/mute-stream": "npm:^0.0.4" + "@types/node": "npm:^22.5.5" + "@types/wrap-ansi": "npm:^3.0.0" + ansi-escapes: "npm:^4.3.2" + cli-width: "npm:^4.1.0" + mute-stream: "npm:^1.0.0" + signal-exit: "npm:^4.1.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^6.2.0" + yoctocolors-cjs: "npm:^2.1.2" + checksum: 10c0/11c14be77a9fa85831de799a585721b0a49ab2f3b7d8fd1780c48ea2b29229c6bdc94e7892419086d0f7734136c2ba87b6a32e0782571eae5bbd655b1afad453 + languageName: node + linkType: hard + +"@inquirer/figures@npm:^1.0.6": + version: 1.0.6 + resolution: "@inquirer/figures@npm:1.0.6" + checksum: 10c0/2a00cf8db0b038dfb3b7ac9d09fe57ba12f0349e6258ad821bfa8e2e3cd9127f34b88ed7cae3e3441586f988db4df16ba91d6d701f88e529e87d2c2130a5c138 + languageName: node + linkType: hard + +"@inquirer/type@npm:^1.5.3": + version: 1.5.5 + resolution: "@inquirer/type@npm:1.5.5" + dependencies: + mute-stream: "npm:^1.0.0" + checksum: 10c0/4c41736c09ba9426b5a9e44993bdd54e8f532e791518802e33866f233a2a6126a25c1c82c19d1abbf1df627e57b1b957dd3f8318ea96073d8bfc32193943bcb3 + languageName: node + linkType: hard + +"@inquirer/type@npm:^2.0.0": + version: 2.0.0 + resolution: "@inquirer/type@npm:2.0.0" + dependencies: + mute-stream: "npm:^1.0.0" + checksum: 10c0/8c663d52beb2b89a896d3c3d5cc3d6d024fa149e565555bcb42fa640cbe23fba7ff2c51445342cef1fe6e46305e2d16c1590fa1d11ad0ddf93a67b655ef41f0a + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3197,6 +3280,20 @@ __metadata: languageName: node linkType: hard +"@mswjs/interceptors@npm:^0.35.6": + version: 0.35.6 + resolution: "@mswjs/interceptors@npm:0.35.6" + dependencies: + "@open-draft/deferred-promise": "npm:^2.2.0" + "@open-draft/logger": "npm:^0.3.0" + "@open-draft/until": "npm:^2.0.0" + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.3" + strict-event-emitter: "npm:^0.5.1" + checksum: 10c0/9472f640183675869368bf2ccf32354db0dfb320c754bcbfc683059f5380674598c59dde4fa58007f74817e31aa1dbd123787fcd0b1d37d53595aa718d06bfbe + languageName: node + linkType: hard + "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": version: 5.1.1-v1 resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" @@ -3375,6 +3472,23 @@ __metadata: languageName: node linkType: hard +"@open-draft/deferred-promise@npm:^2.2.0": + version: 2.2.0 + resolution: "@open-draft/deferred-promise@npm:2.2.0" + checksum: 10c0/eafc1b1d0fc8edb5e1c753c5e0f3293410b40dde2f92688211a54806d4136887051f39b98c1950370be258483deac9dfd17cf8b96557553765198ef2547e4549 + languageName: node + linkType: hard + +"@open-draft/logger@npm:^0.3.0": + version: 0.3.0 + resolution: "@open-draft/logger@npm:0.3.0" + dependencies: + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.0" + checksum: 10c0/90010647b22e9693c16258f4f9adb034824d1771d3baa313057b9a37797f571181005bc50415a934eaf7c891d90ff71dcd7a9d5048b0b6bb438f31bef2c7c5c1 + languageName: node + linkType: hard + "@open-draft/until@npm:^1.0.3": version: 1.0.3 resolution: "@open-draft/until@npm:1.0.3" @@ -3382,6 +3496,13 @@ __metadata: languageName: node linkType: hard +"@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": + version: 2.1.0 + resolution: "@open-draft/until@npm:2.1.0" + checksum: 10c0/61d3f99718dd86bb393fee2d7a785f961dcaf12f2055f0c693b27f4d0cd5f7a03d498a6d9289773b117590d794a43cd129366fd8e99222e4832f67b1653d54cf + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -5694,6 +5815,13 @@ __metadata: languageName: node linkType: hard +"@types/cookie@npm:^0.6.0": + version: 0.6.0 + resolution: "@types/cookie@npm:0.6.0" + checksum: 10c0/5b326bd0188120fb32c0be086b141b1481fec9941b76ad537f9110e10d61ee2636beac145463319c71e4be67a17e85b81ca9e13ceb6e3bb63b93d16824d6c149 + languageName: node + linkType: hard + "@types/cross-spawn@npm:^6.0.2": version: 6.0.6 resolution: "@types/cross-spawn@npm:6.0.6" @@ -6232,6 +6360,15 @@ __metadata: languageName: node linkType: hard +"@types/mute-stream@npm:^0.0.4": + version: 0.0.4 + resolution: "@types/mute-stream@npm:0.0.4" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/944730fd7b398c5078de3c3d4d0afeec8584283bc694da1803fdfca14149ea385e18b1b774326f1601baf53898ce6d121a952c51eb62d188ef6fcc41f725c0dc + languageName: node + linkType: hard + "@types/node-forge@npm:^1.3.0": version: 1.3.11 resolution: "@types/node-forge@npm:1.3.11" @@ -6259,6 +6396,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^22.5.5": + version: 22.5.5 + resolution: "@types/node@npm:22.5.5" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10c0/ead9495cfc6b1da5e7025856dcce2591e9bae635357410c0d2dd619fce797d2a1d402887580ca4b336cb78168b195224869967de370a23f61663cf1e4836121c + languageName: node + linkType: hard + "@types/parse-json@npm:^4.0.0": version: 4.0.2 resolution: "@types/parse-json@npm:4.0.2" @@ -6442,6 +6588,20 @@ __metadata: languageName: node linkType: hard +"@types/statuses@npm:^2.0.4": + version: 2.0.5 + resolution: "@types/statuses@npm:2.0.5" + checksum: 10c0/4dacec0b29483a44be902a022a11a22b339de7a6e7b2059daa4f7add10cb6dbcc28d02d2a416fe9687e48d335906bf983065391836d4e7c847e55ddef4de8fad + languageName: node + linkType: hard + +"@types/tough-cookie@npm:^4.0.5": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10c0/68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 + languageName: node + linkType: hard + "@types/trusted-types@npm:^2.0.2": version: 2.0.7 resolution: "@types/trusted-types@npm:2.0.7" @@ -6470,6 +6630,13 @@ __metadata: languageName: node linkType: hard +"@types/wrap-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "@types/wrap-ansi@npm:3.0.0" + checksum: 10c0/8d8f53363f360f38135301a06b596c295433ad01debd082078c33c6ed98b05a5c8fe8853a88265432126096084f4a135ec1564e3daad631b83296905509f90b3 + languageName: node + linkType: hard + "@types/ws@npm:^8.5.5": version: 8.5.11 resolution: "@types/ws@npm:8.5.11" @@ -8362,6 +8529,13 @@ __metadata: languageName: node linkType: hard +"cli-width@npm:^4.1.0": + version: 4.1.0 + resolution: "cli-width@npm:4.1.0" + checksum: 10c0/1fbd56413578f6117abcaf858903ba1f4ad78370a4032f916745fa2c7e390183a9d9029cf837df320b0fdce8137668e522f60a30a5f3d6529ff3872d265a955f + languageName: node + linkType: hard + "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -8676,6 +8850,13 @@ __metadata: languageName: node linkType: hard +"cookie@npm:^0.5.0": + version: 0.5.0 + resolution: "cookie@npm:0.5.0" + checksum: 10c0/c01ca3ef8d7b8187bae434434582288681273b5a9ed27521d4d7f9f7928fe0c920df0decd9f9d3bbd2d14ac432b8c8cf42b98b3bdd5bfe0e6edddeebebe8b61d + languageName: node + linkType: hard + "copy-anything@npm:^3.0.2": version: 3.0.5 resolution: "copy-anything@npm:3.0.5" @@ -11587,6 +11768,7 @@ __metadata: lint-staged: "npm:^15.2.8" lodash: "npm:^4.17.21" msw: "npm:^1.2.1" + msw2: "npm:msw@^2.4.8" pluralize: "npm:^8.0.0" postcss: "npm:^8.4.31" prettier: "npm:^3.3.3" @@ -12056,6 +12238,13 @@ __metadata: languageName: node linkType: hard +"headers-polyfill@npm:^4.0.2": + version: 4.0.3 + resolution: "headers-polyfill@npm:4.0.3" + checksum: 10c0/53e85b2c6385f8d411945fb890c5369f1469ce8aa32a6e8d28196df38568148de640c81cf88cbc7c67767103dd9acba48f4f891982da63178fc6e34560022afe + languageName: node + linkType: hard + "history@npm:^4.9.0": version: 4.10.1 resolution: "history@npm:4.10.1" @@ -15462,6 +15651,38 @@ __metadata: languageName: node linkType: hard +"msw2@npm:msw@^2.4.8": + version: 2.4.8 + resolution: "msw@npm:2.4.8" + dependencies: + "@bundled-es-modules/cookie": "npm:^2.0.0" + "@bundled-es-modules/statuses": "npm:^1.0.1" + "@bundled-es-modules/tough-cookie": "npm:^0.1.6" + "@inquirer/confirm": "npm:^3.0.0" + "@mswjs/interceptors": "npm:^0.35.6" + "@open-draft/until": "npm:^2.1.0" + "@types/cookie": "npm:^0.6.0" + "@types/statuses": "npm:^2.0.4" + chalk: "npm:^4.1.2" + graphql: "npm:^16.8.1" + headers-polyfill: "npm:^4.0.2" + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.2" + path-to-regexp: "npm:^6.3.0" + strict-event-emitter: "npm:^0.5.1" + type-fest: "npm:^4.9.0" + yargs: "npm:^17.7.2" + peerDependencies: + typescript: ">= 4.8.x" + peerDependenciesMeta: + typescript: + optional: true + bin: + msw: cli/index.js + checksum: 10c0/33a8c5697f7cb003a2af33ff6b259eaf7babf180fadf0697d107d0856ab0d2ff1a80d319e788d9127f289ff091334bee589f348180a1fdd0914bf8c4725830dc + languageName: node + linkType: hard + "msw@npm:^1.2.1": version: 1.3.3 resolution: "msw@npm:1.3.3" @@ -15515,6 +15736,13 @@ __metadata: languageName: node linkType: hard +"mute-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "mute-stream@npm:1.0.0" + checksum: 10c0/dce2a9ccda171ec979a3b4f869a102b1343dee35e920146776780de182f16eae459644d187e38d59a3d37adf85685e1c17c38cf7bfda7e39a9880f7a1d10a74c + languageName: node + linkType: hard + "mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -16017,7 +16245,7 @@ __metadata: languageName: node linkType: hard -"outvariant@npm:^1.2.1, outvariant@npm:^1.4.0": +"outvariant@npm:^1.2.1, outvariant@npm:^1.4.0, outvariant@npm:^1.4.2, outvariant@npm:^1.4.3": version: 1.4.3 resolution: "outvariant@npm:1.4.3" checksum: 10c0/5976ca7740349cb8c71bd3382e2a762b1aeca6f33dc984d9d896acdf3c61f78c3afcf1bfe9cc633a7b3c4b295ec94d292048f83ea2b2594fae4496656eba992c @@ -16248,6 +16476,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^6.3.0": + version: 6.3.0 + resolution: "path-to-regexp@npm:6.3.0" + checksum: 10c0/73b67f4638b41cde56254e6354e46ae3a2ebc08279583f6af3d96fe4664fc75788f74ed0d18ca44fa4a98491b69434f9eee73b97bb5314bd1b5adb700f5c18d6 + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -19439,7 +19674,7 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": +"statuses@npm:2.0.1, statuses@npm:^2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 @@ -19525,6 +19760,13 @@ __metadata: languageName: node linkType: hard +"strict-event-emitter@npm:^0.5.1": + version: 0.5.1 + resolution: "strict-event-emitter@npm:0.5.1" + checksum: 10c0/f5228a6e6b6393c57f52f62e673cfe3be3294b35d6f7842fc24b172ae0a6e6c209fa83241d0e433fc267c503bc2f4ffdbe41a9990ff8ffd5ac425ec0489417f7 + languageName: node + linkType: hard + "string-argv@npm:~0.3.2": version: 0.3.2 resolution: "string-argv@npm:0.3.2" @@ -20558,6 +20800,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^4.9.0": + version: 4.26.1 + resolution: "type-fest@npm:4.26.1" + checksum: 10c0/d2719ff8d380befe8a3c61068f37f28d6fa2849fd140c5d2f0f143099e371da6856aad7c97e56b83329d45bfe504afe9fd936a7cff600cc0d46aa9ffb008d6c6 + languageName: node + linkType: hard + "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -20682,6 +20931,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 + languageName: node + linkType: hard + "undici@npm:^5.25.4": version: 5.28.4 resolution: "undici@npm:5.28.4" @@ -22525,7 +22781,7 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^6.0.1": +"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" dependencies: @@ -22721,7 +22977,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1": +"yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -22750,6 +23006,13 @@ __metadata: languageName: node linkType: hard +"yoctocolors-cjs@npm:^2.1.2": + version: 2.1.2 + resolution: "yoctocolors-cjs@npm:2.1.2" + checksum: 10c0/a0e36eb88fea2c7981eab22d1ba45e15d8d268626e6c4143305e2c1628fa17ebfaa40cd306161a8ce04c0a60ee0262058eab12567493d5eb1409780853454c6f + languageName: node + linkType: hard + "zod@npm:^3.21.4, zod@npm:^3.22.4": version: 3.23.8 resolution: "zod@npm:3.23.8" From 634a18b730bf2e9df5f62c1b2749f1f970d3cd62 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 10:53:34 -0300 Subject: [PATCH 32/43] add in examples so our test split function doesn't complain --- src/{App.spec.tsx => App.test.tsx} | 120 +++++++++++--------- src/App.tsx | 2 + src/{config.spec.js => config.test.js} | 0 src/shared/utils/{cn.spec.ts => cn.test.ts} | 0 4 files changed, 69 insertions(+), 53 deletions(-) rename src/{App.spec.tsx => App.test.tsx} (80%) rename src/{config.spec.js => config.test.js} (100%) rename src/shared/utils/{cn.spec.ts => cn.test.ts} (100%) diff --git a/src/App.spec.tsx b/src/App.test.tsx similarity index 80% rename from src/App.spec.tsx rename to src/App.test.tsx index 26708fdae4..091597addd 100644 --- a/src/App.spec.tsx +++ b/src/App.test.tsx @@ -1,9 +1,10 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { render, screen, waitFor } from '@testing-library/react' -import { graphql, rest } from 'msw' -import { setupServer } from 'msw/node' +import { graphql, http, HttpResponse } from 'msw2' +import { setupServer } from 'msw2/node' import React, { Suspense } from 'react' import { MemoryRouter, Route, useLocation } from 'react-router-dom' +import { type Mock, vi } from 'vitest' import config from 'config' @@ -11,26 +12,36 @@ import { useLocationParams } from 'services/navigation' import App from './App' -jest.mock('./pages/AccountSettings', () => () => 'AccountSettings') -jest.mock('./pages/AdminSettings', () => () => 'AdminSettingsPage') -jest.mock('./pages/AnalyticsPage', () => () => 'AnalyticsPage') -jest.mock('./pages/CommitDetailPage', () => () => 'CommitDetailPage') -jest.mock('./pages/LoginPage', () => () => 'LoginPage') -jest.mock('./pages/OwnerPage', () => () => 'OwnerPage') -jest.mock('./pages/MembersPage', () => () => 'MembersPage') -jest.mock('./pages/PlanPage', () => () => 'PlanPage') -jest.mock('./pages/PullRequestPage', () => () => 'PullRequestPage') -jest.mock('./pages/RepoPage', () => () => 'RepoPage') -jest.mock('./pages/TermsOfService', () => () => 'TermsOfService') -jest.mock('./pages/EnterpriseLandingPage', () => () => 'EnterpriseLandingPage') -jest.mock('./pages/SyncProviderPage', () => () => 'SyncProviderPage') - -jest.mock('services/navigation', () => ({ - ...jest.requireActual('services/navigation'), - useLocationParams: jest.fn(), +vi.mock('./pages/AccountSettings', () => ({ default: () => 'AccountSettings' })) +vi.mock('./pages/AdminSettings', () => ({ default: () => 'AdminSettingsPage' })) +vi.mock('./pages/AnalyticsPage', () => ({ default: () => 'AnalyticsPage' })) +vi.mock('./pages/CommitDetailPage', () => ({ + default: () => 'CommitDetailPage', })) +vi.mock('./pages/LoginPage', () => ({ default: () => 'LoginPage' })) +vi.mock('./pages/OwnerPage', () => ({ default: () => 'OwnerPage' })) +vi.mock('./pages/MembersPage', () => ({ default: () => 'MembersPage' })) +vi.mock('./pages/PlanPage', () => ({ default: () => 'PlanPage' })) +vi.mock('./pages/PullRequestPage', () => ({ default: () => 'PullRequestPage' })) +vi.mock('./pages/RepoPage', () => ({ default: () => 'RepoPage' })) +vi.mock('./pages/TermsOfService', () => ({ default: () => 'TermsOfService' })) +vi.mock('./pages/EnterpriseLandingPage', () => ({ + default: () => 'EnterpriseLandingPage', +})) +vi.mock('./pages/SyncProviderPage', () => ({ + default: () => 'SyncProviderPage', +})) + +vi.mock('services/navigation', async () => { + const servicesNavigation = await vi.importActual('services/navigation') + + return { + ...servicesNavigation, + useLocationParams: vi.fn(), + } +}) -const mockedUseLocationParams = useLocationParams as jest.Mock +const mockedUseLocationParams = useLocationParams as Mock const internalUser = { email: 'internal@user.com', @@ -117,7 +128,6 @@ const queryClient = new QueryClient({ }, }) -const server = setupServer() let testLocation: ReturnType const wrapper = (initialEntries = ['']): React.FC => @@ -138,6 +148,8 @@ const wrapper = ) +const server = setupServer() + beforeAll(() => { server.listen({ onUnhandledRequest: 'warn' }) console.error = () => {} @@ -163,57 +175,57 @@ describe('App', () => { hasSession?: boolean }) { server.use( - rest.get('/internal/user', (_, res, ctx) => { + http.get('/internal/user', (info) => { if (hasSession) { - return res(ctx.status(200), ctx.json(internalUser)) + return HttpResponse.json(internalUser, { status: 200 }) } else { - return res(ctx.status(200), ctx.json({})) + return HttpResponse.json({}, { status: 200 }) } }), - rest.get('/internal/users/current', (req, res, ctx) => { - return res(ctx.status(200), ctx.json({})) + http.get('/internal/users/current', (info) => { + return HttpResponse.json({}, { status: 200 }) }), - graphql.query('DetailOwner', (_, res, ctx) => - res(ctx.status(200), ctx.data({ owner: 'codecov' })) + graphql.query('DetailOwner', (info) => + HttpResponse.json({ data: { owner: 'codecov' } }, { status: 200 }) ), - graphql.query('CurrentUser', (req, res, ctx) => { + graphql.query('CurrentUser', (info) => { if (hasLoggedInUser) { - return res(ctx.status(200), ctx.data(user)) + return HttpResponse.json({ data: user }, { status: 200 }) } - return res(ctx.status(200), ctx.data({})) + HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.query('GetPlanData', (req, res, ctx) => { - return res(ctx.status(200), ctx.data({})) + graphql.query('GetPlanData', (info) => { + return HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.query('OwnerTier', (req, res, ctx) => { - return res(ctx.status(200), ctx.data({})) + graphql.query('OwnerTier', (info) => { + return HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.query('Seats', (req, res, ctx) => { - return res(ctx.status(200), ctx.data({})) + graphql.query('Seats', (info) => { + return HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.query('HasAdmins', (req, res, ctx) => { - return res(ctx.status(200), ctx.data({})) + graphql.query('HasAdmins', (info) => { + return HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.query('owner', (req, res, ctx) => { - return res( - ctx.status(200), - ctx.data({ me: { owner: { isAdmin: true } } }) + graphql.query('owner', (info) => { + return HttpResponse.json( + { data: { owner: { isAdmin: true } } }, + { status: 200 } ) }), - graphql.query('MyContexts', (req, res, ctx) => { - return res(ctx.status(200), ctx.data({})) + graphql.query('MyContexts', (info) => { + return HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.query('GetOktaConfig', (req, res, ctx) => { - return res(ctx.status(200), ctx.data({})) + graphql.query('GetOktaConfig', (info) => { + return HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.query('OwnerPageData', (req, res, ctx) => { - return res(ctx.status(200), ctx.data({})) + graphql.query('OwnerPageData', (info) => { + return HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.mutation('updateDefaultOrganization', (req, res, ctx) => { - return res(ctx.status(200), ctx.data({})) + graphql.mutation('updateDefaultOrganization', (info) => { + return HttpResponse.json({ data: {} }, { status: 200 }) }), - graphql.query('GetRepoOverview', (req, res, ctx) => { - return res(ctx.status(200), ctx.data(mockRepoOverview)) + graphql.query('GetRepoOverview', (info) => { + return HttpResponse.json({ data: mockRepoOverview }, { status: 200 }) }) ) } @@ -605,6 +617,7 @@ describe('App', () => { expect(page).toBeInTheDocument() }) }) + describe('user has session, not logged in', () => { it('redirects to session default', async () => { setup({ hasLoggedInUser: false, hasSession: true }) @@ -622,6 +635,7 @@ describe('App', () => { setup({ hasLoggedInUser: false, hasSession: true }) render(, { wrapper: wrapper(['/blah']) }) + await waitFor(() => expect(testLocation.pathname).toBe('/plan/cool-service/cool-guy') ) diff --git a/src/App.tsx b/src/App.tsx index b6dfa02933..8f2be069bb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -45,6 +45,8 @@ const HomePageRedirect = () => { let redirectURL = '/login' + console.log('ahh', internalUser) + if (internalUser && internalUser.owners) { redirectURL = `/${internalUser.owners[0]?.service}/${internalUser.owners[0]?.username}` if (to === 'plan') { diff --git a/src/config.spec.js b/src/config.test.js similarity index 100% rename from src/config.spec.js rename to src/config.test.js diff --git a/src/shared/utils/cn.spec.ts b/src/shared/utils/cn.test.ts similarity index 100% rename from src/shared/utils/cn.spec.ts rename to src/shared/utils/cn.test.ts From 6e656c57c2370e4b0dd255eace4ca7454ab23a41 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 10:53:50 -0300 Subject: [PATCH 33/43] add in all test file extensions --- .github/workflows/ci.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4fd4e2071f..424e47b52c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -271,13 +271,9 @@ jobs: uses: actions/checkout@v4 - name: Generate test index list id: generate-index-list - # We currently don't have all of these yet, so we'll need to add them in as we go along - # src/**/*.test.js - # src/**/*.test.ts - # src/**/*.test.tsx run: | shopt -s globstar - TEST_LIST=$(ls src/**/*.test.jsx | jq -R -s -c 'split("\n")[:-1]') + TEST_LIST=$(ls src/**/*.test.js src/**/*.test.jsx src/**/*.test.ts src/**/*.test.tsx | jq -R -s -c 'split("\n")[:-1]') TEST_LENGTH=$(echo $TEST_LIST | jq length) MAX_INDEX=$((($TEST_LENGTH/${{ env.TEST_SPLIT_NUMBER }}))) MAX_INDEX=$(($MAX_INDEX < 0 ? 0 : $TEST_LENGTH % ${{ env.TEST_SPLIT_NUMBER }} == 0 ? $MAX_INDEX - 1 : $MAX_INDEX)) From 52fd40cbed7e9083f4277ba4f699d6327749aa50 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 11:36:39 -0300 Subject: [PATCH 34/43] remove left over log --- src/App.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 8f2be069bb..b6dfa02933 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -45,8 +45,6 @@ const HomePageRedirect = () => { let redirectURL = '/login' - console.log('ahh', internalUser) - if (internalUser && internalUser.owners) { redirectURL = `/${internalUser.owners[0]?.service}/${internalUser.owners[0]?.username}` if (to === 'plan') { From 31b13355eda30e92c43612ed4538dd454879436e Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Wed, 18 Sep 2024 11:37:28 -0300 Subject: [PATCH 35/43] tweak excludes --- vitest.config.mjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vitest.config.mjs b/vitest.config.mjs index ab219d35ff..e557deb3f0 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -2,6 +2,7 @@ import { defineConfig, mergeConfig } from 'vitest/config' import ViteConfig from './vite.config.mjs' +// See for more details: https://vitest.dev/config/#coverage-exclude const EXCLUDE_FROM_TESTING = [ // Default exclude patterns '**/node_modules/**', @@ -11,11 +12,11 @@ const EXCLUDE_FROM_TESTING = [ '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', // Custom exclude patterns 'src/**/*.spec.*', + 'src/**/*.stories.*', ] const EXCLUDE_FROM_COVERAGE = [ - 'src/**/*.spec.*', - 'src/**/*.stories.*', + ...EXCLUDE_FROM_TESTING, 'repo-jest-setup.jsx', 'vitest.setup.ts', 'custom-testing-library.js', @@ -34,7 +35,6 @@ const VitestConfig = defineConfig((config) => { } return { - test: { coverage: { include: ['src/**/*'], From 850a7a8939d4f951b746a611349913b9d8647969 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Thu, 19 Sep 2024 07:40:53 -0300 Subject: [PATCH 36/43] disable this eslint rule as it seems we need to do the manual cleanup --- .eslintrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index fb907be20c..5875299217 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -25,7 +25,7 @@ "testing-library/prefer-find-by": "warn", "testing-library/await-fire-event": "warn", "testing-library/no-global-regexp-flag-in-query": "warn", - "testing-library/no-manual-cleanup": "warn", + "testing-library/no-manual-cleanup": "off", "testing-library/prefer-user-event": "warn", "testing-library/prefer-wait-for": "warn", "testing-library/prefer-explicit-assert": "warn", From d8c6af2042d3bfb93003f34a8b8050dd86e6102d Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Thu, 19 Sep 2024 07:41:10 -0300 Subject: [PATCH 37/43] make sure TS knows about the vi types globally --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index bde7adccd7..fbe07f6f23 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,6 +18,7 @@ "noImplicitAny": true, "jsx": "react-jsx", "baseUrl": ".", + "types": ["vitest/globals"], "paths": { "layouts/*": ["./src/layouts/*"], "ui/*": ["./src/ui/*"], From 79f70a04c3a38d6aa99f153a28ebf7bfd5ead406 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Thu, 19 Sep 2024 07:42:03 -0300 Subject: [PATCH 38/43] sort out vitest with setup stuff as well as loading correct envs --- src/vitest.setup.ts | 27 ++++++++++++++++++++++----- vitest.config.mjs | 4 ++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/vitest.setup.ts b/src/vitest.setup.ts index fd63776896..04b5458531 100644 --- a/src/vitest.setup.ts +++ b/src/vitest.setup.ts @@ -1,15 +1,12 @@ import * as matchers from '@testing-library/jest-dom/matchers' import { cleanup } from '@testing-library/react' -import { afterEach, expect } from 'vitest' +import { vi } from 'vitest' +import '@testing-library/jest-dom/vitest' // not sure why this lint is being fired here so I'm disabling it // eslint-disable-next-line testing-library/await-fire-event expect.extend(matchers) -afterEach(() => { - cleanup() -}) - // Prevent timezone differences between local and CI/CD const setupTestGlobal = async () => { process.env.TZ = 'UTC' @@ -18,3 +15,23 @@ const setupTestGlobal = async () => { export default setupTestGlobal process.env.REACT_APP_ZOD_IGNORE_TESTS = 'true' + +vi.mock('@sentry/react', async () => { + const originalModule = await vi.importActual('@sentry/react') + + return { + ...originalModule, + setUser: vi.fn(), + metrics: { + ...originalModule.metrics!, + distribution: vi.fn(), + gauge: vi.fn(), + increment: vi.fn(), + set: vi.fn(), + }, + } +}) + +afterEach(() => { + cleanup() +}) diff --git a/vitest.config.mjs b/vitest.config.mjs index e557deb3f0..a84a5dae97 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -1,3 +1,4 @@ +import { loadEnv } from 'vite' import { defineConfig, mergeConfig } from 'vitest/config' import ViteConfig from './vite.config.mjs' @@ -34,8 +35,11 @@ const VitestConfig = defineConfig((config) => { reporters.push(['junit', { outputFile: 'reports/junit/junit.xml' }]) } + const env = loadEnv(config.mode, process.cwd(), 'REACT_APP') + return { test: { + env: env, coverage: { include: ['src/**/*'], exclude: EXCLUDE_FROM_COVERAGE, From 9f73de4ed573f1fbe565e063c1c98f217b6a0178 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Thu, 19 Sep 2024 09:20:09 -0300 Subject: [PATCH 39/43] resolve issue with vitest types interferring with craco stuff --- src/vite-env.d.ts | 1 + tsconfig.json | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index b1f45c7866..a9936e5d2b 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -1,2 +1,3 @@ /// /// +/// diff --git a/tsconfig.json b/tsconfig.json index fbe07f6f23..bde7adccd7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,7 +18,6 @@ "noImplicitAny": true, "jsx": "react-jsx", "baseUrl": ".", - "types": ["vitest/globals"], "paths": { "layouts/*": ["./src/layouts/*"], "ui/*": ["./src/ui/*"], From 1c2aebca489f8a50e57a1c40ec57ec322de3397a Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Thu, 19 Sep 2024 09:48:43 -0300 Subject: [PATCH 40/43] tweak reporters --- vitest.config.mjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/vitest.config.mjs b/vitest.config.mjs index a84a5dae97..2c9cfdaceb 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -30,11 +30,15 @@ const EXCLUDE_FROM_COVERAGE = [ ] const VitestConfig = defineConfig((config) => { - const reporters = [] + const reporters = ['basic'] if (process.env.ENABLE_TEST_REPORTER) { reporters.push(['junit', { outputFile: 'reports/junit/junit.xml' }]) } + if (process.env.GITHUB_ACTIONS) { + reporters.push('github-actions') + } + const env = loadEnv(config.mode, process.cwd(), 'REACT_APP') return { From 5d6b24ebf35479d1722db577bb754cfb8ad25bf9 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Thu, 19 Sep 2024 10:05:31 -0300 Subject: [PATCH 41/43] remove test files from coverage reporting --- vitest.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/vitest.config.mjs b/vitest.config.mjs index 2c9cfdaceb..35e591886f 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -18,6 +18,7 @@ const EXCLUDE_FROM_TESTING = [ const EXCLUDE_FROM_COVERAGE = [ ...EXCLUDE_FROM_TESTING, + 'src/**/*.test.*', 'repo-jest-setup.jsx', 'vitest.setup.ts', 'custom-testing-library.js', From ac157baac4f5e1ebc376bd3dceeae61ee985db86 Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Thu, 19 Sep 2024 09:22:03 -0300 Subject: [PATCH 42/43] update Header --- .../Header/{Header.spec.tsx => Header.test.tsx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/layouts/EnterpriseLoginLayout/Header/{Header.spec.tsx => Header.test.tsx} (100%) diff --git a/src/layouts/EnterpriseLoginLayout/Header/Header.spec.tsx b/src/layouts/EnterpriseLoginLayout/Header/Header.test.tsx similarity index 100% rename from src/layouts/EnterpriseLoginLayout/Header/Header.spec.tsx rename to src/layouts/EnterpriseLoginLayout/Header/Header.test.tsx From e4839c058a7b9b96bd3964b0d775d6249ec87c3b Mon Sep 17 00:00:00 2001 From: nicholas-codecov Date: Thu, 19 Sep 2024 09:22:17 -0300 Subject: [PATCH 43/43] update EnterpriseLoginLayout --- ...pec.tsx => EnterpriseLoginLayout.test.tsx} | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) rename src/layouts/EnterpriseLoginLayout/{EnterpriseLoginLayout.spec.tsx => EnterpriseLoginLayout.test.tsx} (81%) diff --git a/src/layouts/EnterpriseLoginLayout/EnterpriseLoginLayout.spec.tsx b/src/layouts/EnterpriseLoginLayout/EnterpriseLoginLayout.test.tsx similarity index 81% rename from src/layouts/EnterpriseLoginLayout/EnterpriseLoginLayout.spec.tsx rename to src/layouts/EnterpriseLoginLayout/EnterpriseLoginLayout.test.tsx index 0494c42cb8..2ce1270805 100644 --- a/src/layouts/EnterpriseLoginLayout/EnterpriseLoginLayout.spec.tsx +++ b/src/layouts/EnterpriseLoginLayout/EnterpriseLoginLayout.test.tsx @@ -1,20 +1,29 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { render, screen } from '@testing-library/react' import { MemoryRouter, Route, useLocation } from 'react-router-dom' +import { type Mock } from 'vitest' import EnterpriseLoginLayout from './EnterpriseLoginLayout' -jest.mock('layouts/Header/components/GuestHeader', () => () => 'GuestHeader') -jest.mock('layouts/Footer', () => () => 'Footer') -jest.mock('shared/GlobalBanners', () => () => 'GlobalBanners') -jest.mock('layouts/ToastNotifications', () => () => 'ToastNotifications') - -jest.mock('react-router-dom', () => ({ - ...jest.requireActual('react-router-dom'), - useLocation: jest.fn(), +vi.mock('layouts/Header/components/GuestHeader', () => ({ + default: () => 'GuestHeader', +})) +vi.mock('layouts/Footer', () => ({ default: () => 'Footer' })) +vi.mock('shared/GlobalBanners', () => ({ default: () => 'GlobalBanners' })) +vi.mock('layouts/ToastNotifications', () => ({ + default: () => 'ToastNotifications', })) -const mockedUseLocation = useLocation as jest.Mock +vi.mock('react-router-dom', async () => { + const reactRouterDom = await vi.importActual('react-router-dom') + + return { + ...reactRouterDom, + useLocation: vi.fn(), + } +}) + +const mockedUseLocation = useLocation as Mock const queryClient = new QueryClient({ defaultOptions: { @@ -43,7 +52,7 @@ describe('EnterpriseLoginLayout', () => { }) afterAll(() => { - jest.restoreAllMocks() + vi.restoreAllMocks() }) it('renders children', () => {