Adrià Arrufat
1866e7141e
SemanticTree: cast with as
...
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com >
2026-03-11 16:33:39 +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
af803da5c8
cdp.lp: use enum for getSemanticTree format param
...
Leverages std.json.parse to automatically validate the format param into a type-safe enum.
2026-03-11 16:21:43 +09:00
Adrià Arrufat
5329d05005
interactive: optimize getTextContent single-chunk path
...
Avoids an unnecessary double allocation and maintains a zero-copy fast path for single-chunk text extraction.
2026-03-11 15:27:12 +09:00
Adrià Arrufat
2e6dd3edfe
browser.EventManager: remove unused hasListener function
2026-03-11 15:18:14 +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
6c7272061c
cli: enable pruning for semantic_tree_text dump mode
...
Previously, semantic_tree_text hardcoded prune = false, which bypassed the structural node filters and allowed empty none nodes to pollute the root of the text dump.
2026-03-11 10:38:12 +09:00
Adrià Arrufat
4f262e5bed
SemanticTree: filter computed names for generic containers
...
This prevents token bloat in JSON/text dumps and ensures that StaticText leaf nodes are not incorrectly pruned when structural containers (like none, table) hoist their text.
2026-03-11 10:22:40 +09:00
Adrià Arrufat
a6ccc72d15
interactive: properly concatenate text content for accessible names
...
This fixes a bug where only the first text node was being returned, causing fragmented text nodes (e.g. <span>Sub</span><span>mit</span>) to be missing their trailing text.
2026-03-11 09:57:08 +09:00
Adrià Arrufat
d1ee0442ea
Merge branch 'main' into semantic-tree
2026-03-10 21:48:49 +09:00
Adrià Arrufat
62f31ea24a
Merge pull request #1765 from egrs/lp-get-structured-data
...
add LP.getStructuredData CDP command
2026-03-10 21:48:18 +09:00
egrs
f4ca5313e6
use std.mem.startsWith, group duplicate property keys into arrays
...
Address review feedback:
- replace custom startsWith helper with std.mem.startsWith
- writeProperties now groups repeated keys (e.g. multiple og:image)
into JSON arrays; single-occurrence keys remain strings
- add test for duplicate key serialization
2026-03-10 13:18:25 +01:00
Adrià Arrufat
064e7b404b
SemanticTree: unify interactivity detection logic
2026-03-10 19:02:55 +09:00
Karl Seguin
dfd90bd564
Merge pull request #1754 from lightpanda-io/css_value_normalization
...
Apply some normalization to CSS values
2026-03-10 17:36:27 +08:00
Pierre Tachoire
55508eb418
Merge pull request #1763 from lightpanda-io/has_direct_listener
...
Add a hasDirectListeners to EventManager
2026-03-10 10:28:39 +01:00
Pierre Tachoire
2a4fa4ed6f
Merge pull request #1762 from lightpanda-io/xml_get_elements_by_tag_name
...
Node matching using tag name string comparison on non-HTML nodes
2026-03-10 10:27:47 +01:00
Pierre Tachoire
cf7c9f6372
Merge pull request #1760 from lightpanda-io/response_blob
...
Add new Response and Request methods
2026-03-10 10:26:16 +01:00
Pierre Tachoire
ec68c3207d
Merge pull request #1764 from lightpanda-io/js_val_args
...
Better support for variadic js.Value parameter (e.g. console.log)
2026-03-10 10:16:27 +01:00
Pierre Tachoire
ecf140f3d6
Merge pull request #1766 from lightpanda-io/screenshot-size
...
cdp: reszie the screenshot to 1920x1080
2026-03-10 10:15:46 +01:00
Pierre Tachoire
13f73b7b87
Merge pull request #1750 from lightpanda-io/url_set_username_password
...
Add setters to URL.username and URL.password
2026-03-10 10:15:10 +01:00
Pierre Tachoire
12c5bcd24f
cdp: reszie the screenshot to 1920x1080
...
To be consistent w/ layout size returned
2026-03-10 10:09:53 +01:00
Adrià Arrufat
56f47ee574
Merge branch 'main' into semantic-tree
2026-03-10 17:26:34 +09:00
egrs
74f0436ac7
merge main, resolve conflicts with getInteractiveElements
2026-03-10 09:25:12 +01:00
egrs
22d31b1527
add LP.getStructuredData CDP command
2026-03-10 09:19:51 +01:00
Karl Seguin
9f3bca771a
Merge pull request #1755 from lightpanda-io/cdp-page-layout-metrics
...
cdp: add a dummy Page.getLayoutMetrics
2026-03-10 16:16:17 +08:00
Adrià Arrufat
4e16d90a81
Merge pull request #1757 from egrs/lp-get-interactive-elements
...
add LP.getInteractiveElements CDP command
2026-03-10 17:15:18 +09:00
Pierre Tachoire
d669d5c153
cdp: add a dummy Page.getLayoutMetrics
2026-03-10 08:54:48 +01:00
Karl Seguin
343d985e96
Better support for variadic js.Value parameter (e.g. console.log)
...
The bridge will prefer to map a Zig array to a JS Array, but in the case of
a []js.Value, it should be willing to map anything into it.
2026-03-10 15:40:18 +08:00
egrs
dc3958356d
address review feedback
...
- TreeWalker.Full instead of FullExcludeSelf so querying a specific
nodeId evaluates the root element itself
- resolve href to absolute URL via URL.resolve
- isDisabled checks ancestor <fieldset disabled> with legend exemption
- parameter order: allocator before *Page per convention
2026-03-10 08:13:01 +01:00
Karl Seguin
c4e85c3277
Add a hasDirectListeners to EventManager
...
Allows checking if a direct listener exists, if it doesn't, event creation can
be skipped.
I looked at a couple sites, the benefits of this is small.
Most sites don't seem to trigger that many direct dispatches and when they do,
they seem to have a listener 50-75% of the time.
2026-03-10 14:57:40 +08:00
Karl Seguin
89e46376dc
Merge pull request #1752 from lightpanda-io/build-zig-fmt-check
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
build: add code formatting check
2026-03-10 14:04:28 +08:00
Karl Seguin
8eeb34dba8
Node matching using tag name string comparison on non-HTML nodes
...
NodeLive (used by, e.g. getElementsByTagName) needs to revert to the non-
optimized string-comparison for non-HTML tags.
This should help fix https://github.com/lightpanda-io/browser/issues/1214
2026-03-10 13:42:54 +08:00
Karl Seguin
33d75354a2
Add new Response and Request methods
...
-Response.blob
-Response.clone
-Request.blob
-Request.text
-Request.json
-Request.arrayBuffer
-Request.bytes
-Request.clone
2026-03-10 09:05:06 +08: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
Karl Seguin
0e4a65efb7
Merge pull request #1758 from lightpanda-io/http-auth-challenge
...
http: handle auth challenge for non-proxy auth
2026-03-10 06:39:14 +08:00
Karl Seguin
b88134cf04
Merge pull request #1756 from lightpanda-io/cdp-screenshot
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / zig build release (push) Has been cancelled
wpt / build wpt runner (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
e2e-integration-test / zig build release (push) Has been cancelled
e2e-integration-test / demo-integration-scripts (push) Has been cancelled
cdp: add dummy page.captureScreenshot
2026-03-10 06:37:33 +08:00
Karl Seguin
2aaa212dbc
Merge pull request #1753 from lightpanda-io/document_applets
...
document.applets should always return an empty collection
2026-03-10 06:35:23 +08:00
Karl Seguin
1e37990938
Merge pull request #1741 from lightpanda-io/DOMParser_invalid_xml
...
Throw exception, as expected, on empty input to DOMParser.parseFromSt…
2026-03-10 06:32:48 +08:00
egrs
a417c73bf7
add LP.getInteractiveElements CDP command
...
Returns a structured list of all interactive elements on a page:
buttons, links, inputs, ARIA widgets, contenteditable regions, and
elements with event listeners. Includes accessible names, roles,
listener types, and key attributes.
Event listener introspection (both addEventListener and inline
handlers) is unique to LP — no other browser exposes this to
automation code.
2026-03-09 19:46:12 +01:00
Pierre Tachoire
37c34351ee
http: handle auth challenge for non-proxy auth
2026-03-09 19:23:36 +01:00
Pierre Tachoire
8672232ee2
cdp: add dummy page.captureScreenshot
2026-03-09 17:38:57 +01:00
Adrià Arrufat
83ba974f94
SemanticTree: optimize tree walking and xpath generation
...
- Use a reusable buffer for XPaths to reduce allocations.
- Improve `display: none` detection with proper CSS parsing.
- Pass parent name to children to avoid redundant AXNode lookups.
- Use `getElementById` for faster datalist lookups.
2026-03-09 22:53:39 +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
61cba3f6eb
Merge branch 'main' into semantic-tree
2026-03-09 20:13:47 +09:00
Karl Seguin
3ad10ff8d0
Add support for normalization anchor-size css value
...
vibed this. Seems esoteric, but it helps over 1000 WPT cases pass in
/css/css-anchor-position/anchor-size-parse-valid.html
2026-03-09 18:25:01 +08:00
Karl Seguin
183643547b
document.applets should always return an empty collection
...
Add a new .empty mode to HTMLCollection.
Fixes WPT /shadow-dom/leaktests/html-collection.html
2026-03-09 18:06:22 +08:00
Adrià Arrufat
5568340b9a
build: add code formatting check
2026-03-09 18:48:38 +09:00
Karl Seguin
1399bd3065
Apply some normalization to CSS values
...
"10px 10px" should present as "10px". A length of "0" should present as "0px"
Fixes a handful of WPT tests.
2026-03-09 17:47:59 +08:00
Karl Seguin
9172e16e80
Merge pull request #1751 from lightpanda-io/zig-fmt-face
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
zig fmt
2026-03-09 17:34:17 +08:00
Adrià Arrufat
3e5f602396
zig fmt
2026-03-09 18:25:09 +09:00