blob: c9ca2a7a769d5a58c9dcfd165938e5d55b284291 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {navigateToConsoleTab, waitForConsoleInfoMessageAndClickOnLink} from '../helpers/console-helpers.js';
import {
clickOnContextMenuItemFromTab,
MOVE_TO_DRAWER_SELECTOR,
MOVE_TO_MAIN_TAB_BAR_SELECTOR,
tabExistsInDrawer,
tabExistsInMainPanel,
} from '../helpers/cross-tool-helper.js';
import {clickOnFirstLinkInStylesPanel, navigateToElementsTab} from '../helpers/elements-helpers.js';
import {LAYERS_TAB_SELECTOR} from '../helpers/layers-helpers.js';
import {MEMORY_TAB_ID, navigateToMemoryTab} from '../helpers/memory-helpers.js';
import {
navigateToBottomUpTab,
navigateToPerformanceTab,
startRecording,
stopRecording,
} from '../helpers/performance-helpers.js';
import {openPanelViaMoreTools} from '../helpers/settings-helpers.js';
import type {DevToolsPage} from '../shared/frontend-helper.js';
import type {InspectedPage} from '../shared/target-helper.js';
describe('A user can navigate across', function() {
async function setupForTests(devToolsPage: DevToolsPage, inspectedPage: InspectedPage) {
await inspectedPage.goToResource('cross_tool/default.html');
await devToolsPage.closeAllCloseableTabs();
}
it('Console -> Sources', async ({devToolsPage, inspectedPage}) => {
await setupForTests(devToolsPage, inspectedPage);
await navigateToConsoleTab(devToolsPage);
await waitForConsoleInfoMessageAndClickOnLink(devToolsPage);
await devToolsPage.waitFor('.panel[aria-label="sources"]');
});
it('Console -> Issues', async ({devToolsPage, inspectedPage}) => {
await setupForTests(devToolsPage, inspectedPage);
await navigateToConsoleTab(devToolsPage);
await devToolsPage.click('#console-issues-counter');
await devToolsPage.waitFor('[aria-label="Issues panel"]');
});
it('Elements -> Sources', async ({devToolsPage, inspectedPage}) => {
await setupForTests(devToolsPage, inspectedPage);
await navigateToElementsTab(devToolsPage);
await clickOnFirstLinkInStylesPanel(devToolsPage);
await devToolsPage.waitFor('.panel[aria-label="sources"]');
});
it('Performance -> Sources', async ({devToolsPage, inspectedPage}) => {
await setupForTests(devToolsPage, inspectedPage);
await navigateToPerformanceTab(undefined, devToolsPage, inspectedPage);
await startRecording(devToolsPage);
// Wait until we have collected a bit of trace data (indicated by the progress bar
// changing at least twice), to ensure that there's at least a single tick within
// `default.html` below.
const statusIndicator = await devToolsPage.waitFor('.timeline-status-dialog .progress .indicator');
const statusIndicatorValues = new Set<number>();
await devToolsPage.waitForFunction(async () => {
const indicatorValue = await statusIndicator.evaluate(n => Number(n.getAttribute('aria-valuenow')));
if (statusIndicatorValues.has(indicatorValue)) {
await devToolsPage.timeout(50);
} else {
statusIndicatorValues.add(indicatorValue);
}
return statusIndicatorValues.size > 1;
});
await stopRecording(devToolsPage);
await navigateToBottomUpTab(devToolsPage, 'script-location');
await devToolsPage.click('.devtools-link[title*="default.html"]');
await devToolsPage.waitFor('.panel[aria-label="sources"]');
});
});
describe('A user can move tabs', function() {
// TODO: Memory panel is not show in the toolbar in docked mode
setup({dockingMode: 'undocked'});
it('Move Memory to drawer', async ({devToolsPage}) => {
await navigateToMemoryTab(devToolsPage);
await tabExistsInMainPanel(MEMORY_TAB_ID, devToolsPage);
await clickOnContextMenuItemFromTab(MEMORY_TAB_ID, MOVE_TO_DRAWER_SELECTOR, devToolsPage);
await tabExistsInDrawer(MEMORY_TAB_ID, devToolsPage);
});
it('Move Animations to main panel', async ({devToolsPage}) => {
const ANIMATIONS_TAB_ID = '#tab-animations';
await openPanelViaMoreTools('Animations', devToolsPage);
await tabExistsInDrawer(ANIMATIONS_TAB_ID, devToolsPage);
await clickOnContextMenuItemFromTab(ANIMATIONS_TAB_ID, MOVE_TO_MAIN_TAB_BAR_SELECTOR, devToolsPage);
await tabExistsInMainPanel(ANIMATIONS_TAB_ID, devToolsPage);
});
});
describe('A user can open panels via the "panel" query param', function() {
it('Layers is shown', async ({devToolsPage}) => {
await devToolsPage.reloadWithParams({panel: 'layers'});
await tabExistsInMainPanel(LAYERS_TAB_SELECTOR, devToolsPage);
});
});