UNPKG

chrome-devtools-frontend

Version:
77 lines (63 loc) 2.75 kB
// Copyright 2024 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 Helpers from '../../../testing/DOMHelpers.js'; // eslint-disable-line rulesdir/es-modules-import import * as Buttons from '../buttons/buttons.js'; import * as RenderCoordinator from '../render_coordinator/render_coordinator.js'; import * as Dialogs from './dialogs.js'; describe('ButtonDialog', () => { async function getButtonDialog(fieldToTest?: Partial<Dialogs.ButtonDialog.ButtonDialogData>) { const defaultMinimumButtonDialogData: Dialogs.ButtonDialog.ButtonDialogData = { openOnRender: false, iconName: 'help', variant: Buttons.Button.Variant.TOOLBAR, dialogTitle: '', }; const buttonDialog = new Dialogs.ButtonDialog.ButtonDialog(); buttonDialog.data = Object.assign(defaultMinimumButtonDialogData, fieldToTest); Helpers.renderElementIntoDOM(buttonDialog); await RenderCoordinator.done(); return buttonDialog; } function getButtonFromButtonDialog(buttonDialog: Dialogs.ButtonDialog.ButtonDialog): Buttons.Button.Button { assert.isNotNull(buttonDialog.shadowRoot); const button = buttonDialog.shadowRoot.querySelector('devtools-button'); if (!button) { assert.fail('devtools-button not found'); } assert.instanceOf(button, HTMLElement); return button; } function getDialogFromButtonDialog(buttonDialog: Dialogs.ButtonDialog.ButtonDialog): Dialogs.Dialog.Dialog { assert.isNotNull(buttonDialog.shadowRoot); const dialog = buttonDialog.shadowRoot.querySelector('devtools-dialog'); if (!dialog) { assert.fail('devtools-dialog not found'); } assert.instanceOf(dialog, HTMLElement); return dialog; } it('should display dialog on initial render when provided prop', async () => { const buttonDialog = await getButtonDialog({ openOnRender: true, }); const dialog = getDialogFromButtonDialog(buttonDialog); assert.isTrue(dialog.hasAttribute('open')); }); it('should not display dialog on initial render by default', async () => { const buttonDialog = await getButtonDialog({ openOnRender: false, }); const dialog = getDialogFromButtonDialog(buttonDialog); assert.isFalse(dialog.hasAttribute('open')); }); it('Opens if button is clicked', async () => { const buttonDialog = await getButtonDialog({}); const dialog = getDialogFromButtonDialog(buttonDialog); assert.isFalse(dialog.hasAttribute('open')); const button = getButtonFromButtonDialog(buttonDialog); button.click(); await RenderCoordinator.done(); assert.isTrue(dialog.hasAttribute('open')); }); });