feat(vom): vom fix

This commit is contained in:
Ljy-0827
2026-07-27 14:53:10 +08:00
parent 4fb2e331a6
commit c002c394e6
6 changed files with 154 additions and 24 deletions
+21
View File
@@ -115,6 +115,27 @@ describe("detectBlockingLayer", () => {
expect(layer?.kind).toBe("modal");
});
it("detects modal features regardless of role or tag casing", () => {
const layer = detectBlockingLayer(
[
node({ id: 1, tag: "body", rect: { x: 0, y: 0, w: 1000, h: 800 } }),
node({
id: 2,
parentId: 1,
tag: "DIV",
role: "Dialog",
rect: { x: 300, y: 200, w: 400, h: 300 },
paintOrder: 90,
position: "fixed",
}),
],
VP,
);
expect(layer?.rootId).toBe(2);
expect(layer?.kind).toBe("modal");
});
it("ignores small toasts and pointer-events:none covers", () => {
expect(
detectBlockingLayer(
+18
View File
@@ -87,6 +87,24 @@ describe("renderVom single-layer page", () => {
expect(out.refs).toEqual([{ ref: "e1", backendNodeId: 2 }]);
});
it("annotates external links regardless of role casing", () => {
const out = renderVom(
scene([
node({ id: 1, role: "RootWebArea", name: "Doc" }),
node({
id: 2,
parentId: 1,
role: "Link",
name: "Docs",
href: "docs.example.org",
tag: "a",
}),
]),
);
expect(out.text).toContain('@e1 Link "Docs" [→ docs.example.org]');
});
it("renders additional structural roles without assigning refs", () => {
const out = renderVom(
scene([