Files
advanced-camera-card/tests/components/notification/block.browser.test.ts
T

42 lines
1.5 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import type { IssueTriggerEventData } from '../../../src/card-controller/issues/types';
import { fireAdvancedCameraCardEvent } from '../../../src/utils/fire-advanced-camera-card-event';
import { getShadowRootHost } from '../../../src/utils/shadow-root';
import { deepQueryAll, getFocusedElement, tabUntil } from '../../browser/dom';
import { MountedCardFactory } from '../../browser/mounted-card';
import {
createGenericCameraHASS,
createStillImageCardConfig,
} from '../../browser/test-utils';
const BLOCK_ELEMENT = 'advanced-camera-card-notification-block';
const MAXIMUM_TAB_PRESSES = 15;
describe('AdvancedCameraCardNotificationBlock', () => {
it('should let the keyboard reach the retry control on an issue', async () => {
const card = await MountedCardFactory.createFromSource(
createStillImageCardConfig(),
createGenericCameraHASS(),
);
const views = await card.waitForSelector('advanced-camera-card-views');
fireAdvancedCameraCardEvent<IssueTriggerEventData>(views, 'issue:trigger', {
key: 'initialization',
error: new Error('Initialization failed'),
});
const control = await card.waitForRender(
() =>
deepQueryAll(card.card, '.control').find(
(element) => getShadowRootHost(element)?.localName === BLOCK_ELEMENT,
) ?? null,
'a control on the issue block',
);
expect(
await tabUntil(() => getFocusedElement() === control, MAXIMUM_TAB_PRESSES),
).toBe(true);
});
});