jest-chromium-istanbul
v0.5.4
Published
Collect code coverage information from end-to-end jest chromium tests.
Downloads
9
Maintainers
Readme
jest-chromium-istanbul
This is a fork of ocavue/jest-puppeteer-istanbul, if you are using puppeteer, i would suggest using original library. it has been modified and added a function to manually passing a page to a function and setting the coverage.
Install
yarn add -D jest-chromium-istanbul
// or
npm install -D jest-chromium-istanbul
Configure
[1/4]
Make sure that you have Jest and Babel installed and configured.
[2/4]
Install babel-plugin-istanbul
and add it to your Babel config.
You should ONLY use this plugin when you are in development mode. This plugin will add a lot of code for keeping track of the coverage statements. You definitely won't want them in your final production code.
Babel configuration examples:
// .babelrc.js
const plugins = [
/* Your babel plugins */
]
if (process.env.NODE_ENV === "development") {
plugins.push("istanbul")
}
module.exports = {
plugins: plugins,
}
// babel.config.json
{
plugins: [
// Your babel plugins
],
env: {
development: {
plugins: ["istanbul"],
},
},
}
[3/4]
Update your Jest configuration:
- Add
json
tocoverageReporters
. Since the defualt value ofcoverageReporters
hasjson
inclued, you don't need to changecoverageReporters
if you havn't specify it. - Add
jest-chromium-istanbul/lib/reporter
toreporters
.
Set coverage using function as follow:
import { setCoverage } from "jest-chromium-istanbul"
await setCoverage(page)
Alternatively If chromium page available globally do as follow:
Update your Jest configuration:
- Add
jest-chromium-istanbul/lib/setup
tosetupFilesAfterEnv
.
Notice:
If custom reporters are specified, the default Jest reporters will be overridden. To keep default reporters,
default
can be passed as a module name.
A Jest configuration example:
{
coverageReporters: ["json", "text", "lcov"],
setupFilesAfterEnv: ["jest-chromium-istanbul/lib/setup"],
reporters: ["default", "jest-chromium-istanbul/lib/reporter"],
collectCoverage: true,
}
If you use jest-chromium, jest-chromium will make page globally available. Otherwise you can set page globally as follow:
beforeAll(async () => {
const browser = await chromium.launch()
const page = await browser.newPage()
global.page = page
})
describe("E2E Tests", () => {
test(async () => {
/* Your test code */
})
})