1bc0c8e6df
fluent.ts: Add public getters isCompound, compoundOperator, compoundParts to FluentRelation. Add optional CompoundState to constructor. Add CompoundPart/CompoundState interfaces. Replace 4 (this as any)._xxx property smuggles in FluentCompoundBuilder._addPart() with properly typed constructor initialization via CompoundState. fol-compiler.ts: Replace 3 (relation as any)._compoundParts / ._compoundOperator / ._isCompound duck-type reads with direct relation.compoundParts / relation.compoundOperator / relation.isCompound. extraction.ts: Replace (rel as any)._compoundParts read in getSelectorsFromAssertion with typed compoundRel.isCompound / compoundRel.compoundParts access. Eliminates 7 (as any) casts across 3 production files. Zero remaining _compoundParts/_compoundOperator/_isCompound/_originalFirstRelation smuggled references in any production source file. 598 SDK + 3 conformance + 57 E2E = 658 tests pass.
imhotep-playwright
Playwright integration layer for Imhotep. Provides page wrapping, CDP-backed geometry extraction, runtime pooling, property-based test runners, renderer adapters, and preset assertion contracts.
Key Exports
| Export | Description |
|---|---|
imhotep(page, opts) |
Attach Imhotep to a Playwright page |
imhotepComponent(id, opts) |
Property-run entry for rendered components |
imhotepStory(url, opts) |
Property-run entry for Storybook stories |
imhotepFixture(path, opts) |
Property-run entry for fixture files |
test, expect, imhotepFixtures |
Playwright test fixtures |
ContextPool, PagePool, Semaphore |
Pooled runtime for multi-worker testing |
touchTarget through modalContainment |
Reusable assertion presets |