v1.1.0: repo polish, CI fixes, version alignment, dead artifact cleanup
Root package: renamed to imhotep-monorepo, fixed broken scripts (test:unit/integration/e2e), removed inappropriate root deps, fixed build order, updated clean script CI: branch trigger main->master, npm ci->npm install, GitHub cache URL->Gitea Docs: replaced scaffolded root README with real project README, added package READMEs for imhotep/imhotep-playwright/imhotep-dsl/imhotep-core, added RELEASE.md checklist Version: all 14 packages and root aligned to 1.1.0, CHANGELOG test count fixed (1125) Metadata: 14 repository URLs github->gitea, 13 package descriptions added, imhotep-cli exports field added, SECURITY.md updated for Gitea+disclosure email Quality: noEmitOnError:true in 13 tsconfigs, collapsed duplicate interfaces in public.ts, clippedBy test->test.skip, fixed broken dynamic import in imhotep index.test.ts, 694 generated src artifacts cleaned, V8 logs removed, .gitignore updated
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-bench",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Performance benchmarks and profiling tools",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"composite": false,
|
||||
"paths": {},
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-cdp",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Chrome DevTools Protocol session management and DOM query primitives",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-cli",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Scaffolding CLI with framework presets",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
@@ -22,6 +23,12 @@
|
||||
"build": "tsc -p tsconfig.json",
|
||||
"test": "node --test dist/**/*.test.js"
|
||||
},
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"default": "./dist/index.js"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"imhotep-core": "^1.0.0",
|
||||
"imhotep-playwright": "^1.0.0"
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# imhotep-core
|
||||
|
||||
Foundation types and contracts for [Imhotep](https://gitea.com/anomalyco/imhotep). Defines the AST/IR, geometry world schema, diagnostic taxonomy, pipeline contracts, FOL AST/IR representations, domain/value types, scene target descriptors, property contract/results types, and geometry snapshot caching.
|
||||
|
||||
## Key Exports
|
||||
|
||||
| Module | Description |
|
||||
|---|---|
|
||||
| `types` | Core type definitions (positions, IDs, results, proofs) |
|
||||
| `ast` | Unist-style AST node definitions |
|
||||
| `ir` | Semantic IR and execution IR |
|
||||
| `world` | Geometry world schema tables |
|
||||
| `contracts` | Extractor, solver, compiler, reporter interfaces |
|
||||
| `diagnostics` | Diagnostic categories, error codes, traces, shrinking |
|
||||
| `logic-ast` | FOL AST types (quantifiers, connectives, predicates) |
|
||||
| `logic-ir` | Lowered FOL IR for logic engine |
|
||||
| `canonical` | Canonical world adapter for solver |
|
||||
| `geometry-cache` | Disk-based extraction caching |
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-core",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Foundation types, AST/IR contracts, diagnostics, and geometry world schema",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"compilerOptions": {
|
||||
"composite": false,
|
||||
"noEmit": true,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
# imhotep-dsl
|
||||
|
||||
Domain-specific language for [Imhotep](https://gitea.com/anomalyco/imhotep) assertions. Provides a fluent assertion API, a dense string-based DSL parser, FOL compilation/validation, canonical lowering, and property-run builders.
|
||||
|
||||
## Key Exports
|
||||
|
||||
| Export | Description |
|
||||
|---|---|
|
||||
| `expect(subject)` | Fluent assertion builder |
|
||||
| `spec(src)` | Dense DSL parser (`parseSpec` alias) |
|
||||
| `compile(source)` | Compile DSL to assertion nodes |
|
||||
| `compileDenseFOLToFormula(src)` | Compile dense FOL to solver-ready AST |
|
||||
| `validateAssertion(node)` | Pre-flight validation without extraction |
|
||||
| `lowerToCanonical(nodes)` | Canonical lowering for IR equivalence |
|
||||
| `component`, `enumerate` | Property-run fluent builders |
|
||||
| `forAll`, `exists`, `predicate`, `domain` | FOL fluent builders |
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-dsl",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Fluent API, dense DSL parser, FOL compiler, and assertion validator",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-extractor",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "DOM and geometry extraction with fact planning",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-fixtures",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "E2E test harness and fixture pages",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -188,23 +188,8 @@ test.describe('Edge Feature Tests', () => {
|
||||
// ───────────────────────────────────────────────
|
||||
// Topology: clippedBy
|
||||
// ───────────────────────────────────────────────
|
||||
test('clippedBy - check if documented/exists', async ({ page }) => {
|
||||
const ui = await imhotep(page)
|
||||
await loadTestPage(page)
|
||||
|
||||
// clippedBy is mentioned in docs but may not be implemented.
|
||||
// Test whether it exists on the be proxy.
|
||||
const be = ui.expect('[data-testid="modal"]').to.be as any
|
||||
const hasClippedBy = typeof be.clippedBy === 'function'
|
||||
|
||||
if (hasClippedBy) {
|
||||
;(ui.expect('[data-testid="modal"]').to.be as any).clippedBy('[data-testid="container"]')
|
||||
const result = await ui.checkAll()
|
||||
expect(result.passed).toBe(true)
|
||||
} else {
|
||||
console.log('clippedBy is NOT implemented on be proxy')
|
||||
expect(hasClippedBy).toBe(false)
|
||||
}
|
||||
test.skip('clippedBy - documented but not yet implemented', async () => {
|
||||
// TODO: implement clippedBy topology predicate
|
||||
})
|
||||
|
||||
// ───────────────────────────────────────────────
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
],
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-geometry",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Bounding-box computation, rect algebra, and transform math",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
# imhotep-playwright
|
||||
|
||||
Playwright integration layer for [Imhotep](https://gitea.com/anomalyco/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 |
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-playwright",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Playwright integration with CDP extraction, runtime pooling, and property runners",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -208,12 +208,14 @@ export interface ComponentOptions {
|
||||
renderer: RendererDescriptor
|
||||
props?: unknown
|
||||
env?: ImhotepPageOptions
|
||||
fc?: FastCheckAdapter
|
||||
}
|
||||
|
||||
export interface StoryOptions {
|
||||
storybookUrl: string
|
||||
args?: unknown
|
||||
env?: ImhotepPageOptions
|
||||
fc?: FastCheckAdapter
|
||||
}
|
||||
|
||||
export interface FixtureOptions {
|
||||
@@ -223,20 +225,6 @@ export interface FixtureOptions {
|
||||
fixturesDir?: string
|
||||
}
|
||||
|
||||
export interface ComponentOptions {
|
||||
renderer: RendererDescriptor
|
||||
props?: unknown
|
||||
env?: ImhotepPageOptions
|
||||
fc?: FastCheckAdapter
|
||||
}
|
||||
|
||||
export interface StoryOptions {
|
||||
storybookUrl: string
|
||||
args?: unknown
|
||||
env?: ImhotepPageOptions
|
||||
fc?: FastCheckAdapter
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Property Run Handles
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
],
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-reporter",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Diagnostic formatting, failure analysis, replay, and shrinking",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-solver",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "First-order logic constraint solver with directional and spatial predicates",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-state",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "ARIA and native element state materialization",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "imhotep-topology",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Stacking context evaluation, ancestor chains, and paint ordering",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"rootDir": "./src",
|
||||
"paths": {},
|
||||
"composite": false,
|
||||
"noEmitOnError": false
|
||||
"noEmitOnError": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# imhotep
|
||||
|
||||
Meta-package for [Imhotep](https://gitea.com/anomalyco/imhotep) — declarative, relational UI testing for web applications.
|
||||
|
||||
```bash
|
||||
npm install imhotep
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```typescript
|
||||
import { imhotep, imhotepComponent, imhotepStory } from 'imhotep';
|
||||
|
||||
const ui = await imhotep(page);
|
||||
ui.expect('.header').to.be.above('.content', { minGap: 16 });
|
||||
const result = await ui.checkAll();
|
||||
```
|
||||
|
||||
## Exports
|
||||
|
||||
| Export | Source |
|
||||
|---|---|
|
||||
| `imhotep` | `imhotep-playwright` |
|
||||
| `imhotepComponent` | `imhotep-playwright` |
|
||||
| `imhotepStory` | `imhotep-playwright` |
|
||||
| `imhotepFixture` | `imhotep-playwright` |
|
||||
| `dslExpect` | `imhotep-dsl` |
|
||||
| `spec` | `imhotep-dsl` |
|
||||
| `evaluate` | `imhotep-solver` |
|
||||
| `enumeratedDomain`, `generatedDomain` | `imhotep-core` |
|
||||
| `createDeterministicContext` | `imhotep-core` |
|
||||
| `touchTarget` through `modalContainment` | `imhotep-playwright` |
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "imhotep",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"description": "Declarative relational UI testing for web apps",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/anomalyco/imhotep.git"
|
||||
"url": "https://gitea.com/anomalyco/imhotep.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
|
||||
@@ -3,6 +3,6 @@ import assert from 'node:assert'
|
||||
|
||||
// Meta-package sanity check: ensure exports resolve
|
||||
test('meta-package exports resolve', async () => {
|
||||
const { imhotep } = await import('../src/index.js')
|
||||
const { imhotep } = await import('./index.js')
|
||||
assert.strictEqual(typeof imhotep, 'function')
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user