From 1374b9e978cf890a0512a0ce4a1d98a93622ee72 Mon Sep 17 00:00:00 2001 From: Jordy Cabannes Date: Mon, 8 Jan 2024 14:15:03 +0100 Subject: [PATCH 1/2] feat: set the complete ci workflow --- .github/workflows/github-ci.yml | 102 ++++++++++++++++++++++++++ .github/workflows/node.js.yml | 30 -------- .gitignore | 5 +- {documentation => docs}/swagger.cjs | 0 package-lock.json | 108 ++++++++++++++-------------- package.json | 2 +- 6 files changed, 160 insertions(+), 87 deletions(-) create mode 100644 .github/workflows/github-ci.yml delete mode 100644 .github/workflows/node.js.yml rename {documentation => docs}/swagger.cjs (100%) diff --git a/.github/workflows/github-ci.yml b/.github/workflows/github-ci.yml new file mode 100644 index 000000000..611bde4a8 --- /dev/null +++ b/.github/workflows/github-ci.yml @@ -0,0 +1,102 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs + +name: Node.js CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Node LTS + uses: actions/setup-node@v3 + with: + node-version: lts/* + - name: Install dependencies + run: npm ci + - name: Build packages + run: npm run build + + test: + runs-on: ubuntu-latest + needs: build + steps: + - name: Add hosts for integration tests + run: sudo echo "127.0.0.1 localhost auth.example.com matrix.example.com matrix1.example.com matrix2.example.com matrix3.example.com federation.example.com" | sudo tee -a /etc/hosts + - uses: actions/checkout@v3 + - name: Set up Node LTS + uses: actions/setup-node@v3 + with: + node-version: lts/* + - name: Install dependencies + run: npm ci + - name: Install playwright test browsers + run: npx playwright install + - name: Run all tests + run: npm test + + publish-docker: + runs-on: ubuntu-latest + needs: test + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} + steps: + - uses: actions/checkout@v3 + - name: Get all src files that have changed + id: changed-files + uses: tj-actions/changed-files@v41 + with: + files: ${{ github.workspace }}/packages/matrix-invite/**/* + - name: Build and publish matrix-invite docker image + if: steps.changed-files.outputs.test_any_changed == 'true' + uses: philips-software/docker-ci-scripts@v5.1.0 + with: + base-dir: "${{ github.workspace }}/packages/matrix-invite/" + dockerfile: "${{ github.workspace }}/packages/matrix-invite/Dockerfile" + image-name: "twake-matrix-invite" + tags: "latest" + env: + REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USER }} + REGISTRY_TOKEN: "${{ secrets.DOCKERHUB_PASSWORD }}" + DOCKER_ORGANIZATION: twaketech + + update-doc: + runs-on: ubuntu-latest + needs: test + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} + steps: + - uses: actions/checkout@v3 + - name: Set up Node LTS + uses: actions/setup-node@v3 + with: + node-version: lts/* + - name: Install dependencies + run: npm ci + - name: Generate Swagger documentation + run: npm run doc + - name: Check if documentation files has changed + id: changed-files + uses: tj-actions/changed-files@v41 + with: + files: ${{ github.workspace }}/docs/openapi.json + - name: Update documentation files + if: steps.changed-files.outputs.test_any_changed == 'true' + env: + SPEC_TO_DISPLAY: "openapi.json" + DISABLE_TRY_IT_OUT_JS_METHOD: "const DisableTryItOutPlugin = function() {return {statePlugins:{spec:{wrapSelectors:{allowTryItOutFor:() => () => false}}}}}" + DISABLE_TRY_IT_OUT_PLUGIN: ", DisableTryItOutPlugin" + run: | + cp -rp node_modules/swagger-ui-dist/* ${{ github.workspace }}/docs + sed -i "/window\.onload\s=\sfunction()\s{/a $DISABLE_TRY_IT_OUT_JS_METHOD" ${{ github.workspace }}/docs/swagger-initializer.js + sed -i "s#https://petstore\.swagger\.io/v2/swagger\.json#$SPEC_TO_DISPLAY#g" ${{ github.workspace }}/docs/swagger-initializer.js + sed -i "/SwaggerUIBundle\.plugins\.DownloadUrl/a $DISABLE_TRY_IT_OUT_PLUGIN" ${{ github.workspace }}/docs/swagger-initializer.js + - name: Commit updated documentation files + uses: EndBug/add-and-commit@v9 + with: + add: ${{ github.workspace }}/docs + message: 'chore: update documentation' \ No newline at end of file diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml deleted file mode 100644 index ba0cc8742..000000000 --- a/.github/workflows/node.js.yml +++ /dev/null @@ -1,30 +0,0 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs - -name: Node.js CI - -on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - -jobs: - build: - - runs-on: ubuntu-latest - timeout-minutes: 60 - - steps: - - name: Set up hosts - run: sudo echo "127.0.0.1 localhost auth.example.com matrix.example.com matrix1.example.com matrix2.example.com matrix3.example.com federation.example.com" | sudo tee -a /etc/hosts - - uses: actions/checkout@v3 - - name: Use Node.js LTS - uses: actions/setup-node@v3 - with: - node-version: lts/* - cache: 'npm' - - run: npm ci - - run: npx playwright install - - run: npm run build --if-present - - run: npm test diff --git a/.gitignore b/.gitignore index b88b5784e..94e5dc2a5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ coverage/ dist/ -documentation/ -!documentation/swagger.cjs +docs/* +!docs/swagger.cjs node_modules/ packages/*/example/*.js* *.map +.nx/ diff --git a/documentation/swagger.cjs b/docs/swagger.cjs similarity index 100% rename from documentation/swagger.cjs rename to docs/swagger.cjs diff --git a/package-lock.json b/package-lock.json index b6c7a4295..3775cd4ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5973,9 +5973,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", - "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", + "version": "20.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.7.tgz", + "integrity": "sha512-fRbIKb8C/Y2lXxB5eVMj4IU7xpdox0Lh8bUPEdtLysaylsml1hOOx1+STloRs/B9nf7C6kPRmmg/V7aQW7usNg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -6038,9 +6038,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.46", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.46.tgz", - "integrity": "sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==", + "version": "18.2.47", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz", + "integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -6139,9 +6139,9 @@ } }, "node_modules/@types/ssh2/node_modules/@types/node": { - "version": "18.19.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.4.tgz", - "integrity": "sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==", + "version": "18.19.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.5.tgz", + "integrity": "sha512-22MG6T02Hos2JWfa1o5jsIByn+bc5iOt1IS4xyg6OG68Bu+wMonVZzdrgCw693++rpLE9RUT/Bx15BeDzO0j+g==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -7174,9 +7174,9 @@ } }, "node_modules/axios": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", - "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", "dev": true, "dependencies": { "follow-redirects": "^1.15.4", @@ -7938,9 +7938,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001574", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz", - "integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==", + "version": "1.0.30001576", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", + "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", "dev": true, "funding": [ { @@ -7958,9 +7958,9 @@ ] }, "node_modules/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.0.tgz", + "integrity": "sha512-x9cHNq1uvkCdU+5xTkNh5WtgD4e4yDFCsp9jVc7N7qVeKeftv3gO/ZrviX5d+3ZfxdYnZXZYujjRInu1RogU6A==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", @@ -9468,9 +9468,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.622", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.622.tgz", - "integrity": "sha512-GZ47DEy0Gm2Z8RVG092CkFvX7SdotG57c4YZOe8W8qD4rOmk3plgeNmiLVRHP/Liqj1wRiY3uUUod9vb9hnxZA==", + "version": "1.4.623", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.623.tgz", + "integrity": "sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==", "dev": true }, "node_modules/emittery": { @@ -17276,9 +17276,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", - "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "dev": true, "bin": { "node-gyp-build": "bin.js", @@ -23476,9 +23476,9 @@ "dev": true }, "node_modules/tailwindcss": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz", - "integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -30862,9 +30862,9 @@ "dev": true }, "@types/node": { - "version": "20.10.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", - "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", + "version": "20.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.7.tgz", + "integrity": "sha512-fRbIKb8C/Y2lXxB5eVMj4IU7xpdox0Lh8bUPEdtLysaylsml1hOOx1+STloRs/B9nf7C6kPRmmg/V7aQW7usNg==", "dev": true, "requires": { "undici-types": "~5.26.4" @@ -30927,9 +30927,9 @@ "dev": true }, "@types/react": { - "version": "18.2.46", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.46.tgz", - "integrity": "sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==", + "version": "18.2.47", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz", + "integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==", "dev": true, "requires": { "@types/prop-types": "*", @@ -31019,9 +31019,9 @@ }, "dependencies": { "@types/node": { - "version": "18.19.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.4.tgz", - "integrity": "sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==", + "version": "18.19.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.5.tgz", + "integrity": "sha512-22MG6T02Hos2JWfa1o5jsIByn+bc5iOt1IS4xyg6OG68Bu+wMonVZzdrgCw693++rpLE9RUT/Bx15BeDzO0j+g==", "dev": true, "requires": { "undici-types": "~5.26.4" @@ -31812,9 +31812,9 @@ "dev": true }, "axios": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", - "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", "dev": true, "requires": { "follow-redirects": "^1.15.4", @@ -32389,15 +32389,15 @@ } }, "caniuse-lite": { - "version": "1.0.30001574", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz", - "integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==", + "version": "1.0.30001576", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", + "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", "dev": true }, "chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.0.tgz", + "integrity": "sha512-x9cHNq1uvkCdU+5xTkNh5WtgD4e4yDFCsp9jVc7N7qVeKeftv3gO/ZrviX5d+3ZfxdYnZXZYujjRInu1RogU6A==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -33521,9 +33521,9 @@ } }, "electron-to-chromium": { - "version": "1.4.622", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.622.tgz", - "integrity": "sha512-GZ47DEy0Gm2Z8RVG092CkFvX7SdotG57c4YZOe8W8qD4rOmk3plgeNmiLVRHP/Liqj1wRiY3uUUod9vb9hnxZA==", + "version": "1.4.623", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.623.tgz", + "integrity": "sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==", "dev": true }, "emittery": { @@ -39378,9 +39378,9 @@ } }, "node-gyp-build": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", - "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "dev": true }, "node-int64": { @@ -43985,9 +43985,9 @@ "dev": true }, "tailwindcss": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz", - "integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", "dev": true, "requires": { "@alloc/quick-lru": "^5.2.0", diff --git a/package.json b/package.json index 899ff1db0..3e5500ac1 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "scripts": { "build": "npm run softClean && lerna run build", "clean": "rimraf packages/*/dist packages/*/coverage ./node_modules/.cache/nx packages/*/example/*.js*", - "doc": "node documentation/swagger.cjs", + "doc": "node docs/swagger.cjs", "format:check": "prettier --check .", "format:check-diff": "prettier --check $(git diff $(git rev-parse --abbrev-ref --symbolic-full-name @{u}) --name-status|grep -E '^M|A'|cut -f2)", "format:fix": "prettier --write .", From 63cfc302fa078b82f29d1bff02de8edb3bdf8336 Mon Sep 17 00:00:00 2001 From: Jordy Cabannes Date: Tue, 9 Jan 2024 13:59:13 +0100 Subject: [PATCH 2/2] fix: run tests without build packages --- jest.config.js => jest-base.config.js | 12 +++++++++-- packages/config-parser/jest.config.js | 6 +++++- packages/crypto/jest.config.js | 16 +++----------- packages/federation-server/jest.config.js | 18 ++++------------ packages/logger/jest.config.js | 19 +++-------------- .../matrix-application-server/jest.config.js | 19 +++-------------- .../matrix-identity-server/jest.config.js | 21 ++++--------------- packages/matrix-resolve/jest.config.js | 19 ++++------------- packages/retry-promise/jest.config.js | 16 +++----------- packages/tom-server/jest.config.js | 18 ++++------------ tsconfig-test.json | 10 ++++++++- 11 files changed, 52 insertions(+), 122 deletions(-) rename jest.config.js => jest-base.config.js (64%) mode change 120000 => 100644 packages/config-parser/jest.config.js diff --git a/jest.config.js b/jest-base.config.js similarity index 64% rename from jest.config.js rename to jest-base.config.js index b68888715..adac176a4 100644 --- a/jest.config.js +++ b/jest-base.config.js @@ -1,7 +1,6 @@ export default { testTimeout: 10000, testEnvironment: 'node', - preset: 'ts-jest', collectCoverage: true, collectCoverageFrom: ['./src/**/{!(pg|redis),}.ts'], coverageThreshold: { @@ -12,7 +11,16 @@ export default { statements: 90 } }, + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + tsconfig: '/../../tsconfig-test.json' + }, + ] + }, moduleNameMapper: { "@twake/(.*)$": "/../$1/src", - }, + 'matrix-resolve': '/../matrix-resolve/src' + } } diff --git a/packages/config-parser/jest.config.js b/packages/config-parser/jest.config.js deleted file mode 120000 index 48439c69a..000000000 --- a/packages/config-parser/jest.config.js +++ /dev/null @@ -1 +0,0 @@ -../../jest.config.js \ No newline at end of file diff --git a/packages/config-parser/jest.config.js b/packages/config-parser/jest.config.js new file mode 100644 index 000000000..3a08bd1e9 --- /dev/null +++ b/packages/config-parser/jest.config.js @@ -0,0 +1,5 @@ +import jestConfigBase from '../../jest-base.config.js' + +export default { + ...jestConfigBase +} \ No newline at end of file diff --git a/packages/crypto/jest.config.js b/packages/crypto/jest.config.js index a763e2176..e9476ecf9 100644 --- a/packages/crypto/jest.config.js +++ b/packages/crypto/jest.config.js @@ -1,15 +1,5 @@ +import jestConfigBase from '../../jest-base.config.js' + export default { - testTimeout: 10000, - testEnvironment: 'node', - preset: 'ts-jest', - collectCoverage: true, - collectCoverageFrom: ['./src/**/*.ts'], - coverageThreshold: { - global: { - branches: 80, - functions: 50, - lines: 90, - statements: 90 - } - } + ...jestConfigBase } diff --git a/packages/federation-server/jest.config.js b/packages/federation-server/jest.config.js index 1a83fc158..38b0c3041 100644 --- a/packages/federation-server/jest.config.js +++ b/packages/federation-server/jest.config.js @@ -1,21 +1,11 @@ +import jestConfigBase from '../../jest-base.config.js' + export default { + ...jestConfigBase, testTimeout: 360000, - testEnvironment: 'node', - preset: 'ts-jest', - collectCoverage: true, - collectCoverageFrom: ['./src/**/{!(pg),}.ts'], - coverageThreshold: { - global: { - branches: 80, - functions: 50, - lines: 90, - statements: 90 - } - }, moduleNameMapper: { - "@twake/(.*)$": "/../$1/src", + ...jestConfigBase.moduleNameMapper, "node-fetch": "/../../node_modules/node-fetch-jest", - 'matrix-resolve': '/../matrix-resolve/src' }, clearMocks: true } diff --git a/packages/logger/jest.config.js b/packages/logger/jest.config.js index b68888715..e9476ecf9 100644 --- a/packages/logger/jest.config.js +++ b/packages/logger/jest.config.js @@ -1,18 +1,5 @@ +import jestConfigBase from '../../jest-base.config.js' + export default { - testTimeout: 10000, - testEnvironment: 'node', - preset: 'ts-jest', - collectCoverage: true, - collectCoverageFrom: ['./src/**/{!(pg|redis),}.ts'], - coverageThreshold: { - global: { - branches: 80, - functions: 50, - lines: 90, - statements: 90 - } - }, - moduleNameMapper: { - "@twake/(.*)$": "/../$1/src", - }, + ...jestConfigBase } diff --git a/packages/matrix-application-server/jest.config.js b/packages/matrix-application-server/jest.config.js index 8ff1dddcb..bd2a15d71 100644 --- a/packages/matrix-application-server/jest.config.js +++ b/packages/matrix-application-server/jest.config.js @@ -1,20 +1,7 @@ +import jestConfigBase from '../../jest-base.config.js' + export default { - testTimeout: 10000, - testEnvironment: 'node', - preset: 'ts-jest', - collectCoverage: true, - collectCoverageFrom: ['./src/**/*.ts'], - coverageThreshold: { - global: { - branches: 80, - functions: 50, - lines: 90, - statements: 90 - } - }, - moduleNameMapper: { - "@twake/(.*)$": "/../$1/src", - }, + ...jestConfigBase, clearMocks: true, restoreMocks: true } diff --git a/packages/matrix-identity-server/jest.config.js b/packages/matrix-identity-server/jest.config.js index 6bdd3e175..0d6e4c0ab 100644 --- a/packages/matrix-identity-server/jest.config.js +++ b/packages/matrix-identity-server/jest.config.js @@ -1,19 +1,6 @@ +import jestConfigBase from '../../jest-base.config.js' + export default { - testTimeout: 30000, - testEnvironment: 'node', - preset: 'ts-jest', - collectCoverage: true, - collectCoverageFrom: ['./src/**/{!(pg|redis),}.ts'], - coverageThreshold: { - global: { - branches: 80, - functions: 50, - lines: 90, - statements: 90 - } - }, - moduleNameMapper: { - '@twake/(.*)$': '/../$1/src', - 'matrix-resolve': '/../matrix-resolve/src', - } + ...jestConfigBase, + testTimeout: 30000 } diff --git a/packages/matrix-resolve/jest.config.js b/packages/matrix-resolve/jest.config.js index b11c99bcf..0f9ab89d7 100644 --- a/packages/matrix-resolve/jest.config.js +++ b/packages/matrix-resolve/jest.config.js @@ -1,19 +1,8 @@ +import jestConfigBase from '../../jest-base.config.js' + export default { - testTimeout: 120000, - testEnvironment: 'node', - preset: 'ts-jest', - collectCoverage: true, - collectCoverageFrom: ['./src/**/*.ts'], - coverageThreshold: { - global: { - branches: 80, - functions: 50, - lines: 90, - statements: 90 - } - }, + ...jestConfigBase, moduleNameMapper: { "node-fetch": "/../../node_modules/node-fetch-jest" - }, - clearMocks: true + } } diff --git a/packages/retry-promise/jest.config.js b/packages/retry-promise/jest.config.js index c89627109..e9476ecf9 100644 --- a/packages/retry-promise/jest.config.js +++ b/packages/retry-promise/jest.config.js @@ -1,15 +1,5 @@ +import jestConfigBase from '../../jest-base.config.js' + export default { - testTimeout: 10000, - testEnvironment: 'node', - preset: 'ts-jest', - collectCoverage: true, - collectCoverageFrom: ['./src/**/*.ts'], - coverageThreshold: { - global: { - branches: 80, - functions: 50, - lines: 90, - statements: 90 - } - }, + ...jestConfigBase } diff --git a/packages/tom-server/jest.config.js b/packages/tom-server/jest.config.js index 618040935..693422294 100644 --- a/packages/tom-server/jest.config.js +++ b/packages/tom-server/jest.config.js @@ -1,22 +1,12 @@ +import jestConfigBase from '../../jest-base.config.js' + export default { + ...jestConfigBase, testTimeout: 120000, - testEnvironment: 'node', - preset: 'ts-jest', - collectCoverage: true, - collectCoverageFrom: ['./src/**/{!(pg),}.ts'], - coverageThreshold: { - global: { - branches: 80, - functions: 50, - lines: 90, - statements: 90 - } - }, setupFilesAfterEnv: ['/jest.setup.ts'], moduleNameMapper: { - "@twake/(.*)$": "/../$1/src", + ...jestConfigBase.moduleNameMapper, "node-fetch": "/../../node_modules/node-fetch-jest", - 'matrix-resolve': '/../matrix-resolve/src' }, clearMocks: true } diff --git a/tsconfig-test.json b/tsconfig-test.json index 360cc97a9..ba89be650 100644 --- a/tsconfig-test.json +++ b/tsconfig-test.json @@ -9,6 +9,14 @@ "sourceMap": true, "noEmitOnError": true, "resolveJsonModule":true, - "declaration": true + "declaration": true, + "paths": { + "@twake/config-parser": ["./packages/config-parser/src"], + "@twake/crypto": ["./packages/crypto/src"], + "@twake/logger": ["./packages/logger/src"], + "@twake/matrix-application-server": ["./packages/matrix-application-server/src"], + "@twake/matrix-identity-server": ["./packages/matrix-identity-server/src"], + "matrix-resolve": ["./packages/matrix-resolve/src"] + } } }