takePreciseCoverage
for JS very directly
import * as fs from "fs";
import {createSession} from "chrome-debugging-client";
describe("Functional Coverage Test", function() {
this.timeout(880000);
it("Get the coverage", () => {
//Get the dynamic port from Chrome
browser.url("chrome://version");
let cmd_line = browser.getText("#command_line"),
res = cmd_line.match(/--remote-debugging-port=[0-9][0-9][0-9][0-9][0-9]/gi),
port = res[0].split("=")[1];
console.log(port);
browser.pause(15000);
createSession(async (session) => {
const api = await session.createAPIClient("172.28.70.29", port);
console.dir(api);
const tabs = await api.listTabs();
const tab = tabs[0];
console.log("====>");
console.log(tab.webSocketDebuggerUrl);
let client = await session.openDebuggingProtocol(http://localhost:${port}
);
await client.send("Profiler.enable");
await client.send("Page.enable");
await client.send("Profiler.startPrecisionCoverage", {callCount: true});
await client.send("Page.navigate", {url: "https://www.microsoft.com"});
await new Promise((resolve) => client.on("Page.loadEventFired", resolve));
await new Promise((resolve) => setTimeout(resolve, 10000));
let result = await client.send("Profiler.takePrecisionCoverage");
fs.writeFileSync("coverage.json", JSON.stringify(result, null, 2));
}). catch(err => {
console.error(err);
});
});
after(() => {
});
});