36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { extractRegions, inferRegionSpec, summarizeHtml } from '../src/lib/html.js'
|
|
|
|
test('summarizeHtml extracts user-visible contract evidence', () => {
|
|
const summary = summarizeHtml(`
|
|
<title>Orders</title>
|
|
<main>
|
|
<h1>Orders</h1>
|
|
<form><label>Email</label><input name="email" required><button>Save</button></form>
|
|
</main>
|
|
`)
|
|
|
|
assert.equal(summary.title, 'Orders')
|
|
assert.deepEqual(summary.labels, ['Email'])
|
|
assert.deepEqual(summary.buttons, ['Save'])
|
|
assert.equal(summary.inputs[0].name, 'email')
|
|
assert.equal(summary.inputs[0].required, true)
|
|
})
|
|
|
|
test('extractRegions falls back to a single page region', () => {
|
|
const regions = extractRegions('<h1>Hello</h1><p>World</p>')
|
|
|
|
assert.equal(regions.length, 1)
|
|
assert.equal(regions[0].id, 'page-1')
|
|
})
|
|
|
|
test('inferRegionSpec maps forms to VForm', () => {
|
|
const [region] = extractRegions('<main><form><input name="q"><button>Search</button></form></main>')
|
|
const spec = inferRegionSpec(region)
|
|
|
|
assert.equal(spec.vuetifyComponent, 'VForm')
|
|
assert.deepEqual(spec.uiContract.primaryActions, ['Search'])
|
|
})
|
|
|