From 72015349d8b4108e7533732ba90f2dcf037ae709 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Wed, 15 Jan 2025 17:26:37 +0100 Subject: [PATCH] feat: Use SWC for Jest unit tests --- .gitignore | 3 ++ jest.config.js | 28 ++++++++++++- package.json | 3 ++ yarn.lock | 107 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 140 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 100ad5a3b5..c8a5e656da 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,6 @@ desktop.ini # cozy-jobs-cli .token.json konnector-dev-config.json + +# SWC +.swc diff --git a/jest.config.js b/jest.config.js index f9ba85535d..865398d8b6 100644 --- a/jest.config.js +++ b/jest.config.js @@ -31,7 +31,33 @@ module.exports = { }, clearMocks: true, transform: { - '\\.[jt]sx?$': 'babel-jest', + '\\.(js|jsx|mjs)$': [ + '@swc/jest', + { + jsc: { + experimental: { + plugins: [['swc_mut_cjs_exports', {}]], + }, + parser: { + jsx: true, + }, + }, + }, + ], + '\\.(ts|tsx)$': [ + '@swc/jest', + { + jsc: { + experimental: { + plugins: [['swc_mut_cjs_exports', {}]], + }, + parser: { + syntax: 'typescript', + tsx: true, + }, + }, + }, + ], '^.+\\.webapp$': '/test/jestLib/json-transformer.js' }, transformIgnorePatterns: [ diff --git a/package.json b/package.json index 8933cc7487..64c0f3a185 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,8 @@ "devDependencies": { "@babel/eslint-parser": "7.23.3", "@rsbuild/core": "^1.1.6", + "@swc/core": "^1.10.7", + "@swc/jest": "^0.2.37", "@testing-library/jest-dom": "5.17.0", "@testing-library/react": "11.2.7", "@testing-library/react-hooks": "8.0.1", @@ -74,6 +76,7 @@ "replace": "1.2.1", "rsbuild-config-cozy-app": "^0.2.0", "stylint": "1.5.9", + "swc_mut_cjs_exports": "^8.0.1", "typescript": "4.9.5", "worker-loader": "2.0.0" }, diff --git a/yarn.lock b/yarn.lock index b87f0b68ed..8486d591fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1885,6 +1885,13 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/create-cache-key-function@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + "@jest/environment@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" @@ -2842,6 +2849,80 @@ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== +"@swc/core-darwin-arm64@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.7.tgz#ff727de61faabfbdfe062747e47305ee3472298e" + integrity sha512-SI0OFg987P6hcyT0Dbng3YRISPS9uhLX1dzW4qRrfqQdb0i75lPJ2YWe9CN47HBazrIA5COuTzrD2Dc0TcVsSQ== + +"@swc/core-darwin-x64@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.10.7.tgz#a276d5ee56e7c9fb03201c92c620143f8df6b52e" + integrity sha512-RFIAmWVicD/l3RzxgHW0R/G1ya/6nyMspE2cAeDcTbjHi0I5qgdhBWd6ieXOaqwEwiCd0Mot1g2VZrLGoBLsjQ== + +"@swc/core-linux-arm-gnueabihf@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.7.tgz#8f2041b818691e7535bc275d32659e77b5f2fecc" + integrity sha512-QP8vz7yELWfop5mM5foN6KkLylVO7ZUgWSF2cA0owwIaziactB2hCPZY5QU690coJouk9KmdFsPWDnaCFUP8tg== + +"@swc/core-linux-arm64-gnu@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.7.tgz#c185499f7db12ee95fdceb4c00fb503ed398cf1d" + integrity sha512-NgUDBGQcOeLNR+EOpmUvSDIP/F7i/OVOKxst4wOvT5FTxhnkWrW+StJGKj+DcUVSK5eWOYboSXr1y+Hlywwokw== + +"@swc/core-linux-arm64-musl@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.7.tgz#20732c402ba44fbd708e9871aaa10df5597a3d01" + integrity sha512-gp5Un3EbeSThBIh6oac5ZArV/CsSmTKj5jNuuUAuEsML3VF9vqPO+25VuxCvsRf/z3py+xOWRaN2HY/rjMeZog== + +"@swc/core-linux-x64-gnu@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.7.tgz#d6310152dd154c0796d1c0d99eb89fc26957c8f6" + integrity sha512-k/OxLLMl/edYqbZyUNg6/bqEHTXJT15l9WGqsl/2QaIGwWGvles8YjruQYQ9d4h/thSXLT9gd8bExU2D0N+bUA== + +"@swc/core-linux-x64-musl@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.7.tgz#e03d4ec66f4234323887774151d1034339d0d7af" + integrity sha512-XeDoURdWt/ybYmXLCEE8aSiTOzEn0o3Dx5l9hgt0IZEmTts7HgHHVeRgzGXbR4yDo0MfRuX5nE1dYpTmCz0uyA== + +"@swc/core-win32-arm64-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.7.tgz#f1a8c3149e2671d477af4ca39c761d6ade342d4c" + integrity sha512-nYAbi/uLS+CU0wFtBx8TquJw2uIMKBnl04LBmiVoFrsIhqSl+0MklaA9FVMGA35NcxSJfcm92Prl2W2LfSnTqQ== + +"@swc/core-win32-ia32-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.7.tgz#133f3168fee9910566a874eb1d422dc79eb17d54" + integrity sha512-+aGAbsDsIxeLxw0IzyQLtvtAcI1ctlXVvVcXZMNXIXtTURM876yNrufRo4ngoXB3jnb1MLjIIjgXfFs/eZTUSw== + +"@swc/core-win32-x64-msvc@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.7.tgz#84d6ed82b2f19bc00b868c9747f03ea6661d8023" + integrity sha512-TBf4clpDBjF/UUnkKrT0/th76/zwvudk5wwobiTFqDywMApHip5O0VpBgZ+4raY2TM8k5+ujoy7bfHb22zu17Q== + +"@swc/core@^1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.10.7.tgz#736a5bbf0db7628cb2de3eac871e331f9a27e60b" + integrity sha512-py91kjI1jV5D5W/Q+PurBdGsdU5TFbrzamP7zSCqLdMcHkKi3rQEM5jkQcZr0MXXSJTaayLxS3MWYTBIkzPDrg== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.17" + optionalDependencies: + "@swc/core-darwin-arm64" "1.10.7" + "@swc/core-darwin-x64" "1.10.7" + "@swc/core-linux-arm-gnueabihf" "1.10.7" + "@swc/core-linux-arm64-gnu" "1.10.7" + "@swc/core-linux-arm64-musl" "1.10.7" + "@swc/core-linux-x64-gnu" "1.10.7" + "@swc/core-linux-x64-musl" "1.10.7" + "@swc/core-win32-arm64-msvc" "1.10.7" + "@swc/core-win32-ia32-msvc" "1.10.7" + "@swc/core-win32-x64-msvc" "1.10.7" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + "@swc/helpers@^0.5.15": version "0.5.15" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" @@ -2849,6 +2930,22 @@ dependencies: tslib "^2.8.0" +"@swc/jest@^0.2.37": + version "0.2.37" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.37.tgz#9c2aaf22c87682aa968016e3e4843d1a25cae6bd" + integrity sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ== + dependencies: + "@jest/create-cache-key-function" "^29.7.0" + "@swc/counter" "^0.1.3" + jsonc-parser "^3.2.0" + +"@swc/types@^0.1.17": + version "0.1.17" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.17.tgz#bd1d94e73497f27341bf141abdf4c85230d41e7c" + integrity sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ== + dependencies: + "@swc/counter" "^0.1.3" + "@testing-library/dom@^7.28.1": version "7.31.2" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" @@ -9330,6 +9427,11 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonc-parser@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" + integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -13390,6 +13492,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +swc_mut_cjs_exports@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/swc_mut_cjs_exports/-/swc_mut_cjs_exports-8.0.1.tgz#2cfbcb676fe202fe8f3c1dcf240c392bddab7037" + integrity sha512-Ki9JxC1JTL8us4/LzgiFGnBnz+7a/UCyIiIEz3HdFu6a4OF7yXkhlR5pOCfgFvIfqS6Xgwrb+BP76raR2pmw9w== + sweetalert@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79"