Commit Graph
5327 Commits
Author SHA1 Message Date
Pierre Tachoire e412dfed2f Add HTMLElement.title property
Reflects the `title` HTML attribute as a getter/setter on HTMLElement.
2026-04-01 09:15:34 +02:00
Karl Seguin f4802b49e8 Merge pull request #2055 from lightpanda-io/document-dir
Add HTMLElement.dir and HTMLElement.lang properties
2026-04-01 06:46:06 +08:00
Karl Seguin a26f544509 Merge pull request #2054 from lightpanda-io/nikneym/url-search-params-array-constructor
`URLSearchParams`: support passing arrays to constructor
2026-04-01 06:45:14 +08:00
Karl Seguin 469a6ecaea Merge pull request #2051 from lightpanda-io/structureClone_host_object
Provide a failing callback to ValueSerializer for host objects
2026-03-31 22:33:54 +08:00
Pierre Tachoire 68e2140bb3 Add HTMLElement.dir and HTMLElement.lang properties
Added as attribute-backed accessors on HTMLElement (inherited by all
HTML elements) and on HTMLDocument (delegates to documentElement).
2026-03-31 16:12:26 +02:00
Halil Durak 94b003804b URLSearchParams: update tests 2026-03-31 16:01:21 +03:00
Halil Durak b41c86e104 URLSearchParams: support passing arrays to constructor 2026-03-31 16:01:08 +03:00
Karl Seguin 4ad8282e75 Merge pull request #2047 from lightpanda-io/fancy-wait
Add --wait-selector, --wait-script and --wait-script-file options to …
2026-03-31 20:59:48 +08:00
Karl Seguin 3d624a97a7 Merge pull request #2052 from lightpanda-io/xhr_expand_ref
Expand the lifetime of the XHR reference
2026-03-31 20:59:28 +08:00
Karl Seguin 571c346316 use releaseSelfRef on done just to be extra safe 2026-03-31 20:39:11 +08:00
Karl SeguinandAdrià Arrufat af19cbc726 use remaining instead of timeout_ms, else, what's the point?
Co-authored-by: Adrià Arrufat <1671644+arrufat@users.noreply.github.com>
2026-03-31 19:42:32 +08:00
Karl Seguin 9716150530 rename has_ref -> active_request 2026-03-31 19:15:01 +08:00
Karl Seguin 20cadd2282 Merge pull request #2053 from lightpanda-io/remove_dead_code
remove dead code
2026-03-31 18:24:48 +08:00
Karl Seguin 4c4f395b1e Merge pull request #2036 from lightpanda-io/remove_cdp_generics
Removing remaining CDP generic
2026-03-31 17:54:34 +08:00
Karl Seguin 26653120fa Removing remaining CDP generic
Follow up to https://github.com/lightpanda-io/browser/pull/1990 which makes
both BrowserContext and Command non-generic.
2026-03-31 16:53:58 +08:00
Karl Seguin a4a024ce9c remove dead code 2026-03-31 16:48:47 +08:00
Karl Seguin 492fd86bad Expand the lifetime of the XHR reference
We need to take the self-reference to the XHR object as soon as the request is
made. Previously, we were waiting until we got the start callback, but v8 could
(and does) drop the reference before that happens. Unfortunately, that means
we can no longer use _transfer == null to tell if we own a reference or not, so
a new boolean was added.
2026-03-31 16:46:31 +08:00
Karl Seguin c3c465347d Provide a failing callback to ValueSerializer for host objects
V8 needs our help when serializing host (e.g. a Zig dom instance) objects. We
don't currently have this implemented, so this provides the callback that throws
an error. Our wrapper returns Nothing when no callback is provided, which v8
doesn't allow (via assertion).
2026-03-31 16:13:55 +08:00
Adrià Arrufat 55666ab7cd Merge pull request #2049 from lightpanda-io/refactor/getNodeDetails-param-order
SemanticTree: reorder getNodeDetails params
2026-03-31 07:58:28 +02:00
Adrià Arrufat 008235222b SemanticTree: reorder getNodeDetails params 2026-03-31 07:29:33 +02:00
Adrià Arrufat b03dbc77ab Merge pull request #2048 from lightpanda-io/feature/semantic-tree-checked-state
SemanticTree: add checked state to node data and output
2026-03-31 07:08:36 +02:00
Adrià Arrufat fc057a3bb3 SemanticTree: add checked state to node data and output 2026-03-31 06:43:01 +02:00
Karl Seguin ab6c63b24b Add --wait-selector, --wait-script and --wait-script-file options to fetch
These new optional parameter run AFTER --wait-until, allowing the (imo) useful
combination of `--wait-until load --wait-script "report.complete === true"`.
However, if `--wait-until` IS NOT specified but `--wait-selector/script` IS,
then there is no default wait and it'll just check the selector/script. If
neither `--wait-selector` or `--wait-script/--wait-script-file` are specified
 then  `--wait-until` continues to default to `done`.

These waiters were added to the Runner, and the existing Action.waitForSelector
now uses the runner's version. Selector querying has been split into distinct
parse and query functions, so that we can parse once, and query on every tick.

