UNPKG

chrome-devtools-frontend

Version:
94 lines (80 loc) 3.2 kB
// Copyright 2025 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 * as SDK from '../../core/sdk/sdk.js'; import * as Protocol from '../../generated/protocol.js'; import {createTarget} from '../../testing/EnvironmentHelpers.js'; import { describeWithMockConnection, } from '../../testing/MockConnection.js'; import * as Elements from './elements.js'; describeWithMockConnection('ElementsTreeOutline', () => { let target: SDK.Target.Target; let model: SDK.DOMModel.DOMModel; let treeOutline: Elements.ElementsTreeOutline.ElementsTreeOutline; beforeEach(() => { target = createTarget(); treeOutline = new Elements.ElementsTreeOutline.ElementsTreeOutline(/* omitRootDOMNode */ true); treeOutline.wireToDOMModel(target.model(SDK.DOMModel.DOMModel) as SDK.DOMModel.DOMModel); const modelBeforeAssertion = target.model(SDK.DOMModel.DOMModel); assert.exists(modelBeforeAssertion); model = modelBeforeAssertion; }); afterEach(() => { target.dispose('NO_REASON'); }); it('should include the ::checkmark pseudo element', () => { const optionNode = SDK.DOMModel.DOMNode.create(model, null, false, { nodeId: 1 as Protocol.DOM.NodeId, backendNodeId: 1 as Protocol.DOM.BackendNodeId, nodeType: Node.ELEMENT_NODE, nodeName: 'option', localName: 'option', nodeValue: 'An Option', childNodeCount: 1, pseudoElements: [{ parentId: 1 as Protocol.DOM.NodeId, nodeId: 2 as Protocol.DOM.NodeId, backendNodeId: 2 as Protocol.DOM.BackendNodeId, nodeType: Node.ELEMENT_NODE, pseudoType: Protocol.DOM.PseudoType.Checkmark, pseudoIdentifier: '::checkmark', nodeName: '::checkmark', localName: '::checkmark', nodeValue: '*', }], }); assert.isNotNull(optionNode); const checkmarkNode = optionNode.checkmarkPseudoElement(); assert.isNotNull(checkmarkNode); treeOutline.rootDOMNode = optionNode; assert.isNotNull(treeOutline.findTreeElement(checkmarkNode!)); }); it('should include the ::picker-icon pseudo element', () => { const selectNode = SDK.DOMModel.DOMNode.create(model, null, false, { nodeId: 1 as Protocol.DOM.NodeId, backendNodeId: 1 as Protocol.DOM.BackendNodeId, nodeType: Node.ELEMENT_NODE, nodeName: 'select', localName: 'select', nodeValue: 'A Select', childNodeCount: 1, pseudoElements: [{ parentId: 1 as Protocol.DOM.NodeId, nodeId: 2 as Protocol.DOM.NodeId, backendNodeId: 2 as Protocol.DOM.BackendNodeId, nodeType: Node.ELEMENT_NODE, pseudoType: Protocol.DOM.PseudoType.PickerIcon, pseudoIdentifier: '::picker-icon', nodeName: '::picker-icon', localName: '::picker-icon', nodeValue: '^', }], }); assert.isNotNull(selectNode); const pickerIconNode = selectNode.pickerIconPseudoElement(); assert.isNotNull(pickerIconNode); treeOutline.rootDOMNode = selectNode; assert.isNotNull(treeOutline.findTreeElement(pickerIconNode!)); }); });