canvas-lms/doc/js_code_coverage.md

2.4 KiB

JavaScript Code Coverage

tl;dr - If you want to generate a single report for all the code run RUN_TESTS_FIRST=true yarn run test:coverage

Because we use several test frameworks, we need to approach code coverage a bit differently.

If you run:


COVERAGE=true yarn test

then you will generate coverage reports for the entire canvas-lms JavaScript codebase including qUnit tests located in spec/*, jest tests colocated with the app code, and any modules within the canvas-lms/packages directory. Note that this will only generate individual coverage reports, not a combined report.

Generate Combined Coverage Report

If you want to generate a combined coverage report containing all the information from all the various coverage reports, then you can do so by running:


yarn run test:coverage

This will generate an HTML report with combined data from all the tests and output it to the coverage-js directory.

Note however, that this requires you to have previously generated individual coverage reports.

If you want to ensure that all the coverage reports are generated beforehand, then you want to run:


RUN_TESTS_FIRST=true yarn run test:coverage

which will call COVERAGE=true yarn test prior to doing the report.

Canvas Jest Coverage

If you run:


yarn run test:jest:coverage

then you will run the jest tests for Canvas and the coverage report will be placed in the coverage-jest directory.

Canvas qUnit/Karma Coverage

If you run:


COVERAGE=true yarn run test:karma

then you will run the qUnit/Karma tests for Canvas and the coverage report will be placed in the coverage-karma directory.

Packages Coverage

If you run:


COVERAGE=true yarn run test:packages

then you will generate coverage reports for each package.

Setting up a package/* for coverage

We make the assumption that you have a test:coverage script defined in your package.json. This script should generate a coverage report in the json format. Check out https://istanbul.js.org/docs/advanced/alternative-reporters/#json) for more details on what that should look like. This report should be output to a coverage directory at the root of the package.

Caveats

Computers are really good at helping us out but sometimes get it wrong. If for some reason you are seeing issues, try clearing out the coverage data and starting over.