@zooshdigital/bitbucket-v8-coverage-report
Version:
Command-line tool to upload coverage reports to Bitbucket
87 lines (57 loc) • 4.09 kB
Markdown
# Zoosh bitbucket-v8-coverage-report
Zoosh `bitbucket-v8-coverage-report` is designed to facilitate the upload of V8 test coverage reports to Bitbucket Pull Requests. This package provides functions to automate the process of uploading reports generated during build processes.
## Installation
To install Zoosh bitbucket-v8-coverage-report, simply include it as a dependency in your project's `package.json` file:
```bash
npm install @zooshdigital/bitbucket-v8-coverage-report
```
or
```bash
yarn add @zooshdigital/bitbucket-v8-coverage-report
```
## Usage
This tool enables you to upload coverage reports to Bitbucket pipelines.
### Configuring Jest for Code Coverage Analysis
When configuring Jest for code coverage analysis, you may need to specify which files should be included in the coverage report. The `collectCoverageFrom` property in Jest configuration allows you to specify these files. Here's an example of a possible configuration:
```javascript
coverageProvider: 'v8',
coverageReporters: ['json-summary'],
collectCoverageFrom: [
'./**/*.{js,ts}',
'!**/node_modules/**',
'!./.eslintrc.js',
'!./jest.config.ts',
'!./coverage/**',
],
```
### Consuming the analysis
Simply run the tool using npx. Below is an example of how to execute the command-line utility `@zooshdigital/bitbucket-v8-coverage-report` with **npx** directly from your terminal or a pipeline:
```bash
npx @zooshdigital/bitbucket-v8-coverage-report -n reportName -p ./path-to-the-v8-coverage-report
```
or
```bash
yarn bitbucket-v8-coverage-report -n reportName -p ./path-to-the-v8-coverage-report
```
If you prefer using yarn, ensure that the @zooshdigital/bitbucket-v8-coverage-report is listed in the dependencies of the current workspace if you're using multiple workspaces.
### Configuration
It takes the following arguments:
- `-n [name]` or `--name [name]` (required): The name of the report in Bitbucket.
- `-p [path]` or `--path [path]` (required): The path to the V8 coverage report file.
- `-c [percentage]` or `--min-coverage [percentage]` (optional): Optional threshold for the average coverage (average of the other four metrics).
- `-l [percentage]` or `--min-lines-coverage [percentage]` (optional): Optional threshold for the line coverage value.
- `-s [percentage]` or `--min-statements-coverage [percentage]` (optional): Optional threshold for the statements coverage value.
- `-f [percentage]` or `--min-functions-coverage [percentage]` (optional): Optional threshold for the functions coverage value.
- `-b [percentage]` or `--min-branches-coverage [percentage]` (optional): Optional threshold for the branches coverage value.
- `-a` or `--add-build` (optional): Create a success/failed "build" as well besides the report.
- `-j [path]` or `junit-path [path]`: (required for the `failed-test-comment` flag): The path to a junit XML file with unit test results.
- `-t` or `--failed-test-comment`: Create a comment on a PR in case there are failed unit tests in the junit XML file.
Ensure that the specified path leads to a V8 coverage report that can be passed to the Bitbucket API.
## Prerequisites
### Authentication
While some requests could be automatically authenticated running in a pipeline, Bitbucket doesn't allow that for all endpoints. Thus, for simplicity, the library expects an access token for all API calls. This can be a repository, project or workspace access token in the BITBUCKET_BUILD_TOKEN environment variable. Create a token and make it available as a repository or deployment variable to the pipeline.
### Other identifiers
Since information is attached to a commit (even in case of a pull request), the library needs the BITBUCKET_REPO_FULL_NAME and BITBUCKET_COMMIT environment variables to do that. These two are standard Bitbucket pipeline variables, so there is no need to set them explicitly if running the script in a pipeline.
The tool uses BITBUCKET_PR_ID for the `failed-test-comment` functionality.
## License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.