Saltar al contenido principal
NeuralUIv1.14.3Nuevo
GitHub
API de testing

Component Harnesses

Localiza, consulta e interactúa con controles NeuralUI sin depender de su DOM interno.

Imports públicos

Importa los harnesses desde el entry point dedicado de testing. Cubre los 71 entry points públicos interactivos; los bundles de aplicación no incluyen harnesses salvo que el código de pruebas los importe.

TypeScript
import {
  NeuAutocompleteHarness,
  NeuButtonHarness,
  NeuCheckboxHarness,
  NeuDateInputHarness,
  NeuDialogHarness,
  NeuInputHarness,
  NeuNumberInputHarness,
  NeuSelectHarness,
  NeuSwitchHarness,
  NeuTableHarness,
} from '@neural-ui/core/testing';

TestBed

Usa el entorno Testbed de Angular CDK para pruebas de componentes e integración.

TypeScript
const loader = TestbedHarnessEnvironment.loader(fixture);
const input = await loader.getHarness(NeuInputHarness);
await input.setValue('Ada');
expect(await input.getValue()).toBe('Ada');

Vitest

El mismo contrato asíncrono de harness funciona con el runner Vitest de Angular.

TypeScript
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { NeuButtonHarness } from '@neural-ui/core/testing';

it('submits with the public contract', async () => {
  const button = await loader.getHarness(NeuButtonHarness.with({ text: /save/i }));
  expect(await button.isDisabled()).toBe(false);
  await button.click();
});

Playwright

En el navegador, prioriza roles y nombres accesibles; el showcase mantiene estos selectores alineados con el contrato de harness.

TypeScript
import { test, expect } from '@playwright/test';

test('uses accessible selectors at the browser boundary', async ({ page }) => {
  await page.goto('/en/components/input');
  await page.getByRole('textbox', { name: 'Name' }).fill('Ada');
  await expect(page.getByRole('textbox', { name: 'Name' })).toHaveValue('Ada');
});

Contrato de testing estable

Los 71 entry points públicos interactivos exponen un harness. Sus localizadores son API pública y se verifican en la matriz de paquetes Angular 19–22; los 19 restantes (17 componentes no interactivos más las utilidades url-state y testing) constan explícitamente como no aplicables. El marcado interno puede evolucionar sin obligar a reescribir las pruebas consumidoras.