forked from ChromeDevTools/devtools-frontend
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcoverage-helpers.ts
50 lines (40 loc) · 2.14 KB
/
coverage-helpers.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {click, goToResource, waitFor, waitForMany, waitForNone} from '../../shared/helper.js';
import {openPanelViaMoreTools} from './settings-helpers.js';
const START_INSTRUMENTING_BUTTON = 'devtools-button[aria-label="Start instrumenting coverage and reload page"]';
const STOP_INSTRUMENTING_BUTTON = 'devtools-button[aria-label="Stop instrumenting coverage and show results"]';
export async function waitForTheCoveragePanelToLoad() {
// Open panel and wait for content
await openPanelViaMoreTools('Coverage');
await waitFor('div[aria-label="Coverage panel"]');
await waitFor('.coverage-results .landing-page');
}
export async function navigateToCoverageTestSite() {
await goToResource('coverage/default.html');
}
export async function startInstrumentingCoverage() {
await click(START_INSTRUMENTING_BUTTON);
await waitForNone('.coverage-results .landing-page');
}
export async function stopInstrumentingCoverage() {
await click(STOP_INSTRUMENTING_BUTTON);
await waitForNone('button[title="Clear coverage"][disabled]');
}
export async function clearCoverageContent() {
await click('devtools-button[aria-label="Clear coverage"]');
await waitFor('.coverage-results .landing-page');
}
export async function getMessageContents() {
const messageElement = await waitFor('.coverage-results .landing-page .message');
return messageElement.evaluate(node => (node as HTMLElement).innerText);
}
export async function getCoverageData(expectedCount: number) {
const rows = await waitForMany('.data-grid-data-grid-node', expectedCount, await waitFor('.coverage-results'));
return Promise.all(rows.map(r => r.evaluate((r: Element) => ({
url: r.querySelector('.url-column')?.textContent,
total: r.querySelector('.size-column')?.textContent,
unused: r.querySelector('.unused-size-column span')?.textContent,
}))));
}