diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b4c930..f2e6c22 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,15 @@ jobs: - name: Run tests run: bundle exec rspec + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./coverage/.resultset.json + flags: unittests + name: codecov-umbrella + fail_ci_if_error: false + lint: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index e953825..1c15c3e 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,6 @@ /app/assets/builds/* !/app/assets/builds/.keep + +# Ignore test coverage files +/coverage/ diff --git a/Gemfile b/Gemfile index 50b4466..66d2811 100644 --- a/Gemfile +++ b/Gemfile @@ -62,6 +62,7 @@ group :development, :test do gem "rspec-rails" gem "factory_bot_rails" gem "shoulda-matchers" + gem "simplecov", require: false end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index b182ede..02268b3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -98,6 +98,7 @@ GEM irb (~> 1.10) reline (>= 0.3.8) diff-lcs (1.6.2) + docile (1.4.1) dotenv (3.2.0) drb (2.2.3) ed25519 (1.4.0) @@ -345,6 +346,12 @@ GEM securerandom (0.4.1) shoulda-matchers (7.0.1) activesupport (>= 7.1) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.13.2) + simplecov_json_formatter (0.1.4) solid_cable (3.0.12) actioncable (>= 7.2) activejob (>= 7.2) @@ -436,6 +443,7 @@ DEPENDENCIES rspec-rails rubocop-rails-omakase shoulda-matchers + simplecov solid_cable solid_cache solid_queue @@ -475,6 +483,7 @@ CHECKSUMS date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0 debug (1.11.1) sha256=2e0b0ac6119f2207a6f8ac7d4a73ca8eb4e440f64da0a3136c30343146e952b6 diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 + docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e dotenv (3.2.0) sha256=e375b83121ea7ca4ce20f214740076129ab8514cd81378161f11c03853fe619d drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 ed25519 (1.4.0) sha256=16e97f5198689a154247169f3453ef4cfd3f7a47481fde0ae33206cdfdcac506 @@ -576,6 +585,9 @@ CHECKSUMS ruby-vips (2.3.0) sha256=e685ec02c13969912debbd98019e50492e12989282da5f37d05f5471442f5374 securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 shoulda-matchers (7.0.1) sha256=b4bfd8744c10e0a36c8ac1a687f921ee7e25ed529e50488d61b79a8688749c77 + simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5 + simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246 + simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428 solid_cable (3.0.12) sha256=a168a54731a455d5627af48d8441ea3b554b8c1f6e6cd6074109de493e6b0460 solid_cache (1.0.10) sha256=bc05a2fb3ac78a6f43cbb5946679cf9db67dd30d22939ededc385cb93e120d41 solid_queue (1.3.2) sha256=44a53047be4255f616ff13fa5d35980e7b3eee6e31d957eadb88fbe8e0db4509 diff --git a/README.md b/README.md index 7a66051..0f1e7f3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # CreatorPulse ![CI Status](https://github.com/springwq/creator-pulse/actions/workflows/ci.yml/badge.svg) +![Code Coverage](https://codecov.io/gh/springwq/creator-pulse/branch/main/graph/badge.svg) ![Ruby Version](https://img.shields.io/badge/Ruby-4.0-red?logo=ruby&logoColor=white) ![Rails Version](https://img.shields.io/badge/Rails-8.1-red?logo=rubyonrails&logoColor=white) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-14+-blue?logo=postgresql&logoColor=white) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 327b58e..d52718b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,11 @@ +# SimpleCov configuration for test coverage +require "simplecov" +SimpleCov.start "rails" do + add_filter "/spec/" + add_filter "/config/" + add_filter "/vendor/" +end + # This file was generated by the `rails generate rspec:install` command. Conventionally, all # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. # The generated `.rspec` file contains `--require spec_helper` which will cause