What is codecov?
The codecov npm package is a tool for uploading code coverage reports to Codecov, a service that provides hosted coverage reports with detailed insights and visualizations. It integrates with various CI/CD pipelines to automate the process of collecting and uploading coverage data.
What are codecov's main functionalities?
Upload Coverage Reports
This feature allows you to upload your code coverage reports to Codecov. You need to provide your Codecov token and the path to the coverage report file.
const codecov = require('codecov');
codecov.upload({ token: 'your-codecov-token', file: 'path/to/coverage.xml' });
CI/CD Integration
This feature demonstrates how to integrate Codecov with your CI/CD pipeline. It uses environment variables to dynamically set the token, branch, and commit information.
const codecov = require('codecov');
codecov.upload({ token: process.env.CODECOV_TOKEN, file: 'coverage.xml', branch: process.env.CI_BRANCH, commit: process.env.CI_COMMIT });
Custom Flags
This feature allows you to add custom flags to your coverage reports. Flags can be used to differentiate between different types of tests or coverage reports.
const codecov = require('codecov');
codecov.upload({ token: 'your-codecov-token', file: 'coverage.xml', flags: 'unittests' });
Other packages similar to codecov
coveralls
Coveralls is another popular service for code coverage reporting. It provides similar functionalities to Codecov, such as uploading coverage reports and integrating with CI/CD pipelines. However, Coveralls has a different user interface and may offer different integrations and features.
nyc
NYC is a code coverage tool built on top of Istanbul. While it primarily focuses on generating coverage reports locally, it can be used in conjunction with services like Codecov or Coveralls to upload reports. NYC provides detailed coverage information and supports various reporting formats.
jest
Jest is a JavaScript testing framework that includes built-in code coverage reporting. While Jest itself does not upload coverage reports to external services, it can generate coverage data that can be uploaded to Codecov or Coveralls using additional tools or scripts.
Codecov NodeJS Uploader
Codecov.io support for node.js.
Installation:
Add the latest version of codecov
to your package.json:
npm install codecov --save-dev
or
yarn add codecov --dev
Usage:
This script ( bin/codecov
) detect your CI provider and all coverage reports and uploads them to Codecov.
Once your app is instrumented for coverage, and building, simply call ./node_modules/.bin/codecov
.
This library currently supports the following CI companies: Travis CI, Travis, Appveyor, CircleCI, Cirrus CI, Codeship, Drone, Jenkins, Shippable, Semaphore, Wercker, Snap CI, Buildkite.
Upload repo tokens
Repo tokens are not required for public repos tested on Travis-Org, CircleCI or AppVeyor.
Repo tokens are necessary to distinguish your repository from others. You can find your repo token on your repository page at Codecov. Set this unique uuid to CODECOV_TOKEN
in your environment variables.
export CODECOV_TOKEN=":uuid-repo-token"
# or
./node_modules/.bin/codecov --token=:token
# or
./node_modules/.bin/nyc report --reporter=text-lcov | ./node_modules/.bin/codecov --pipe
With Mocha:
istanbul cover ./node_modules/mocha/bin/_mocha -- -R spec
./node_modules/.bin/codecov
With Jasmine:
istanbul cover jasmine-node --captureExceptions spec/
./node_modules/.bin/codecov
With Tape:
istanbul cover test.js
./node_modules/.bin/codecov
With NYC
nyc npm test
nyc report --reporter=text-lcov > coverage.lcov
./node_modules/.bin/codecov
Change Log
- v2.0.0 No longer supports node v0.10 because of the execSync.
- v2.0.1 Publish as latest instead of next.
- v2.0.2 Display correct version number in console.
- v2.1.0 Flags supported http://docs.codecov.io/docs/flags
- v2.2.0 Support for Jenkins Blue Ocean. Clean reports after upload. Fix for Gitlab.
- v2.3.0 Added support for Windows. Updated dependencies.
- v3.0.0 No longer supports node v0.12 because of new version of request
- v3.0.1 Security fixes
- v3.0.2 Security fixes
- v3.0.3 Support non-git/hg root dirs
- v3.0.4 Security fixes
- v3.1.0 Custom yaml file. Allow codecov token from yml file.
- v3.2.0 Added azure pipelines
- v3.3.0 Added pipe with
--pipe
, -l
- v3.4.0 Added Heroku CI support