From fa74f2b3b8101a5e6aec155a9818c4b7fc520013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Dan?= Date: Tue, 28 Nov 2023 18:30:58 +0100 Subject: [PATCH] test: add coverage (#37) --- .github/workflows/test:coverage.yml | 39 +++++++++++++ .gitignore | 1 + README.md | 10 +++- package-lock.json | 90 ++++++++++++++++++++++++++--- package.json | 1 + packages/frontend/package.json | 5 +- 6 files changed, 133 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/test:coverage.yml diff --git a/.github/workflows/test:coverage.yml b/.github/workflows/test:coverage.yml new file mode 100644 index 0000000..e9bb772 --- /dev/null +++ b/.github/workflows/test:coverage.yml @@ -0,0 +1,39 @@ +name: Run test coverage + +on: + pull_request: + branches: + - main + +jobs: + coverage: + name: Test/Coverage + runs-on: ubuntu-latest-16-core + environment: devnet-1 + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up NodeJS + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: 'npm' + + - name: Install npm packages + run: npm ci + + - name: Run Frontend test coverage + run: npm run frontend:test:coverage + env: + VITE_ERC20_MESSAGING_CONTRACT_ADDRESS: ${{ vars.ERC20_MESSAGING_CONTRACT_ADDRESS }} + VITE_SUBNET_REGISTRATOR_CONTRACT_ADDRESS: ${{ vars.SUBNET_REGISTRATOR_CONTRACT_ADDRESS }} + VITE_TOPOS_CORE_PROXY_CONTRACT_ADDRESS: ${{ vars.TOPOS_CORE_PROXY_CONTRACT_ADDRESS }} + + - name: Run Backend test coverage + run: npm run backend:test:coverage + + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.gitignore b/.gitignore index e4b3c0e..8eef5ea 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ **/dist **/cypress/screenshots **/cypress/videos +**/coverage diff --git a/README.md b/README.md index e217839..c7f43e1 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,16 @@ dApp Frontend ERC20 Messaging is the web app to transfer ERC20 tokens across any -[![codecov](https://codecov.io/gh/topos-protocol/dapp-frontend-erc20-messaging/branch/main/graph/badge.svg?token=FOH2B2GRL9&style=flat)](https://codecov.io/gh/topos-protocol/dapp-frontend-erc20-messaging) -![example workflow](https://github.com/topos-protocol/dapp-frontend-erc20-messaging/actions/workflows/test:e2e.yml/badge.svg) +
+ +![docker-build](https://github.com/topos-protocol/dapp-frontend-erc20-messaging/actions/workflows/docker_build_push.yml/badge.svg) +![test](https://github.com/topos-protocol/dapp-frontend-erc20-messaging/actions/workflows/test.yml/badge.svg) +![release](https://img.shields.io/github/v/release/topos-protocol/dapp-frontend-erc20-messaging) +[![codecov](https://codecov.io/gh/topos-protocol/dapp-frontend-erc20-messaging/graph/badge.svg?token=gP7Zvl56fx)](https://codecov.io/gh/topos-protocol/dapp-frontend-erc20-messaging) [![](https://dcbadge.vercel.app/api/server/7HZ8F8ykBT?style=flat)](https://discord.gg/7HZ8F8ykBT) +
+ ## Getting Started Install NodeJS by following the guidelines from the [official NodeJS website](https://nodejs.dev/en/). diff --git a/package-lock.json b/package-lock.json index 9fa9e01..7390f73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14347,17 +14347,32 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/istanbul-lib-source-maps": { @@ -21677,6 +21692,7 @@ "@typescript-eslint/parser": "^5.57.1", "@vitejs/plugin-react-swc": "^3.0.0", "@vitest/coverage-c8": "~0.25.8", + "@vitest/coverage-v8": "^0.34.6", "@vitest/ui": "^0.25.8", "cypress": "^12.13.0", "env-cmd": "^10.1.0", @@ -21691,6 +21707,31 @@ "vitest": "^0.33.0" } }, + "packages/frontend/node_modules/@vitest/coverage-v8": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz", + "integrity": "sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.5", + "magic-string": "^0.30.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": ">=0.32.0 <1" + } + }, "packages/frontend/node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -31102,6 +31143,7 @@ "@typescript-eslint/parser": "^5.57.1", "@vitejs/plugin-react-swc": "^3.0.0", "@vitest/coverage-c8": "~0.25.8", + "@vitest/coverage-v8": "^0.34.6", "@vitest/ui": "^0.25.8", "antd": "^5.4.0", "axios": "^1.0.0", @@ -31130,6 +31172,25 @@ "web-vitals": "^3.3.1" }, "dependencies": { + "@vitest/coverage-v8": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz", + "integrity": "sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.5", + "magic-string": "^0.30.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.1.0" + } + }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -32550,14 +32611,25 @@ } }, "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + } } }, "istanbul-lib-source-maps": { diff --git a/package.json b/package.json index 7411755..e3f8129 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "backend:start": "npm run start --workspace=backend", "backend:start:prod": "npm run start:prod --workspace=backend", "backend:test": "npm run test --workspace=backend", + "backend:test:coverage": "npm run test:cov --workspace=backend", "backend:test:watch": "npm run test:watch --workspace=backend", "frontend:build": "npm run build --workspace=frontend", "frontend:start": "npm run start --workspace=frontend", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index f06d36a..1cf195d 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -8,9 +8,9 @@ "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "start": "tsc && vite build --mode development --watch --sourcemap true", - "test:e2e": "env-cmd --silent cypress run --browser chrome --headed", "test": "vitest", - "coverage": "vitest run --coverage" + "test:coverage": "vitest run --coverage", + "test:e2e": "env-cmd --silent cypress run --browser chrome --headed" }, "dependencies": { "@ant-design/icons": "^5.0.1", @@ -56,6 +56,7 @@ "@typescript-eslint/parser": "^5.57.1", "@vitejs/plugin-react-swc": "^3.0.0", "@vitest/coverage-c8": "~0.25.8", + "@vitest/coverage-v8": "^0.34.6", "@vitest/ui": "^0.25.8", "cypress": "^12.13.0", "env-cmd": "^10.1.0",