function assert(condition: unknown, message = "assertion failed"): void { if (!condition) throw new Error(message); } import { renderToStaticMarkup } from "react-dom/server"; import SearchableSelect, { filterSearchableSelectOptions } from "../src/components/SearchableSelect"; import { ReferenceMultiSelect, staticReferenceOptionProvider, wildcardReferenceOption } from "../src/components/ReferenceSelect"; import SelectionList, { SelectionListItem } from "../src/components/SelectionList"; import { PlatformLanguageProvider } from "../src/i18n/LanguageContext"; function noop() {} const markup = renderToStaticMarkup( Primary content Supporting content Disabled content ); assert(markup.includes('role="listbox"'), "the root exposes listbox semantics"); assert(markup.includes('class="selection-list domain-list"'), "root caller classes are preserved"); assert(markup.includes('data-source="inbox"'), "root native properties pass through"); assert(markup.includes('aria-label="Notifications"'), "the accessible label is translated"); assert(markup.includes('role="option"'), "items expose option semantics"); assert(markup.includes('aria-selected="true"'), "selected state is exposed accessibly"); assert(markup.includes('class="selection-list-item is-selected domain-row"'), "selected and domain classes are composed"); assert(markup.includes('draggable="true"'), "native draggable properties pass through"); assert(markup.includes('data-record-id="record-1"'), "native data properties pass through"); assert(markup.includes("Primary contentSupporting content"), "React node content is preserved"); assert(markup.includes('type="button"'), "items default to non-submitting buttons"); assert(markup.includes('aria-selected="false"'), "unselected state is exposed accessibly"); assert(markup.includes('aria-disabled="true"'), "disabled state is exposed accessibly"); assert(markup.includes('disabled=""'), "disabled state uses the native button contract"); const nativeLabelMarkup = renderToStaticMarkup( Content ); assert(nativeLabelMarkup.includes('aria-label="Already translated"'), "native accessible labels pass through unchanged"); const directoryOptions = [ { value: "account-1", label: "Ada Lovelace", description: "ada@example.test" }, { value: "group-1", label: "Finance", searchText: "cost centre" } ]; assert( filterSearchableSelectOptions(directoryOptions, "example").length === 1, "searchable selects match option descriptions" ); assert( filterSearchableSelectOptions(directoryOptions, "cost centre")[0]?.value === "group-1", "searchable selects include explicit search aliases" ); const searchableMarkup = renderToStaticMarkup( undefined} /> ); assert( searchableMarkup.includes('role="combobox"'), "searchable selects expose combobox semantics" ); assert( searchableMarkup.includes('aria-controls="assignment-target-results"'), "searchable selects associate their input and result list" ); assert( searchableMarkup.includes('value="Ada Lovelace"'), "searchable selects render labels instead of technical ids" ); const referenceMarkup = renderToStaticMarkup( undefined} selectedOptions={[ { value: "group-1", label: "Finance", description: "Access group" } ]} provider={staticReferenceOptionProvider([ { value: "group-1", label: "Finance", description: "Access group" } ])} createCustomOption={(value) => wildcardReferenceOption(value)} /> ); assert( referenceMarkup.includes("Finance"), "reference multi-selects render known labels" ); assert( referenceMarkup.includes("Pattern"), "reference multi-selects distinguish wildcard patterns" ); assert( referenceMarkup.includes("Unavailable reference"), "reference multi-selects retain unavailable values" );