Commit Graph
5165 Commits
Author SHA1 Message Date
Karl Seguin ca41bb5fa2 fix import casing 2026-03-25 17:54:24 +08:00
Karl Seguin 0dd0495ab8 Removes CDPT (generic CDP)
CDPT used to be a generic so that we could inject Browser, Session, Page and
Client. At some point, it [thankfully] became a generic only to inject Client.

This commit removes the generic and bakes the *Server.Client instance in CDP.
It uses a socketpair for testing.

BrowserContext is still generic, but that's generic for a very different reason
and, while I'd like to remove that generic too, it belongs in a different PR.
2026-03-25 17:43:30 +08:00
Karl Seguin d517488158 Merge pull request #1979 from lightpanda-io/dash-command-line-arguments
Support (and prefer) dash-separated command line arguments
2026-03-24 17:12:09 +08:00
Karl Seguin fee8fe7830 Merge pull request #1978 from lightpanda-io/eventually_rename_onload
Rename testing.eventually to testing.onload, to make it more clear
2026-03-24 17:11:49 +08:00
Karl Seguin 428190aecc Merge pull request #1972 from lightpanda-io/fix-issue-1970
Fix Expo Web crash by gracefully handling at-rules in CSSStyleSheet.insertRule
2026-03-24 13:52:09 +08:00
Karl Seguin 61dabdedec Support (and prefer) dash-separated command line arguments
--log_level -> --log-level

Underscored arguments are still supported for backwards compatibility.
2026-03-24 12:55:08 +08:00
Karl Seguin dfd9f216bd Rename testing.eventually to testing.onload, to make it more clear 2026-03-24 12:21:46 +08:00
Adrià Arrufat 0bfe00bbb7 css: disallow multiple rules in insertRule 2026-03-24 12:53:49 +09:00
Adrià Arrufat fd96cd6eb9 chore(css): log unimplemented at-rules in insertRule 2026-03-24 09:20:21 +09:00
Adrià Arrufat 25a7b5b778 Merge pull request #1977 from lightpanda-io/check_dirty_once
Only check StyleSheet dirty flag at the start (once) of operation
2026-03-24 09:12:10 +09:00
Karl Seguin d4bcfa974f Only check StyleSheet dirty flag at the start (once) of operation 2026-03-24 07:55:11 +08:00
Karl Seguin c91eac17d0 Merge pull request #1975 from lightpanda-io/percent-encode-path
fix: percent-encode pathname in URL.setPathname per URL spec
2026-03-24 07:41:27 +08:00
Karl Seguin 5c79961bb7 Merge pull request #1969 from lightpanda-io/fix_append_child_crash
Handle `appendAllChildren` mutating the list of children
2026-03-24 07:29:16 +08:00
Karl Seguin a0c200bc49 Merge pull request #1968 from lightpanda-io/document_write_deleted_parent
Handle nested document.write where parent gets deleted
2026-03-24 07:29:08 +08:00
Karl Seguin 9ea39e1c34 Merge pull request #1967 from lightpanda-io/css_anchor_normalization
Anchor(...) css property normalization
2026-03-24 07:28:59 +08:00
Karl Seguin f7125d2bf3 Merge pull request #1964 from lightpanda-io/currentSrc
Add Image.currentSrc and Media.currentSrc
2026-03-24 07:28:51 +08:00
Karl Seguin b163d9709b Merge pull request #1959 from lightpanda-io/form_iterator
Expose form.iterator()
2026-03-24 07:28:31 +08:00
Karl Seguin 5453630955 Merge pull request #1958 from lightpanda-io/runner
Extract Session.wait into a Runner
2026-03-24 07:28:18 +08:00
Pierre Tachoire 8ada67637f fix: precent-encode hash and search 2026-03-23 17:22:50 +01:00
Adrià Arrufat 5972630e95 Update CSS parser to track skipped at-rules and refine insertRule logic 2026-03-24 00:54:20 +09:00
Pierre Tachoire 58c18114a5 fix: percent-encode pathname in URL.setPathname per URL spec
URL.setPathname() inserted the value verbatim without percent-encoding,
so `url.pathname = "c d"` produced `http://a/c d` instead of
`http://a/c%20d`. This caused sites using URL polyfills (e.g. Angular's
polyfills bundle) to detect broken native URL support and fall back to a
polyfill that relies on HTMLInputElement.checkValidity(), which is not
implemented — crashing the entire app bootstrap.
2026-03-23 16:52:39 +01:00
Pierre Tachoire a94b0bec93 Merge pull request #1946 from lightpanda-io/cdp-response-body
Encode non-utf8 Network.getResponseBody in base64
2026-03-23 16:46:12 +01:00
Adrià Arrufat ff0fbb6b41 Fix Expo Web crash by gracefully handling at-rules in CSSStyleSheet.insertRule 2026-03-23 23:45:11 +09:00
Pierre Tachoire 797cae2ef8 encode captured response body during CDP call 2026-03-23 14:26:27 +01:00
Karl Seguin 433c03c709 Handle appendAllChildren mutating the list of children
`appendAllChildren` iterates through the children, but when a child is appended
it can mutate the DOM (only via a custom element connected callback AFAIK) which
can render the iterator invalid. Constantly get parent.firstChild() as the
target.
2026-03-23 21:16:11 +08:00
Karl Seguin 4d3e9feaf4 Handle nested document.write where parent gets deleted
Handles a real life case where a nested document.write mutates the DOM in a way
where there outer document.write loses its parent.
2026-03-23 21:00:02 +08:00
Karl Seguin 5700e214bf Merge pull request #1966 from lightpanda-io/mcp_tools_test
Improve MCP tools test
2026-03-23 20:47:42 +08:00
Karl Seguin 88d40a7dcd Anchor(...) css property normalization
Expands on https://github.com/lightpanda-io/browser/pull/1754 to do for
anchor(...) what we did for anchor-size(...)

