Adrià Arrufat
21fc6d1cf6
cdp: explain buffer size for int serialization
2026-03-16 09:41:28 +09:00
Matt Van Horn
5bc00045c7
fix: serialize AXValue integer as string per CDP spec
...
The CDP Accessibility spec defines AXValue.value as always being a
string, but integer values were serialized as JSON numbers. This
breaks CDP clients with strict deserialization (e.g., Rust serde).
Fixes #1822
2026-03-14 14:09:49 -07:00
Adrià Arrufat
37735b1caa
SemanticTree: use StaticStringMap for structural role check
...
Improves performance and readability of isStructuralRole. Also includes minor syntax cleanup in AXNode.
2026-03-11 16:37:24 +09:00
Adrià Arrufat
feccc9f5ce
AXNode: remove unused mock JSON lifecycle methods
...
Simplifies TextCaptureWriter by removing unused methods, ensuring future changes to writeName will fail at build time if new methods are required.
2026-03-11 16:25:34 +09:00
Adrià Arrufat
ca931a11be
AXNode: add spacing between concatenated text nodes
...
When calculating accessible names for elements without explicit labels, multiple descendant text nodes were previously concatenated directly together. This adds a space between distinct text node contents to prevent words from sticking together.
2026-03-11 10:45:07 +09:00
Adrià Arrufat
064e7b404b
SemanticTree: unify interactivity detection logic
2026-03-10 19:02:55 +09:00
Adrià Arrufat
a318c6263d
SemanticTree: improve visibility, AX roles and xpath generation
...
- Use `checkVisibility` for more accurate element visibility detection.
- Add support for color, date, file, and month AX roles.
- Optimize XPath generation by tracking sibling indices during the walk.
- Refine interactivity detection for form elements.
2026-03-10 09:23:06 +09:00
Adrià Arrufat
85ebbe8759
SemanticTree: improve accessibility tree and name calculation
...
- Add more structural roles (banner, navigation, main, list, etc.).
- Implement fallback for accessible names (SVG titles, image alt text).
- Skip children for leaf-like semantic nodes to reduce redundancy.
- Disable pruning in the default semantic tree view.
2026-03-09 21:04:47 +09:00
Adrià Arrufat
c3a53752e7
CDP: simplify AXNode name extraction logic
2026-03-09 15:34:59 +09:00
Adrià Arrufat
b8139a6e83
CDP/MCP: improve Stagehand compatibility for semantic tree
2026-03-08 15:48:44 +09:00
Adrià Arrufat
e0f0b9f210
SemanticTree: use AXRole enum for interactive role check
2026-03-06 16:26:08 +09:00
Adrià Arrufat
0f46277b1f
CDP: implement LP.getSemanticTree for native semantic DOM extraction
2026-03-06 15:29:32 +09:00
Karl Seguin
a19a125aec
Remove unused import
...
And a few unused functions
2026-01-29 19:44:10 +08:00
Karl Seguin
a3d2dd8366
Convert most Attribute related calls from []const u8 -> String
2026-01-26 07:52:27 +08:00
Karl Seguin
16ef487871
Make "Safe" variants of Attribute work on String
2026-01-26 07:52:27 +08:00
Pierre Tachoire
4325b80d64
axnode: small fixes
2026-01-16 17:30:43 +01:00
Pierre Tachoire
2074c0149f
axnode: add aria-labelledby support
2026-01-16 09:01:39 +01:00
Pierre Tachoire
61ed97dd45
axnode: use writeString for content's name
2026-01-16 09:00:57 +01:00
Pierre Tachoire
a358c46b9f
axnode: ignore script and style children
2026-01-16 08:28:16 +01:00
Pierre Tachoire
50c1e2472b
axnode: encode json string into stripWhitespaces
2026-01-16 08:27:43 +01:00
Pierre Tachoire
d50e056114
axnode: ignore non-html tags
2026-01-15 16:42:40 +01:00
Pierre Tachoire
d7d956d966
axnode: fix invalid enum
2026-01-15 15:40:52 +01:00
Pierre Tachoire
bd3966bf8d
axnode: add focus on webroot
2026-01-15 15:37:49 +01:00
Pierre Tachoire
74578ba274
axnode: implement list marker
2026-01-15 15:37:49 +01:00
Pierre Tachoire
cb89742d2f
axnode: add li level
2026-01-15 15:37:48 +01:00
Pierre Tachoire
6d0f991c17
axnode: add hr properties
2026-01-15 15:37:48 +01:00
Pierre Tachoire
d126d2a0f9
axnode: ignore hidden input
2026-01-15 15:37:47 +01:00
Pierre Tachoire
b51cca5617
axnode: use select.getValue
2026-01-15 15:37:47 +01:00
Pierre Tachoire
dc54dad290
axnode: add more attributes for input elements
2026-01-15 15:37:47 +01:00
Pierre Tachoire
7d6ab5a708
axnode: force manual formatting in switches
...
In order to uses less space and improve the readability.
zig fmt allows only 1 switch case per line or all in one line.
When having a lot of conditions, splitting the line is useful.
2026-01-15 15:37:46 +01:00
Pierre Tachoire
07acb9308d
axnode: fallback button name to their tagname
2026-01-15 15:37:46 +01:00
Pierre Tachoire
ef315a46bc
axnode: don't extract all text content as name
...
ignore name extraction for more elements
2026-01-15 15:37:45 +01:00
Pierre Tachoire
eb45bd051c
axtree: simpler AXValue
2026-01-15 15:37:45 +01:00
Pierre Tachoire
65102edc98
axtree: remove useless error return
2026-01-15 15:37:44 +01:00
Pierre Tachoire
04eda96416
axtree: reverse writeNode return logic
2026-01-15 15:37:44 +01:00
Pierre Tachoire
f5036bdf5e
axtree: use a simpler union switch
2026-01-15 15:37:44 +01:00
Pierre Tachoire
b6df85da7a
axtree: add improvements
2026-01-15 15:37:43 +01:00
Pierre Tachoire
9775b39a8d
axnode: use absolute urls
2026-01-15 15:37:43 +01:00
Pierre Tachoire
d6d74c5024
first version of AXTree
2026-01-15 15:37:42 +01:00