@berlund/openapicoverage
v0.0.5
Published
A simple tool for measuring test coverage on OpenApi specifications
Maintainers
Readme
OpenApiCoverage for NodeJS
Measures code coverage in terms of calls being made to an API specified by an OpenAPI specification.
Installation
npm install -D @berlund/openapicoverageUsage
Just import the Code coverage class and hand over your Axios instance to it. Then point it to your OpenApi specification and you're good to go:
const axios = require('axios');
const { OpenApiCoverage } = require('@berlund/openapicoverage');
const axiosInstance = axios.create();
const coverage = OpenApiCoverage.use(axiosInstance).withSpecificationFromFile('./openapi.yaml');Run your tests as usual, e.g.
it('should run', async() => {
await axiosInstance.get('https://example.com/some/path');
await axiosInstance.get('https://example.com/some/path');
await axiosInstance.post('https://example.com/path/to/post', {data: 'foo'});
})Multiple Axios instances
Multiple Axios instances can be chained:
OpenApiCoverage.use(firstAxiosInstance).use(anotherAxiosInstance)Options for API definition
In case the path of your API calls isn't entirely defined in the API's paths but in the base path of your specification, a path prefix is accepted:
.withSpecification(path, { pathPrefix: '/v1' })Report generation
Console
After your tests have been run, you can print a coverage report on the console.
afterAll(() => {
coverage.printCoverage();
})This will result in something like the following.
╔══════════════════════════════════╤════════╤════════╤═══════╗
║ Path │ Method │ Status │ Count ║
╟──────────────────────────────────┼────────┼────────┼───────╢
║ https://example.com/some/path │ get │ 200 │ 2 ║
╟──────────────────────────────────┼────────┼────────┼───────╢
║ https://example.com/path/to/post │ post │ 202 │ 1 ║
╚══════════════════════════════════╧════════╧════════╧═══════╝
The following options will output all combinations of path, method and response status, even if they haven't been called:
coverage.printCoverage({ showZeroCounts: true })File report
Another option is to configure a file output which is updated on every Api call:
OpenApiCoverage.use(axiosInstance, options)where options can have the following properties:
| Property| type| Description |
|------------|-------|-------------------------|
| outputFormat | none | html | none disables file output (default) or simple HTML formatted output |
| outputPath | string | A file path where output should be written to. Ignored if output format is set to none. Will default to the current working directory
