diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d7de3fd..46f0d91 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,6 +14,11 @@ jobs: cache: "npm" - name: Install dependencies run: npm install + - name: Build app + run: npm run build + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - name: Run tests with coverage run: npm run coverage - name: Upload coverage to Codecov diff --git a/codecov.yml b/codecov.yml index bfc8941..1b6cce4 100644 --- a/codecov.yml +++ b/codecov.yml @@ -2,9 +2,11 @@ comment: layout: "diff, flags, files" behavior: default require_changes: false + require_bundle_changes: false require_base: false require_head: true hide_project_coverage: false + ignore: - "app" - "di" diff --git a/next.config.mjs b/next.config.mjs index a86a7d6..026abd1 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,5 @@ import { withSentryConfig } from "@sentry/nextjs"; +import { codecovWebpackPlugin } from "@codecov/webpack-plugin"; import webpack from "webpack"; /** @type {import('next').NextConfig} */ @@ -16,6 +17,13 @@ const nextConfig = { }), ); } + config.plugins.push( + codecovWebpackPlugin({ + enableBundleAnalysis: process.env.CODECOV_TOKEN !== undefined, + bundleName: "nextjs-clean-architecture", + uploadToken: process.env.CODECOV_TOKEN, + }), + ); return config; }, }; diff --git a/package-lock.json b/package-lock.json index c21f56c..fdecf8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,6 +37,7 @@ "zod": "^3.23.8" }, "devDependencies": { + "@codecov/webpack-plugin": "^0.0.1-beta.10", "@types/better-sqlite3": "^7.6.11", "@types/node": "^20", "@types/react": "^18", @@ -407,6 +408,79 @@ "node": ">=6.9.0" } }, + "node_modules/@codecov/bundler-plugin-core": { + "version": "0.0.1-beta.10", + "resolved": "https://registry.npmjs.org/@codecov/bundler-plugin-core/-/bundler-plugin-core-0.0.1-beta.10.tgz", + "integrity": "sha512-fOgy02gc0Z0ipKVe8QqN7mcmzQYjHb2UzT6RtHR+tqyYwpe1r1Kg5E/pbIOXKLaJGXK+AaOX23qtgp6kvUn+iA==", + "dev": true, + "dependencies": { + "chalk": "4.1.2", + "semver": "^7.5.4", + "unplugin": "^1.10.1", + "zod": "^3.22.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@codecov/bundler-plugin-core/node_modules/unplugin": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.12.1.tgz", + "integrity": "sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==", + "dev": true, + "dependencies": { + "acorn": "^8.12.1", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@codecov/bundler-plugin-core/node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true + }, + "node_modules/@codecov/webpack-plugin": { + "version": "0.0.1-beta.10", + "resolved": "https://registry.npmjs.org/@codecov/webpack-plugin/-/webpack-plugin-0.0.1-beta.10.tgz", + "integrity": "sha512-wGh4YEy05HdNa64zRbqv20t7gq24mqTf0T3YUr6XzEd7DLHvm3QcTtUOz8Q8eekMKtvS0CiH3UHmBIAQyPSTZw==", + "dev": true, + "dependencies": { + "@codecov/bundler-plugin-core": "^0.0.1-beta.10", + "unplugin": "^1.10.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "webpack": "5.x" + } + }, + "node_modules/@codecov/webpack-plugin/node_modules/unplugin": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.12.1.tgz", + "integrity": "sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==", + "dev": true, + "dependencies": { + "acorn": "^8.12.1", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@codecov/webpack-plugin/node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true + }, "node_modules/@drizzle-team/brocli": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.8.2.tgz", diff --git a/package.json b/package.json index aef5365..f68d32c 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "zod": "^3.23.8" }, "devDependencies": { + "@codecov/webpack-plugin": "^0.0.1-beta.10", "@types/better-sqlite3": "^7.6.11", "@types/node": "^20", "@types/react": "^18",