chromium/chrome/test/data/webui/settings/settings_section_test.ts

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'chrome://settings/settings.js';

import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import type {CrIconButtonElement} from 'chrome://settings/lazy_load.js';
import type {SettingsSectionElement} from 'chrome://settings/settings.js';
import {assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
import {eventToPromise} from 'chrome://webui-test/test_util.js';

suite('SettingsSection', function() {
  let settingsSection: SettingsSectionElement;

  setup(function() {
    document.body.innerHTML = window.trustedTypes!.emptyHTML;
    settingsSection = document.createElement('settings-section');
    document.body.appendChild(settingsSection);
    flush();
  });

  test('Send feedback bubble', async function() {
    let feedback: CrIconButtonElement|null =
        settingsSection.shadowRoot!.querySelector('#feedback');
    assertFalse(!!feedback);

    settingsSection.showSendFeedbackButton = true;
    const feedbackClicked = eventToPromise('send-feedback', settingsSection);
    flush();

    feedback = settingsSection.shadowRoot!.querySelector('#feedback');
    assertTrue(!!feedback);
    feedback.click();
    await feedbackClicked;
  });
});