blob: ddbd0208e80c275608f228d0d4cb6b5b5e94eeb8 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {assert} from 'chai';
import {expectError} from '../../conductor/events.js';
import {
getStorageItemsData,
getTrimmedTextContent,
navigateToApplicationTab,
navigateToSharedStorage,
navigateToSharedStorageForTopDomain,
} from '../helpers/application-helpers.js';
import {
getDataGrid,
getDataGridRows,
getInnerTextOfDataGridCells,
} from '../helpers/datagrid-helpers.js';
const SITE = 'https://localhost';
describe('The Application Tab', () => {
it('shows Shared Storage events', async ({devToolsPage, inspectedPage}) => {
await navigateToApplicationTab('shared-storage', devToolsPage, inspectedPage);
await navigateToSharedStorage(devToolsPage);
await inspectedPage.goToResource('application/shared-storage.html');
const dataGrid = await getDataGrid(undefined, devToolsPage);
const innerText = await getInnerTextOfDataGridCells(dataGrid, 3, false, devToolsPage);
assert.strictEqual(innerText[0][1], 'window');
assert.strictEqual(innerText[0][2], 'clear');
assert.strictEqual(innerText[0][3], inspectedPage.domain());
assert.strictEqual(innerText[0][4], SITE);
assert.strictEqual(innerText[0][5], '{}');
assert.strictEqual(innerText[1][1], 'window');
assert.strictEqual(innerText[1][2], 'set');
assert.strictEqual(innerText[1][3], inspectedPage.domain());
assert.strictEqual(innerText[1][4], SITE);
assert.strictEqual(innerText[1][5], '{"key":"firstKey","value":"firstValue","ignoreIfPresent":false}');
assert.strictEqual(innerText[2][1], 'window');
assert.strictEqual(innerText[2][2], 'append');
assert.strictEqual(innerText[2][3], inspectedPage.domain());
assert.strictEqual(innerText[2][4], SITE);
assert.strictEqual(
innerText[2][5], '{"key":"secondKey","value":"{\\"field\\":\\"complexValue\\",\\"primitive\\":2}"}');
const rows = await getDataGridRows(3, dataGrid, false, devToolsPage);
await devToolsPage.clickElement(rows[rows.length - 1][0]);
const jsonView = await devToolsPage.waitFor('.json-view');
const jsonViewText = await jsonView.evaluate(el => (el as HTMLElement).innerText);
const accessTimeString = jsonViewText.substring('{accessTime: '.length, jsonViewText.indexOf(', scope:'));
assert.strictEqual(jsonViewText, `{accessTime: ${accessTimeString}, scope: "window", method: "append",…}`);
});
it('shows Shared Storage metadata', async ({devToolsPage, inspectedPage}) => {
await navigateToApplicationTab('shared-storage', devToolsPage, inspectedPage);
await navigateToSharedStorageForTopDomain(devToolsPage, inspectedPage);
const fieldValues = await getTrimmedTextContent('devtools-report-value', devToolsPage);
const timeString = fieldValues[0]; // Creation time is the first field for main frame
// Origin is no longer displayed for main frame contexts.
assert.deepEqual(fieldValues, [timeString, '2', '130', '12']);
});
it('shows Shared Storage keys and values', async ({devToolsPage, inspectedPage}) => {
await navigateToApplicationTab('shared-storage', devToolsPage, inspectedPage);
await navigateToSharedStorageForTopDomain(devToolsPage, inspectedPage);
const dataGridRowValues = await getStorageItemsData(['key', 'value'], 2, devToolsPage);
assert.deepEqual(dataGridRowValues, [
{
key: 'firstKey',
value: 'firstValue',
},
{
key: 'secondKey',
value: '{"field":"complexValue","primitive":2}',
},
]);
const dataGrid = await getDataGrid(undefined, devToolsPage);
const rows = await getDataGridRows(3, dataGrid, false, devToolsPage);
await devToolsPage.clickElement(rows[1][0]);
const jsonView = await devToolsPage.waitFor('.json-view');
const jsonViewText = await jsonView.evaluate(el => (el as HTMLElement).innerText);
assert.strictEqual(jsonViewText, '{key: "secondKey", value: "{"field":"complexValue","primitive":2}"}');
expectError('Request CacheStorage.requestCacheNames failed. {"code":-32602,"message":"Invalid security origin"}');
});
});