/* * Copyright 2026 Comcast Cable Communications Management, LLC * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * SPDX-License-Identifier: Apache-2.0 */ import type { ComponentFactory, Settings } from '@lightningjs/blits' export interface SnapshotNode { type: string attributes: Record children: Array } export interface ComponentSnapshotNode { type: 'Component' name: string hasFocus: boolean isHovered: boolean attributes: Record props: Record state: Record tree: SnapshotNode | null } export interface RenderComponentOptions { props?: Record settings?: Settings } export interface RenderComponentFixture { component: any root: any snapshot(): SnapshotNode | ComponentSnapshotNode findByData(key: string, value: any): SnapshotNode | ComponentSnapshotNode | null findAllByData(key: string, value: any): Array setProps(props: Record): void setState(state: Record): void focus(event?: KeyboardEvent): Promise unfocus(): any createKeyboardEvent(key: string, init?: KeyboardEventInit): KeyboardEvent input(key: string, event?: KeyboardEvent): boolean destroy(): void } export function renderComponent( Component: ComponentFactory, options?: RenderComponentOptions ): RenderComponentFixture