fixes a number of WPT tests in:
/css/css-anchor-position/anchor-parse-valid.html
2026-03-23 20:32:03 +08:00
Karl Seguin ff209f5adf Merge pull request #1955 from lightpanda-io/advertise_host
Add --advertise_host option to serve command
2026-03-23 20:00:42 +08:00
Pierre Tachoire 8ad092a960 Merge pull request #1965 from lightpanda-io/katie-lpd-patch-1
Update README.md
2026-03-23 12:20:16 +01:00
Karl Seguin 0fcdc1d194 Improve MCP tools test
Add helper to navigate to page, to reduce the boilerplate in each test.

Reduce waitForSelector time from 200ms to 20ms to speed up tests.
2026-03-23 19:15:50 +08:00
Karl Seguin 60c2359fdd Merge pull request #1797 from lightpanda-io/css-improvements
Implement CSSOM and Enhanced Visibility Filtering
2026-03-23 19:11:35 +08:00
katie-lpd 08c8ba72f5 Update README.md
Update benchmark images and text to real benchmark over the network
2026-03-23 12:05:44 +01:00
Karl Seguin cfa4201532 Add Image.currentSrc and Media.currentSrc 2026-03-23 18:20:15 +08:00
Karl Seguin cb02eb000e Merge pull request #1961 from lightpanda-io/test_runner_fail_summary
Print summary of failed tests name at end of test runner
2026-03-23 18:13:37 +08:00
Karl Seguin 23334edc05 Merge pull request #1963 from lightpanda-io/nested_navigation
Use double-queue to better support recursive navigation
2026-03-23 18:13:18 +08:00
Karl Seguin 8dbe22a01a Use double-queue to better support recursive navigation
Enqueuing while processing the navigation queue is rare, but apparently can
happen. The most likely culprit is the microqueue task being processed which
enqueues a new navigation (e.g. when a promise resolves).

This was never well handled, with the possibility of a use-after-free or of
skipping the new navigation. This commit introduces a double queue, which is
swapped at the start of processing, so that we always have 1 list for queueing
new navigation requests, and one list that we're currently processing.
2026-03-23 18:00:04 +08:00
Karl Seguin 2abed9fe75 Print summary of failed tests name at end of test runner
Helps to see, at a glance, which test failed without having to scroll up through
the list.
2026-03-23 15:00:51 +08:00
Karl Seguin 34079913a3 Expose form.iterator()
Meant to help things like https://github.com/lightpanda-io/browser/pull/1951

Small optimization to form node_live iterator

Disable iframes test (not related, but they are super-flaky, and I'm tired of
CI's failing because of it. I'll look at them later today).
2026-03-23 13:12:22 +08:00
Adrià Arrufat 4f1b499d0f zig fmt 2026-03-23 13:52:28 +09:00
Karl Seguin c9bc370d6a Extract Session.wait into a Runner
This is done for a couple reasons. The first is just to have things a little
more self-contained for eventually supporting more advanced "wait" logic, e.g.
waiting for a selector.

The other is to provide callers with more fine-grained controlled. Specifically
the ability to manually "tick", so that they can [presumably] do something
after every tick. This is needed by the test runner to support more advanced
cases (cases that need to test beyond 'load') and it also improves (and fixes
potential use-after-free, the lp.waitForSelector)
2026-03-23 12:30:41 +08:00
Karl Seguin a69a22ccd7 Merge pull request #1948 from lightpanda-io/cdp-waitforselector
CDP: add waitForSelector to lp.actions
2026-03-23 10:09:09 +08:00
Adrià Arrufat c2a0d4c0b2 Merge pull request #1950 from mvanhorn/osc/feat-mcp-action-feedback
mcp: return page state from click/fill/scroll tools
2026-03-22 20:55:52 +09:00
Adrià Arrufat 9e7f0b4776 test: verify feedback message content in click/fill/scroll MCP tools 2026-03-22 20:39:20 +09:00
Karl Seguin e3085cb0f1 fix test 2026-03-22 12:47:33 +08:00
Karl Seguin 4e2e895cd9 Add --advertise_host option to serve command
Allows overwriting the --host for the json/version payload. When --host is set
to 0.0.0.0, we want to provide a mechanism to specify the specific address to
connect to in /json/version (or anywhere else that we "advertise" the address).

Inspired by https://github.com/lightpanda-io/browser/pull/1923 but rather than
defaulting to 127.0.0.1 (which seems just as unsafe), adds the explicit config
option.
2026-03-22 12:40:17 +08:00
Karl Seguin c1fc2b1301 Merge pull request #1949 from lightpanda-io/1800-fix-startup-frame-id
Fix Page.getFrameId on STARTUP when a browser context and a target exist
2026-03-22 07:14:33 +08:00
Karl Seguin 324e5eb152 Merge pull request #1945 from lightpanda-io/replace_children
Add validation to replaceChildren
2026-03-22 06:44:53 +08:00
Karl Seguin df4df64066 Merge pull request #1944 from lightpanda-io/about_blank_location
new URL('about:blank');
2026-03-22 06:44:37 +08:00
Karl Seguin c557a0fd87 Merge pull request #1942 from lightpanda-io/about_blank_resolve
Search for base page when resolving from about:blank
2026-03-22 06:44:19 +08:00