We could potentially optimize --wait-script to compile the script once and call
it on each tick, but we'd have to detect page navigation to recompile the script
in the new context. Something I'd rather optimize separately.
2026-03-31 12:30:46 +08:00
Adrià Arrufat 16f17ead9a Merge pull request #2045 from lightpanda-io/semantic-tree-node-details
SemanticTree: Add nodeDetails tool
2026-03-31 05:28:24 +02:00
Adrià Arrufat 367d20d39f SemanticTree: simplify lp.String.wrap calls 2026-03-31 05:20:32 +02:00
Karl Seguin a6a8752787 Merge pull request #2032 from lightpanda-io/cdp_navigation_event_order
Improve/Fix CDP navigation event order
2026-03-31 07:12:14 +08:00
Karl Seguin 568fa25add Remove DOMContentLoaded and Loaded events from page_navigated
These were moved to their own distinct events, and should have been removed from
here.
2026-03-31 06:56:01 +08:00
Karl Seguin 752184b12b Improve/Fix CDP navigation event order
These changes all better align with chrome's event ordering/timing.

There are two big changes. The first is that our internal page_navigated event,
which is kind of our heavy hitter, is sent once the header is received as
opposed to (much later) on document load. The main goal of this internal event
is to trigger the "Page.frameNavigated" CDP event which is meant to happen
once the URL is committed, which _is_ on header response.

To accommodate this earlier trigger, new explicit events for DOMContentLoaded
and load have be added.

This drastically changes the flow of events as things go from:
Start Page Navigation
Response Received
  Start Frame Navigation
  Response Received
  End Frame Navigation
End Page Navigation
context clear + reset
DOMContentLoaded
Loaded

TO:
Start Page Navigation
Response Received
End Page Navigation
context clear + reset
Start Frame Navigation
Response Received
End Frame Navigation
DOMContentLoaded
Loaded

So not only does it remove the nesting, but it ensures that the context are
cleared and reset once the main page's navigation is locked in, and before any
frame is created.
2026-03-31 06:56:00 +08:00
Pierre Tachoire 47afdc003a Merge pull request #2044 from lightpanda-io/proxy-auth-challenge
http: add connect code into auth challenge detection
2026-03-30 17:18:56 +02:00
Adrià Arrufat 9c8fe9b20f SemanticTree: Add nodeDetails tool
Adds a tool to retrieve detailed node metadata and updates the
semantic tree to track and display the disabled state of elements.
2026-03-30 16:38:23 +02:00
Pierre Tachoire 7606528b37 ci: fix request interception proxy challenge 2026-03-30 15:32:38 +02:00
Pierre Tachoire 9ca6bf42ae http: add connect headers to auth challenge detection 2026-03-30 15:17:12 +02:00
Pierre Tachoire a272a2c314 http: add connect code into auth challenge detection 2026-03-30 15:08:36 +02:00
katie-lpd cafa16d190 Update README.md
Updating benchmark text to fit the image
2026-03-30 13:38:46 +02:00
Pierre Tachoire a5ed3cdaee Merge pull request #2042 from lightpanda-io/security.md
add SECURITY.md
2026-03-30 11:30:42 +02:00
Pierre Tachoire b473f0e681 add SECURITY.md 2026-03-30 11:28:46 +02:00
Karl Seguin be7226fc7b Merge pull request #2024 from lightpanda-io/finalizers
Rework finalizers
2026-03-30 17:03:08 +08:00
Karl Seguin 5cd356631c unregister before releasingRef to avoid potential use-after-free 2026-03-30 15:42:08 +08:00
Pierre Tachoire 8723ecdd2d Merge pull request #2028 from lightpanda-io/http_client_safe_kill
Protect transfer.kill() the way transfer.abort() is protected
2026-03-30 09:22:40 +02:00
Pierre Tachoire 451178558a Merge pull request #2026 from lightpanda-io/invalid_access_dom_exception
Add missing InvalidAccessError DOMException mapping
2026-03-30 09:21:51 +02:00
Karl Seguin 70dc0f6b95 Merge pull request #2027 from lightpanda-io/mcp-protocol-version
mcp: allow configuring protocol version
2026-03-30 13:38:06 +08:00
Adrià Arrufat d99599fa21 zig fmt 2026-03-30 07:24:08 +02:00
Adrià Arrufat 20e62a5551 mcp: inline mcpVersion helper from Config 2026-03-30 07:13:45 +02:00
Adrià Arrufat e083d4a3d1 Config: remove LIGHTPANDA_MCP_VERSION env var 2026-03-30 07:07:23 +02:00
Karl Seguin 7a23686cbd Merge pull request #2033 from lightpanda-io/canvas_context_cache
Canvas context cache
2026-03-30 12:27:04 +08:00
Karl Seguin 25889ff918 Improve canvas context caching
Improve https://github.com/lightpanda-io/browser/pull/2022 to also cache webgl
context and add tests.
2026-03-30 12:14:32 +08:00
Karl Seguin b4e3f246ca Merge remote-tracking branch 'evan108108/fix/canvas-getcontext-caching' into canvas_context_cache 2026-03-30 11:58:45 +08:00
Karl Seguin 8eeeeda8c1 Merge pull request #2021 from evan108108/fix/navigator-spec-compliance
fix: navigator.languages should include base language per spec
2026-03-30 11:40:49 +08:00
Karl Seguin 75dc4d5b0e Merge pull request #2031 from lightpanda-io/cdp-add-script-to-evaluate-on-new-document
Cdp add script to evaluate on new document
2026-03-30 11:16:39 +08:00
Karl Seguin 0d40aed1b7 zig fmt 2026-03-30 09:32:22 +08:00