1.4.2 • Published 3 years ago
@nullcc/code-coverage-client v1.4.2
Code Coverage Client
Installation
$ npm install @nullcc/code-coverage-client
Usage
CDP Coverage Collector
import { CDPCoverageCollector } from '@nullcc/code-coverage-client';
const collector = new CDPCoverageCollector({
wsEndpoint: {wsEndpoint}, // get wsEndpoint from browser
logging: true,
});
await collector.init();
await collector.start();
// run your test...
const { coverage } = await collector.collect();
await collector.stop();
// use coverage data
Electron Coverage Collector
Local mode:
import { ElectronCoverageCollector } from '@nullcc/code-coverage-client';
// run your test...
const collector = new ElectronCoverageCollector({
mode: 'local',
archive: {archive},
rawCoverageDir: {rawCoverageDir},
jsFilePathInElectronArchive: {jsFilePathInElectronArchive},
sourceMapFilePathInElectronArchive: {sourceMapFilePathInElectronArchive},
sourceMapNormalizationItems: {sourceMapNormalizationItems},
appName: {appName},
logging: true,
});
await collector.init();
await collector.start();
const { coverage, sourceCodeMap } = await coverageCollector.collect();
await collector.stop();
// use coverage data and source code map
Remote mode:
import { ElectronCoverageCollector } from '@nullcc/code-coverage-client';
// run your test...
const collector = new ElectronCoverageCollector({
mode: 'remote',
archive: {archive},
rawCoverageDir: {rawCoverageDir},
jsFilePathInElectronArchive: {jsFilePathInElectronArchive},
sourceMapFilePathInElectronArchive: {sourceMapFilePathInElectronArchive},
coverageNormalizationItems: {coverageNormalizationItems},
sourceMapNormalizationItems: {sourceMapNormalizationItems},
logging: true,
host: {host}, // only for remote mode
username: {username}, // only for remote mode
password: {password}, // only for remote mode
});
await collector.init();
await collector.start();
const { coverage, sourceCodeMap } = await coverageCollector.collect();
await collector.stop();
// use coverage data and source code map
Some Technical Details
In early releases, code coverage client uses chrome-remote-interface to manipulate browser via CDP connection.
But due to ChromeDriver Security Considerations, we can't connect to chromedriver in non-local environment.
In order can be used in selenium hub environment (selenium hub exposes a URL name se:cdp
as a local proxy to forward our CDP requests), code coverage client manages CDP websocket connection by sending requests to this proxy endpoint.