@gluonjs/test-utils


@gluonjs/test-utils / packages/test-utils/src / mountComponent

Function: mountComponent()

mountComponent<Props>(component, options): ComponentFixture<Props>

Type Parameters

Props

Props extends object

Parameters

component

FunctionalComponent<Props>

options

ComponentMountOptions<Props>

Returns

ComponentFixture<Props>

Example

Mount a functional component with reactive typed props, interact with its rendered button, update props, and clean up its owned application:

ts
import { html } from '@gluonjs/core';
import {
  mountComponent,
  renderFixture,
  type ComponentMountOptions,
  type FixtureEventRecord,
} from '@gluonjs/test-utils';

type CounterProps = { count: number; save(value: number): void };
const options = {
  name: 'counter',
  props: { count: 1, save: (value: number) => console.log(value) },
} satisfies ComponentMountOptions<CounterProps>;
const counter = mountComponent(
  ({ count, save }: CounterProps) => html`<button @click=${() => save(count)}>${count}</button>`,
  options,
);
await counter.setProps({ count: 2 });
counter.get<HTMLButtonElement>('button').click();

const event = { name: 'save', event: new CustomEvent('save', { detail: 2 }) } satisfies FixtureEventRecord;
const staticFixture = renderFixture(() => html`<p>${event.name}</p>`);
console.log(counter.text(), staticFixture.text());
staticFixture.cleanup();
counter.cleanup();