Skip to content

Commit 7a8c035

Browse files
Liviu RauDevtools-frontend LUCI CQ
authored andcommitted
Migrate test/e2e/application/shared-storage_test.ts
Fixed: 416405361, 40282697 Change-Id: Ic0ccefdbfef99483483df48f2584a63b0299a50c Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6870372 Commit-Queue: Liviu Rau <[email protected]> Reviewed-by: Alex Rudenko <[email protected]>
1 parent e7eae2a commit 7a8c035

File tree

9 files changed

+134
-199
lines changed

9 files changed

+134
-199
lines changed

test/e2e/BUILD.gn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ group("e2e") {
1515

1616
node_ts_library("tests") {
1717
deps = [
18-
"application",
1918
"console",
2019
"extensions",
2120
"lighthouse",

test/e2e/application/BUILD.gn

Lines changed: 0 additions & 14 deletions
This file was deleted.

test/e2e/application/DIR_METADATA

Lines changed: 0 additions & 3 deletions
This file was deleted.

test/e2e/application/shared-storage_test.ts

Lines changed: 0 additions & 143 deletions
This file was deleted.

test/e2e/helpers/application-helpers.ts

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@
33
// found in the LICENSE file.
44

55
import type {DevToolsPage} from '../../e2e_non_hosted/shared/frontend-helper.js';
6-
import {
7-
click,
8-
getTestServerPort,
9-
waitFor,
10-
} from '../../shared/helper.js';
116
import {getBrowserAndPagesWrappers} from '../../shared/non_hosted_wrappers.js';
127

138
import {getDataGridRows} from './datagrid-helpers.js';
9+
import {openCommandMenu} from './quick_open-helpers.js';
1410
import {expectVeEvents, veChange, veClick, veImpression, veImpressionsUnder} from './visual-logging-helpers.js';
1511

1612
export async function navigateToApplicationTab(
@@ -21,12 +17,13 @@ export async function navigateToApplicationTab(
2117
await inspectedPage.bringToFront();
2218
await inspectedPage.goToResource(`application/${testName}.html`);
2319
await devToolsPage.bringToFront();
24-
await devToolsPage.click('#tab-resources');
20+
await openCommandMenu(devToolsPage);
21+
await devToolsPage.typeText('Application');
22+
await devToolsPage.page.keyboard.press('Enter');
23+
await devToolsPage.waitFor('#tab-resources');
2524
// Make sure the application navigation list is shown
2625
await devToolsPage.waitFor('.storage-group-list-item');
27-
await expectVeEvents(
28-
[veClick('Toolbar: main > PanelTabHeader: resources'), veImpressionForApplicationPanel()], undefined,
29-
devToolsPage);
26+
await expectVeEvents([veImpressionForApplicationPanel()], undefined, devToolsPage);
3027
}
3128

3229
export async function navigateToServiceWorkers(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
@@ -52,12 +49,6 @@ export async function navigateToFrame(name: string, devToolsPage: DevToolsPage)
5249
undefined, devToolsPage);
5350
}
5451

55-
export async function navigateToManifestInApplicationTab(testName: string) {
56-
const MANIFEST_SELECTOR = '[aria-label="Manifest"]';
57-
await navigateToApplicationTab(testName);
58-
await click(MANIFEST_SELECTOR);
59-
}
60-
6152
export async function navigateToStorage(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
6253
const STORAGE_SELECTOR = '[aria-label="Storage"]';
6354
await devToolsPage.click(STORAGE_SELECTOR);
@@ -178,25 +169,32 @@ export async function navigateToSessionStorageForTopDomain(
178169

179170
const SHARED_STORAGE_SELECTOR = '[aria-label="Shared storage"].parent';
180171

181-
export async function navigateToSharedStorage() {
182-
await doubleClickTreeItem(SHARED_STORAGE_SELECTOR);
183-
await waitFor('devtools-shared-storage-access-grid');
184-
await expectVeEvents([
185-
veClick('Panel: resources > Pane: sidebar > Tree > TreeItem: storage > TreeItem: shared-storage'),
186-
veImpressionsUnder(
187-
'Panel: resources', [veImpression('Pane', 'shared-storage-events', [veImpression('Section', 'events-table')])]),
188-
]);
172+
export async function navigateToSharedStorage(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
173+
await doubleClickTreeItem(SHARED_STORAGE_SELECTOR, devToolsPage);
174+
await devToolsPage.waitFor('.empty-state');
175+
176+
await expectVeEvents(
177+
[
178+
veImpressionsUnder(
179+
'Panel: resources', [veImpression('Pane', 'manifest', [veImpression('Section', 'empty-view')])]),
180+
],
181+
undefined, devToolsPage);
189182
}
190183

191-
export async function navigateToSharedStorageForTopDomain() {
192-
await navigateToSharedStorage();
193-
const DOMAIN_SELECTOR = `${SHARED_STORAGE_SELECTOR} + ol > [aria-label="https://localhost:${getTestServerPort()}"]`;
194-
await doubleClickTreeItem(DOMAIN_SELECTOR);
195-
await expectVeEvents([
196-
veClick(
197-
'Panel: resources > Pane: sidebar > Tree > TreeItem: storage > TreeItem: shared-storage > TreeItem: shared-storage-instance'),
198-
veImpressionsUnder('Panel: resources', [veImpressionForSharedStorageView()]),
199-
]);
184+
export async function navigateToSharedStorageForTopDomain(
185+
devToolsPage = getBrowserAndPagesWrappers().devToolsPage,
186+
inspectedPage = getBrowserAndPagesWrappers().inspectedPage,
187+
) {
188+
await navigateToSharedStorage(devToolsPage);
189+
const DOMAIN_SELECTOR = `${SHARED_STORAGE_SELECTOR} + ol > [aria-label="${inspectedPage.domain()}"]`;
190+
await doubleClickTreeItem(DOMAIN_SELECTOR, devToolsPage);
191+
await expectVeEvents(
192+
[
193+
veClick(
194+
'Panel: resources > Pane: sidebar > Tree > TreeItem: storage > TreeItem: shared-storage > TreeItem: shared-storage-instance'),
195+
veImpressionsUnder('Panel: resources', [veImpressionForSharedStorageView()]),
196+
],
197+
undefined, devToolsPage);
200198
}
201199

202200
async function doubleClickTreeItem(selector: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
@@ -239,7 +237,7 @@ export async function getFrameTreeTitles(devToolsPage: DevToolsPage) {
239237
export async function getStorageItemsData(
240238
columns: string[], leastExpected = 1, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
241239
const gridData = await devToolsPage.waitForFunction(async () => {
242-
const values = await getDataGridData('.storage-view table', columns, devToolsPage);
240+
const values = await getDataGridData('.data-grid table', columns, devToolsPage);
243241
if (values.length >= leastExpected) {
244242
return values;
245243
}
@@ -480,7 +478,7 @@ function veImpressionForSharedStorageView() {
480478
veImpression('TableHeader', 'key'),
481479
veImpression('TableHeader', 'value'),
482480
veImpression('Action', 'reset-entropy-budget'),
483-
veImpression('Pane', 'preview', [veImpression('Section', 'json-view')]),
481+
veImpression('Pane', 'preview', [veImpression('Section', 'empty-view')]),
484482
]);
485483
}
486484

test/e2e_non_hosted/application/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ ts_e2e_library("application") {
1313
"service-worker-network_test.ts",
1414
"service-worker-update_test.ts",
1515
"session-storage_test.ts",
16+
"shared-storage_test.ts",
1617
"storage_test.ts",
1718
"window-controls_test.ts",
1819
]
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
// Copyright 2022 The Chromium Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import {assert} from 'chai';
6+
7+
import {expectError} from '../../conductor/events.js';
8+
import {
9+
getStorageItemsData,
10+
getTrimmedTextContent,
11+
navigateToApplicationTab,
12+
navigateToSharedStorage,
13+
navigateToSharedStorageForTopDomain,
14+
} from '../../e2e/helpers/application-helpers.js';
15+
import {
16+
getDataGrid,
17+
getDataGridRows,
18+
getInnerTextOfDataGridCells,
19+
} from '../../e2e/helpers/datagrid-helpers.js';
20+
21+
const SITE = 'https://localhost';
22+
23+
describe('The Application Tab', () => {
24+
it('shows Shared Storage events', async ({devToolsPage, inspectedPage}) => {
25+
await navigateToApplicationTab('shared-storage', devToolsPage, inspectedPage);
26+
27+
await navigateToSharedStorage(devToolsPage);
28+
29+
await inspectedPage.goToResource('application/shared-storage.html');
30+
31+
const dataGrid = await getDataGrid(undefined, devToolsPage);
32+
const innerText = await getInnerTextOfDataGridCells(dataGrid, 3, false, devToolsPage);
33+
34+
assert.strictEqual(innerText[0][1], 'window');
35+
assert.strictEqual(innerText[0][2], 'clear');
36+
assert.strictEqual(innerText[0][3], inspectedPage.domain());
37+
assert.strictEqual(innerText[0][4], SITE);
38+
assert.strictEqual(innerText[0][5], '{}');
39+
assert.strictEqual(innerText[1][1], 'window');
40+
assert.strictEqual(innerText[1][2], 'set');
41+
assert.strictEqual(innerText[1][3], inspectedPage.domain());
42+
assert.strictEqual(innerText[1][4], SITE);
43+
assert.strictEqual(innerText[1][5], '{"key":"firstKey","value":"firstValue","ignoreIfPresent":false}');
44+
assert.strictEqual(innerText[2][1], 'window');
45+
assert.strictEqual(innerText[2][2], 'append');
46+
assert.strictEqual(innerText[2][3], inspectedPage.domain());
47+
assert.strictEqual(innerText[2][4], SITE);
48+
assert.strictEqual(
49+
innerText[2][5], '{"key":"secondKey","value":"{\\"field\\":\\"complexValue\\",\\"primitive\\":2}"}');
50+
51+
const rows = await getDataGridRows(3, dataGrid, false, devToolsPage);
52+
await devToolsPage.clickElement(rows[rows.length - 1][0]);
53+
54+
const jsonView = await devToolsPage.waitFor('.json-view');
55+
const jsonViewText = await jsonView.evaluate(el => (el as HTMLElement).innerText);
56+
const accessTimeString = jsonViewText.substring('{accessTime: '.length, jsonViewText.indexOf(', scope:'));
57+
assert.strictEqual(jsonViewText, `{accessTime: ${accessTimeString}, scope: "window", method: "append",…}`);
58+
});
59+
60+
it('shows Shared Storage metadata', async ({devToolsPage, inspectedPage}) => {
61+
await navigateToApplicationTab('shared-storage', devToolsPage, inspectedPage);
62+
63+
await navigateToSharedStorageForTopDomain(devToolsPage, inspectedPage);
64+
65+
const fieldValues = await getTrimmedTextContent('devtools-report-value', devToolsPage);
66+
const timeString = fieldValues[1];
67+
assert.deepEqual(fieldValues, [inspectedPage.domain(), timeString, '2', '130', '12']);
68+
});
69+
70+
it('shows Shared Storage keys and values', async ({devToolsPage, inspectedPage}) => {
71+
await navigateToApplicationTab('shared-storage', devToolsPage, inspectedPage);
72+
73+
await navigateToSharedStorageForTopDomain(devToolsPage, inspectedPage);
74+
75+
const dataGridRowValues = await getStorageItemsData(['key', 'value'], 2, devToolsPage);
76+
assert.deepEqual(dataGridRowValues, [
77+
{
78+
key: 'firstKey',
79+
value: 'firstValue',
80+
},
81+
{
82+
key: 'secondKey',
83+
value: '{"field":"complexValue","primitive":2}',
84+
},
85+
]);
86+
87+
const dataGrid = await getDataGrid(undefined, devToolsPage);
88+
const rows = await getDataGridRows(3, dataGrid, false, devToolsPage);
89+
await devToolsPage.clickElement(rows[1][0]);
90+
91+
const jsonView = await devToolsPage.waitFor('.json-view');
92+
const jsonViewText = await jsonView.evaluate(el => (el as HTMLElement).innerText);
93+
assert.strictEqual(jsonViewText, '{key: "secondKey", value: "{"field":"complexValue","primitive":2}"}');
94+
expectError('Request CacheStorage.requestCacheNames failed. {"code":-32602,"message":"Invalid security origin"}');
95+
});
96+
});

test/e2e_non_hosted/conductor/state-provider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export class StateProvider {
6868
}
6969

7070
if (!browser?.connected) {
71-
browser = await Launcher.browserSetup(browserSettings);
71+
browser = await Launcher.browserSetup(browserSettings, StateProvider.serverPort);
7272
this.#settingToBrowser.set(browserKey, browser);
7373
}
7474
this.#suiteToBrowser.set(suite, browser);

0 commit comments

Comments
 (0)