// Copyright 2021 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://new-tab-page/strings.m.js';
import {getDeepActiveElement} from 'chrome://resources/js/util.js';
import {assertEquals, assertNotEquals} from 'chrome://webui-test/chai_assert.js';
import {keyDownOn} from 'chrome://webui-test/keyboard_mock_interactions.js';
export function $$<E extends Element = Element>(
element: HTMLElement, query: string): E {
return element.shadowRoot!.querySelector<E>(query)!;
}
export function keydown(element: Element, key: string) {
keyDownOn(element, 0, [], key);
}
/**
* Asserts the computed style value for an element.
* @param name The name of the style to assert.
* @param expected The expected style value.
*/
export function assertStyle(element: Element, name: string, expected: string) {
const actual = window.getComputedStyle(element).getPropertyValue(name).trim();
assertEquals(expected, actual);
}
/**
* Asserts the computed style for an element is not value.
* @param name The name of the style to assert.
* @param not The value the style should not be.
*/
export function assertNotStyle(element: Element, name: string, not: string) {
const actual = window.getComputedStyle(element).getPropertyValue(name).trim();
assertNotEquals(not, actual);
}
/**
* Asserts that an element is focused.
* @param element The element to test.
*/
export function assertFocus(element: Element) {
assertEquals(element, getDeepActiveElement());
}