1.4.2 • Published 3 years ago

@nullcc/code-coverage-client v1.4.2

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

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.