chrome-devtools-frontend
Version:
Chrome DevTools UI
91 lines (77 loc) • 2.51 kB
text/typescript
// 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 * as Elements from '../../../../panels/elements/components/components.js';
import * as FrontendHelpers from '../../../../testing/EnvironmentHelpers.js';
import * as ComponentHelpers from '../../helpers/helpers.js';
import {makeCrumb} from './helpers.js';
await ComponentHelpers.ComponentServerSetup.setup();
await FrontendHelpers.initializeGlobalVars();
const component = new Elements.ElementsBreadcrumbs.ElementsBreadcrumbs();
const bodyCrumb = makeCrumb({
nodeType: Node.ELEMENT_NODE,
id: 1,
nodeName: 'body',
nodeNameNicelyCased: 'body',
attributes: {class: 'body-class1 body-class2'},
});
const divCrumb = makeCrumb({
nodeType: Node.ELEMENT_NODE,
id: 2,
nodeName: 'div',
nodeNameNicelyCased: 'div',
attributes: {
id: 'test-id',
class: 'wrapper-div',
},
});
const spanCrumb = makeCrumb({
nodeType: Node.ELEMENT_NODE,
id: 3,
nodeName: 'span',
nodeNameNicelyCased: 'span',
attributes: {
id: 'my-span-has-a-long-id',
},
});
const strongCrumb = makeCrumb({
nodeType: Node.ELEMENT_NODE,
id: 4,
nodeName: 'strong',
nodeNameNicelyCased: 'strong',
attributes: {
id: 'gotta-be-bold',
},
});
const emCrumb = makeCrumb({
nodeType: Node.ELEMENT_NODE,
id: 5,
nodeName: 'em',
nodeNameNicelyCased: 'em',
attributes: {id: 'my-em-has-a-long-id', class: 'and-a-very-long-class'},
});
const crumbs = [emCrumb, strongCrumb, spanCrumb, divCrumb, bodyCrumb];
const crumbsReversed = [...crumbs].reverse();
const selectedNodeParam = new URLSearchParams(location.search)?.get('selectedCrumbIndex');
const selectedNode = selectedNodeParam ? crumbsReversed[Number(selectedNodeParam)] : bodyCrumb;
component.data = {
crumbs,
selectedNode,
};
document.getElementById('container')?.appendChild(component);
const button = component.shadowRoot?.querySelector?.('button.overflow.right');
button?.dispatchEvent(new MouseEvent('click'));
// Each subsequent click is timed out to allow the smooth scroll to finish.
window.setTimeout(() => {
button?.dispatchEvent(new MouseEvent('click'));
window.setTimeout(() => {
button?.dispatchEvent(new MouseEvent('click'));
}, 200);
}, 200);
const btn = document.querySelector('button');
btn?.addEventListener('click', () => {
component.data = {
crumbs: [emCrumb, strongCrumb, spanCrumb, divCrumb, bodyCrumb],
selectedNode: divCrumb,
};
});