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.
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.
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.
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.
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.