Commit Graph

2320 Commits

Author SHA1 Message Date
atbrakhi
3c8c46d32f devtools: implement pause and resume in debugger (#42580)
When a breakpoint is hit, the script thread now pauses execution and
notifies devtools clients with a "paused" event. The script
thread enters a loop that processes devtools messages until
a Resume command is received.

This change does not implement manual pause

Testing: Added new test
Fixes: part of https://github.com/servo/servo/issues/36027




https://github.com/user-attachments/assets/c619db20-4579-4f77-aa60-0e43e6e7e575

Signed-off-by: atbrakhi <atbrakhi@igalia.com>
2026-02-18 10:08:46 +00:00
Simon Wülker
a60f9370c7 devtools: Apply attribute modifications in the inspector to the DOM tree (#42601)
The inspector view allows modifying the attributes of DOM elements.
However, we lie to the devtools client: While it looks like the
attributes change, the changes are never actually applied to the DOM.

This change fixes that, and also makes it so attribute modifications
from non-inspector sources are shown in the inspector.

Testing: This change adds two tests

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2026-02-17 13:05:41 +00:00
Euclid Ye
7b1a59460c mach (Android): Remove CC_ & CXX_ for build environment (#42563)
This reverts the workaround introduced in
https://github.com/servo/servo/pull/42232#discussion_r2740827196 which
enabled CC builder, given https://github.com/aws/aws-lc-rs/pull/1026 in
the new release.

Depends on: #42551
Testing: Android build:
https://github.com/servo/servo/actions/runs/21931411344
Fixes: #42242

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-02-12 05:16:21 +00:00
Simon Wülker
929e275fcd devtools: Show attached event listeners in inspector tab (#42355)
This change makes the devtools inspector show any event listeners that
are attached to a node. The primary motivation is making the devtools
more useful for debugging real-world websites.

<img width="536" height="268" alt="image"
src="https://github.com/user-attachments/assets/5ba13e41-14b4-4202-b994-eadff5d1c6b5"
/>

You can also click on the event listener to show some more info, though
most of that (everything except the event type and the event phase) is
currently just placeholder text:

<img width="1360" height="456" alt="image"
src="https://github.com/user-attachments/assets/ec025847-43fc-489c-8b26-46afb6dada64"
/>


Testing: This change adds a new test

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2026-02-11 13:31:25 +00:00
pralkarz
0dc5bee60a devtools: handle syntax highlighting booleans in console.log (#42513)
Testing: `./mach test-devtools` (added a new test)
Fixes: #42503

---------

Signed-off-by: pralkarz <pralkarz@tuta.com>
2026-02-11 12:46:35 +00:00
Simon Wülker
60c8b8fad5 devtools: Support sending js objects to firefox devtools from console.log (#42296)
This allows us to `console.log` objects from JS and have a preview of
them appear in the console.
Interacting with said preview doesn't work yet, because the devtools
object actor is a stub.

<img width="600" height="78" alt="image"
src="https://github.com/user-attachments/assets/d896471f-3982-4406-94d4-b13eebabe337"
/>

Testing: This change adds a test

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2026-02-10 10:31:17 +00:00
pralkarz
b1012479fd mach: run fmt with the root dir as cwd (#42473)
`contextdir.chdir` is not thread-safe, but the formatting runs
synchronously in a single thread, so it's fine.

Testing: Made some changes to various `.rs`, `.py`, and `.toml` files,
and ran `../mach fmt` from a few different subdirectories to ensure it
picks up the files to reformat.
Fixes: #42472

Signed-off-by: pralkarz <pralkarz@tuta.com>
2026-02-09 13:27:00 +00:00
Sebastian C
ceab4b6094 mach: use --no-verify for mach try push command (#42429)
Skip push hooks for try command. This speeds up try for me, which
normally means waiting for clippy a second time. The commit step is
already using `--no-verify`.

Testing: tested this change locally and it works

Signed-off-by: Sebastian C <sebsebmc@gmail.com>
2026-02-07 18:46:00 +00:00
Euclid Ye
1eb5e96907 wpt/UT: Disable https_proxy for local tests (#42322)
This helps buddies from MI5, MI6, NSA etc. to run tests behind proxy.

Testing: Tested locally behind proxy. For some reason, I already set
`127.0.0.1` and `localhost` in `no_proxy`, but it does not work.
Fixes: #42321

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-02-04 08:39:17 +00:00
Tim van der Lippe
1133eb229a wpt: Use Webdriver for all WPT runs (#41511)
All other browsers use a single configuration for their browser
invocations on WPT. Servo historically had two: servo and servodriver.
Now that we run WPT on Servo GitHub CI with Webdriver using the
servodriver, we can align our configuration with theirs.

The existing "servo" configuration is renamed to "servo_legacy" and
"servodriver" is then renamed to "servo". This way, we preserve the
"servo" product name as defined on wpt.fyi, but we do use its webdriver
configuration.

Since webdriver is not fully working yet for debugging purposes, we keep
the "servo_legacy" configuration now. In the future, once the debugging
story has improved, we can remove "servo_legacy".

All in all, this ensures that both on local, Servo GitHub CI and on
wpt.fyi we all use the exact same configuration. I tested this locally
by running the following test:

```
./mach test-wpt tests/wpt/tests/css/css-overflow/scrollbar-gutter-dynamic-004.html
```

This does times out with the servo binary and works with the servodriver
binary.

Running the servo_legacy configuration is done via the `--servo-legacy`
flag:

```
./mach test-wpt tests/wpt/mozilla/tests/mozilla/caption.html --servo-legacy
```

Fixes #40751

---------

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
2026-01-29 20:47:03 +00:00
Euclid Ye
9e3cb9c42e mach (Android): Use CC instead of forcing CMake to build aws-lc-sys (#42232)
In #41912, the bump of `aws-lc-sys` breaks the Android build, as it
replaces CMake build with cc builder for all platforms. As fallback, we
use CMake for Android only.

Another bump of it today #42226 is supposed to fix the issue:

> Fix building for older Android targets by
[@​justsmth](https://github.com/justsmth) in
[aws/aws-lc-rs#1013](https://redirect.github.com/aws/aws-lc-rs/pull/1013)

, but it [does
not](https://github.com/servo/servo/actions/runs/21467527086/job/61832707394).

After investigation, we properly set up environment variable to make
sure C/C++ compiler bundled with NDK can be used.
This makes Android consistent with other platforms.

Testing:
https://github.com/servo/servo/actions/runs/21468482975/job/61835557765

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-29 14:15:10 +00:00
Jonathan Schwender
6b12ecf26b Increase stylo stack size in asan and debug builds (#42115)
This bumps stylo to allow configuring the stack size of the stylo
threads, which fixes crashes with asan and debug builds.

Testing: Manual testing with `--with-asan` and with the debug profile.
Fixes: #40814

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-28 15:39:49 +00:00
Narfinger
67c0ce7e75 CI/mach: Run wpt tests, smoketest and devtools tests in multiprocess mode (#41684)
According to discussions in
https://servo.zulipchat.com/#narrow/channel/263398-general/topic/GenericChannel.20and.20testing.20of.20ipc-mode/with/565017052
it would be a good idea to test servo in multiprocess
mode as more channels are switched to GenericChannel.
This changes the test-wpt, test-webdriver and smoketest to have a
multiprocess argument for most tests.


Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: WPT test run here:
https://github.com/Narfinger/servo/actions/runs/20713369574

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-01-28 08:56:18 +00:00
Jonathan Schwender
73af1bf099 devcontainer: Use our own dockerfile (#42166)
Switch to using our own dockerfile, and install the required
dependencies into our image.
In follow-ups we can build the docker image in CI, so that users can
download a prebuilt docker image to save time.

Testing: Manually tested by opening servo in the devcontainer and
running `./mach build`

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-28 05:18:40 +00:00
Ashwin Naren
ccc0d95930 Update servo.exe.manifest for servoshell (#42167)
Bumps servoshell version to actual version and updates `./mach release`
to update it.

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2026-01-26 20:23:18 +00:00
Jonathan Schwender
ca24f1c861 mach: Move package list to a text based format (#41775)
This allows us to reuse the list without python, e.g. from a
shell-script. This is useful to build docker image layers, without
requiring python / uv / mach first.
Future changes will split the list into multiple text files, so we can
install only required subsets (e.g. skipping gstreamer) and a workflow
to automatically sync changes to the book.

Testing: `./mach bootstrap` still works.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
2026-01-26 09:43:47 +00:00
Martin Robinson
9c9d9c863f Rename compositing and compositing_traits to paint and paint_api (#42066)
This change finishes the big rename associated with the old
`compositing` crates. Long ago, these crates managed a compositor, like
you might find in a traditional web engine. These days, compositing is
done in WebRender so the name has stopped making much sense. Various
structs inside the crates have already been renamed and this is the
final big change necessary for the rename

Testing: This is just a rename so existing tests should cover it.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-24 09:17:35 +00:00
Jonathan Schwender
9a4192a5e3 tidy: Improve check_shell substitution lint (#42099)
Probably we should use a proper linter like `shellcheck`, but in the
meantime make the lint slightly smarter, so that it doesn't complaint
about e.g. `$1`. This is especially a problem when adding scripts which
use `awk`, since our lint is quite stupid and doesn't understand `''`
strings.
This fixes linting, for a simple new script introduced in
https://github.com/servo/servo/pull/41775

Testing: ./mach test-tidy still passes.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-23 15:10:15 +00:00
Jonathan Schwender
82df609833 mach: Use uv to manage the virtual environment (#41861)
Instead of attempting to manage the virtual environment ourselves, use
`uv` to manage the installation of dependencies.
Since we still have dependencies coming from upstream wpt, we use
`[tool.setuptool]` in our pyproject.toml to ensure that `uv` dynamically
installs our dependencies according to the requirements.txt files.

Additionally, this PR also reverts `--no-project` usage. `--no-project`
was added as a temporary workaround in
https://github.com/servo/servo/pull/37741.
It's not 100% clear to me what exactly the issue was, but
[apparently](https://github.com/servo/servo/pull/37741#pullrequestreview-2985666234)
the issue caused the build to break.
Removing the arg seems to work fine, except that we get a warning about
a missing `requiress-python` value in `pyproject.toml`.
Apparently it is good practice to specify the requirement as `>=` in th
pyroject, and lock the exact version via `uv pin` (which writes to
`.python_version`, where we already pin 3.11.


Testing: Should be covered by existing tests, which compile code on all
platforms.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-22 05:51:44 +00:00
Jonathan Schwender
bca2e2ca74 Move upload_nightly to a dedicated script (#41922)
Follow-up to https://github.com/servo/servo/pull/41882

This further reduces the amount of code that is involved in handling our
publishing.

Testing: Manual triggering of a test release [workflow
run](https://github.com/servo/servo/actions/runs/21026468888)

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-15 13:33:07 +00:00
Jonathan Schwender
f0b2db0994 CI: Refactor nightly release process (#41882)
This change moves the upload and attestation steps to the nightly
workflow. This results in overall slightly more code, but reduces the
amount of code that has access to extra privileges.

Additionally, this refactoring will allow to easily change the target
repo for the nightly release, i.e. allowing us to reuse the nightly
workflow for our monthly releases in the servo/servo repo (in a
follow-up PR).

We change upload_nightly to get an additional `packages` parameter, that
we use instead of a hardcoded table of expected packages per platform.
`download-artifact` doesn't preserve the whole directory structure, so
it would be a bit cumbersome to preserve that.
Since we anyway only use the upload script in CI, we can just directly
specify the packages in the CI, which also makes things slightly more
flexibel if we want to add new packages or platforms.

There are still more improvements to come, specifically also to the
`upload_nightly` script, with the goal to minimize the amount of code
that needs to be trusted.

Testing: Manually triggering the [release
workflow](https://github.com/servo/servo/actions/runs/20996682863/job/60358012404)
via workflow-dispatch.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-15 07:10:18 +00:00
dependabot[bot]
c9b7ce0404 build: Force using CMake to build aws-lc-sys for Android + Bump aws-lc-rs 1.15.2 -> 1.15.3 (#41912)
There is a significant change, which replaced the CMake build with a new
cc builder. This does not work for Android, so we force CMake for
Android only. This is fine as we already set up CMake toolchain for
Android.

Bumps [aws-lc-rs](https://github.com/aws/aws-lc-rs) from 1.15.2 to
1.15.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/aws/aws-lc-rs/releases">aws-lc-rs's
releases</a>.</em></p>
<blockquote>
<h2>aws-lc-rs v1.15.3</h2>
<h2>What's Changed</h2>
<ul>
<li>🎉 CMake no longer required for any targets 🎉 by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/911">aws/aws-lc-rs#911</a>
<ul>
<li>For non-FIPS builds on all platforms only a C compiler is
required!</li>
</ul>
</li>
<li>impl Send for Streaming Keys by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/977">aws/aws-lc-rs#977</a></li>
<li><code>less_safe_update</code> for Streaming ciphers by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/991">aws/aws-lc-rs#991</a></li>
<li>aws-lc-fips-sys v0.13.11 aligns with <a
href="https://github.com/aws/aws-lc/releases/tag/AWS-LC-FIPS-3.1.0">AWS-LC-FIPS-3.1.0</a>
by <a href="https://github.com/justsmth"><code>@​justsmth</code></a> in
<a
href="https://redirect.github.com/aws/aws-lc-rs/pull/994">aws/aws-lc-rs#994</a></li>
</ul>
<h3>Build Improvements</h3>
<ul>
<li>Add support for i686-win7-windows target by <a
href="https://github.com/cstkingkey"><code>@​cstkingkey</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/988">aws/aws-lc-rs#988</a></li>
<li>Support mips &amp; rustc_codegen_cranelift compiler backend by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/986">aws/aws-lc-rs#986</a></li>
<li>Fix path formatting for build flags in cc_builder by <a
href="https://github.com/roobscoob"><code>@​roobscoob</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/989">aws/aws-lc-rs#989</a></li>
<li><code>disable-prebuilt-nasm</code> feature by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/997">aws/aws-lc-rs#997</a></li>
</ul>
<h3>Issues Being Closed</h3>
<ul>
<li>Disabling pre-built nasm binaries through feature flags
(aws-lc-rs/disable-prebuilt-nasm) -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/996">#996</a></li>
<li>StreamingDecryptingKey and StreamingEncryptingKey need useless extra
block in output -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/990">#990</a></li>
<li>build failure when targeting mips64el-unknown-linux-gnuabi64 or
i686-win7-windows-msvc -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/982">#982</a></li>
<li>build failure when targeting x86_64-pc-windows-msvc -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/981">#981</a></li>
<li>aws-lc-sys on ppc64le: undefined reference to
aws_lc_0_35_0_aes_hw_encrypt -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/980">#980</a></li>
<li>Can't send StreamingDecryptingKey between threads -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/975">#975</a></li>
<li>Remove cmake dependency for Windows -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/828">#828</a></li>
<li>Building aws-lc-sys under MSVC is brittle -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/780">#780</a></li>
<li>MSBUILD error MSB1009 install.vcxproj does not exist (but
INSTALL.vcxproj does) -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/772">#772</a></li>
<li>Other libraries that rely on AWS LC SYS do not compile properly in a
Windows environment -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/771">#771</a></li>
<li>Support aws-lc-sys on x86_64-unknown-freebsd without cmake -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/766">#766</a></li>
<li>Unable to build w/ rustc_codegen_cranelift compiler backend - <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/537">#537</a></li>
<li>No mips-unknown-linux-musl support -- <a
href="https://redirect.github.com/aws/aws-lc-rs/issues/522">#522</a></li>
</ul>
<h2>Other Merged PRs</h2>
<ul>
<li>Update toml_edit requirement from 0.23.0 to 0.24.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/976">aws/aws-lc-rs#976</a></li>
<li>Some CI jobs only run on pull-requests by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/970">aws/aws-lc-rs#970</a></li>
<li>More robust rustls integ test by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/973">aws/aws-lc-rs#973</a></li>
<li>Simplify build - no more rust_wrapper lib by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/978">aws/aws-lc-rs#978</a></li>
<li>PR feedback + cleanup -- run-rustls-integration.sh by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/979">aws/aws-lc-rs#979</a></li>
<li>Prepare aws-lc-sys v0.36.0 by <a
href="https://github.com/justsmth"><code>@​justsmth</code></a> in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/992">aws/aws-lc-rs#992</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/cstkingkey"><code>@​cstkingkey</code></a> made
their first contribution in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/988">aws/aws-lc-rs#988</a></li>
<li><a href="https://github.com/roobscoob"><code>@​roobscoob</code></a>
made their first contribution in <a
href="https://redirect.github.com/aws/aws-lc-rs/pull/989">aws/aws-lc-rs#989</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/aws/aws-lc-rs/compare/v1.15.2...v1.15.3">https://github.com/aws/aws-lc-rs/compare/v1.15.2...v1.15.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="efaf569ec6"><code>efaf569</code></a>
Prepare aws-lc-rs v1.15.3 (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/998">#998</a>)</li>
<li><a
href="4c475059eb"><code>4c47505</code></a>
disable-prebuilt-nasm feature (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/997">#997</a>)</li>
<li><a
href="8aef7a7ef2"><code>8aef7a7</code></a>
<code>less_safe_update</code> for Streaming ciphers (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/991">#991</a>)</li>
<li><a
href="d4c164669f"><code>d4c1646</code></a>
Prepare aws-lc-fips-sys v0.13.11 (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/994">#994</a>)</li>
<li><a
href="9bd808d3bf"><code>9bd808d</code></a>
Prepare aws-lc-sys v0.36.0 (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/992">#992</a>)</li>
<li><a
href="63f2243e35"><code>63f2243</code></a>
Fix path formatting for build flags in cc_builder (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/989">#989</a>)</li>
<li><a
href="607fa7d1f8"><code>607fa7d</code></a>
Support mips &amp; rustc_codegen_cranelift compiler backend (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/986">#986</a>)</li>
<li><a
href="dbb7d2e77d"><code>dbb7d2e</code></a>
Eliminate CMake Requirement (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/911">#911</a>)</li>
<li><a
href="1cec9de4bf"><code>1cec9de</code></a>
Add support for i686-win7-windows target (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/988">#988</a>)</li>
<li><a
href="e0aa4187a8"><code>e0aa418</code></a>
PR feedback + cleanup -- run-rustls-integration.sh (<a
href="https://redirect.github.com/aws/aws-lc-rs/issues/979">#979</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/aws/aws-lc-rs/compare/v1.15.2...v1.15.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=aws-lc-rs&package-manager=cargo&previous-version=1.15.2&new-version=1.15.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-15 02:15:57 +00:00
Martin Robinson
cdd3f50b98 mach: Parse URL arguments to update-wpt from sys.argv (#41851)
Instead of relying on the contents of the already-parsed arguments,
which may have tried to convert URL arguments to paths, parse URLs from
their original place in `sys.argv`. This is a workaround to the fact
that we extend the internal WPT update command to accept URLs of GitHub
Actions. This is a custom Servo extension that has no equivalent to
the WPT upstream command.

Testing: There aren't really tests for this level of the Servo command
line tools.
Fixes: #41728

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-13 01:54:10 +00:00
Martin Robinson
d666e8655c mach: Remove limits on the number of Rayon threads (#41854)
This limit was introduced for another CI system in 2017 and it seems
that tests run just fine without it, so I think we can just remove this.
In addition, this has caused problems for some developers locally [^1].

We now also have preferences to limit the maximum number of
threads in the thread pool (and have a default set, that prevents
spawning too many threads on machine with many cores).

[^1]: [#general > Browser not responding when running WPT
tests](https://servo.zulipchat.com/#narrow/channel/263398-general/topic/Browser.20not.20responding.20when.20running.20WPT.20tests/with/567475990)

Try run: https://github.com/servo/servo/actions/runs/20914348749

Testing: This doesn't seem to harm WPT tests on CI, so that's the test.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2026-01-12 13:21:29 +00:00
Mukilan Thiyagarajan
688691609e mach: Upgrade cargo-deny and report unknown errors in test-tidy (#41853)
The versions of `cargo-deny` older than 0.18.6 have a bug which causes
the executions of `cargo-deny check` to prematurely fail when reading
the advisory db
(https://github.com/EmbarkStudios/cargo-deny/issues/804).

This error is ignored by `test-tidy` since the error message doesn't
have the expected JSON fields, causing `test-tidy` to succeed even when
there are valid issues in `deny.toml` or `Cargo.lock`.

So upgrade the `cargo-deny` version installed by `mach` to be the latest
version and ensure that at least the version with the fix is installed
on the system. Also fix the `test-tidy` code to always fail when the
exit code from `cargo-deny` is non-zero.

This patch also updates `deny.toml` to include exceptions to allow
`./mach test-tidy` to pass. Some of these need to be investigated
separately from this change.

Fixes #41845.
Fixes #38945.

Testing: Tested locally on NixOS.

---------

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2026-01-12 11:43:28 +00:00
Jonathan Schwender
be58b215d7 mach: Fix link to building section of the book in python/servo/platform/linux.py (#41772)
The book was changed, so we need to update the link to the new location.

Testing: Only changes comment. Reviewers can review by following the new
link.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-08 15:14:51 +00:00
Euclid Ye
7aa2dd261f mach: Break the shackle that restricts cross-compilation from Windows (#41748)
I never forget that day: @dependabot updates aws-lc-rs, and
cross-compilation Servo from Windows fails. We were left with two
options:
1. Get a local clone of aws-lc-rs, and modify it in a hacky way
2. Use Git Bash, but still has to set up MSYS2 etc.

Later, we've been restricted since #36070 to only use option 2 due to
restrictions imposed here. But the system is innocent, and it is
aws-lc-rs's responsibility to fix the rules. Still, @d-desiatkin and I
believed that day would come, when we would return justice to the
victim.

Freedom is better served late than never. It is now working normally
since aws-lc-rs has fixed the rules.

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-08 07:49:11 +00:00
Jonathan Schwender
a038ffad8d mach: linux bootstrap: Remove unused constant (#41745)
The variable is not used anywhere and `_platform_bootstrap_gstreamer`
raises an error telling the user to install gstreamer via their package
manager on Linux.
Hence, we can just remove it.

Testing: Trivial, not required.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-08 01:28:51 +00:00
Euclid Ye
6964956110 wpt: Disable proxy for test-wpt unless users know what they are doing (#41441)
Nowadays Servo automatically loads system default proxy. It has enabled
my NSA colleagues to visit external networks without modifying transport
layer, whereas `test-wpt` has been failing after it.

We disable the proxy unless users know what they are doing.

Testing: Tested in different physical locations with different proxy
networks.
Fixes: #41440

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-12-21 07:22:06 +00:00
Josh Matthews
083ab31ba3 tidy: Add check for feature annotation format. (#41414)
This new lint checks for some easy mistakes to make with the annotation
format.

Testing: New unit tests added.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-12-19 16:32:34 +00:00
Euclid Ye
76691c5ce5 wpt: Fix typo when update wpt results from link (#41403)
This just fixes a typo:
`download_run_resultsa_and_then_run_update` ->
`download_run_results_and_then_run_update`

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2025-12-19 08:14:03 +00:00
Martin Robinson
d7b6aaf7af mach: Allow updating test result metadata from GitHub Action run (#41257)
This change allows `./mach update-wpt` to accept a URL to a GitHub
Action run. If a URL is passed, it will attempt to download the stable
unexpected results from the run and update the expected test results.
Note that this currently requires having the `gh` command-line tool
installed and authenticated. Although you can download artifacts without
logging in via the web interface, doing this via the API requires an
access token.

Testing: This change adds a unit test for the regex that matches GitHub
Action URLs.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-12-15 09:03:49 +00:00
AloNeeXe
444e1230eb mach: Properly handle empty commit message in the WPT export script (#41128)
Properly handle empty commit messages when processing commits during WPT
export. We shouldn't be landing commits with empty messages into Servo,
but sometimes when a PR is in process, the body is empty. In those
cases, this change avoids an error during job execution.

Signed-off-by: chenura999 <chenuraoshada396@gmail.com>
2025-12-08 14:50:02 +00:00
Maciej Kożuszek
bebcc0ea7a mach: Add yes installation cofirmation flag to bootstrap command (#41086)
Implements #40502 

Adds `--yes` flag to mach bootstrap command which confirms installation
of all required packages.
Unlike `--force` flag (which also does that) it does NOT reinstall all
packages but only confirms them (if required at all).

Test on Ubuntu 24.04.2 LTS by removing safe development packages like
`libgstrtspserver-1.0-dev libges-1.0-dev gstreamer1.0-tools` and run
`mach bootstrap` twice to observe if `--yes` flags automatically install
all dependencies.
With this flag all dependencies were installed with any interaction but
removing some dependencies and running `./mach bootstrap` prompted me to
confirm `apt-get install` action.

---------

Signed-off-by: MCozhusheck <mackozuszek@gmail.com>
2025-12-08 13:39:02 +00:00
Narfinger
7a1a3b0f2c CI: On OHOS run speedometer in perf mode (#41006)
The phone was not set into perf mode which might interrupt scripts.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: Should not need any testing.

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-12-02 13:30:33 +00:00
Narfinger
a1c37f8767 OHOS CI: Switch speedometer from hitrace-bench to servo-driver script (#40798)
Switch ohos speedometer from hitrace-bench to servo-driver script.
This allows us to look at logs in the future and has easier parsing of
the values.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: Custom run on
https://github.com/Narfinger/servo/actions/runs/19575793934

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-12-01 10:41:23 +00:00
Jan Varga
1d0540810e storage: Introduce storage coordination thread and infrastructure for parallel next-generation IndexedDB implementation (#40661)
This PR introduces a new storage coordination thread, intended to serve
as the central point for managing all current and future storage
endpoints in Servo.

In addition to the new coordination thread, this PR also lays the
infrastructure required to develop a parallel, next-generation IndexedDB
implementation under the indexeddb_next feature flag living on a
separate branch.

Testing: Unit and WPT tests continue to pass

---------

Signed-off-by: Jan Varga <jvarga@igalia.com>
2025-11-28 10:40:02 +00:00
dyegoaurelio
bc81a4f11a nix: Add FHS wrappers for venv binaries (ruff, pyrefly) on NixOS (#40860)
On NixOS, dynamically linked binaries from the Python venv (installed
via uv/pip) cannot run directly because they expect standard Linux
library paths that don't exist on NixOS.

This commit adds FHS wrappers that allow these binaries to run in an
FHS-compatible environment at runtime, without patching them.

I considered using the nixpkgs versions of ruff and pyrefly directly, or
overriding their derivations to match the versions in requirements.txt.
However, decided against it because:
- Version mismatches between nixpkgs and requirements.txt caused type
checking incompatibilities (pyrefly 0.34.0 vs 0.23.1)
- Building these tools from source in nix is slow and adds significant
time to nix-shell initialization (both are rust packages that take quite
some time to build)


Testing: just improvements to the NixOS development environment, no test
needed

**Before:**
```
➜ servo (main) ✔ nix-shell
➜ servo (main) ✔ ./mach fmt
Could not start dynamically linked executable: /home/dyego/coding/random/servo/.venv/bin/ruff
NixOS cannot run dynamically linked executables intended for generic
linux environments out of the box. For more information, see:
https://nix.dev/permalink/stub-ld
➜ servo (main) ✔ ./mach test-tidy
 ➤  Checking config file (./servo-tidy.toml)...
 ➤  Checking directories for correct file extensions...
Could not start dynamically linked executable: ruff
NixOS cannot run dynamically linked executables intended for generic
linux environments out of the box. For more information, see:
https://nix.dev/permalink/stub-ld
Error running mach:

    ['test-tidy']

The error occurred in code that was called by the mach command. This is either
a bug in the called code itself or in the way that mach is calling it.
You can invoke |./mach busted| to check if this issue is already on file. If it
isn't, please use |./mach busted file| to report it. If |./mach busted| is
misbehaving, you can also inspect the dependencies of bug 1543241.

If filing a bug, please include the full output of mach, including this error
message.

The details of the failure are as follows:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

  File "/home/dyego/coding/random/servo/python/servo/testing_commands.py", line 322, in test_tidy
    tidy_failed = tidy.scan(not all_files, not no_progress, github_annotations)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dyego/coding/random/servo/python/tidy/tidy.py", line 919, in scan
    for error in errors:
  File "/home/dyego/coding/random/servo/python/tidy/tidy.py", line 401, in check_ruff_lints
    for error in json.loads(e.output):
                 ^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/2g9b898aq9kmizmhmhbdip5mixrc5wrk-python3-3.11.14/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/2g9b898aq9kmizmhmhbdip5mixrc5wrk-python3-3.11.14/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/2g9b898aq9kmizmhmhbdip5mixrc5wrk-python3-3.11.14/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
➜ servo (main) ✔
```

(note that the `JSONDecodeError` is because we're trying to parse the
"NixOS cannot run dynamically linked executables intended..." string as
JSON)

**Now:**
```
➜ servo (fix-nix-mach) ✔ nix-shell
➜ servo (fix-nix-mach) ✔ ./mach fmt
➜ servo (fix-nix-mach) ✔ ./mach test-tidy
 ➤  Checking config file (./servo-tidy.toml)...
 ➤  Checking directories for correct file extensions...
 ➤  Checking type annotations in python files ...
 ➤  Skipping WPT lint checks, because no relevant files changed.
 ➤  Running `cargo-deny` checks...
 ➤  Checking formatting of Rust files...
 ➤  Checking formatting of python files...
 ➤  Checking formatting of toml files...

  test-tidy reported no errors.
➜ servo (fix-nix-mach) ✔
```

Signed-off-by: Dyego Aurélio <dyegoaurelio@gmail.com>
2025-11-25 15:20:49 +00:00
Josh Matthews
d89b1aa871 testing: Remove ahem.css user stylesheet injection. (#40817)
The current user stylesheet use in our tests is a hack that hides real
issues like #40419. Any test that requires ahem.ttf needs to include the
stylesheet like any other webpage.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-11-22 17:35:27 +00:00
Mukilan Thiyagarajan
e127129a99 mach: Normalize the --profile argument to build commands (#40753)
The current logic treats the explict version of release and dev build
specification i.e the `--profile release` and `--profile dev` options as
custom profiles. This breaks other logic that explictly check for
release and dev profile types, like the android build.

Normalize the `--profile` argument so that the strings `release` and
`dev` are treated correctly as `BuildType.Kind.RELEASE` and
`BuildType.Kind.DEV` respectively.

Fixes: #40752

Testing: Tested manually that building android with `--profile release`
creates the correct directory structure.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-11-20 07:01:14 +00:00
Martin Robinson
386de5fadf python: Remove notify-py from Python dependencies (#40717)
Support for sending build notifications was removed in #37818, but the
dependency in `requirements.txt` was not removed. This PR fixest that.

Testing: This change just removes an unsued build dependency, so no
testing is necessary.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-18 14:54:25 +00:00
Jonathan Schwender
eca996ada3 Upload junit report of unit-tests in CI (#39897)
This should help identify flaky unit tests, since codecov will gather
statistics of tests (of the last 60 days) and allow us to easily
identify flaky unit-tests. [Test page on
codecov](https://app.codecov.io/github/servo/servo/tests) based on an
uploaded report from a try run.
Additionally add a catch-all parameter for `test-unit` which is passed
through to the `cargo nextest` invocation, useful for e.g. stressing a
test via `--stress-count`.

Testing: Manually tested with [try
run](https://github.com/servo/servo/actions/runs/18529823800)

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-17 15:07:56 +00:00
Sam
1f5747f34f CI: Limit github runner mac to macos-arm-unit-tests only on merge queue (#40617)
Based on the chat here:
https://github.com/servo/servo/issues/40596#issuecomment-3528514438 we
limit mac-arm (those are bottlenecks as they are not self hosted) to
merge queue (so we know that main is good so we can skip run there) and
we do not run MSRV check there to further limit uses.

Testing: None, because it's just infra.
Temp fixes: #40596

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-11-13 20:58:40 +00:00
Ashwin Naren
7c94188315 Add servo:license (#40319)
Similar to about:license in firefox. Generated with `cargo-about`.

A few open questions:
- When/how should it be updated (the command I used was `cargo about
generate etc/about.hbs > resources/resource_protocol/license.html`, it
takes ~20 seconds)
- How should `about.toml` be kept in sync with `deny.toml`
- What about licenses for packages that are not crates (i.e. gstreamer)

Fixes: #40266

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-13 08:48:01 +00:00
Jonathan Schwender
7095bb4b09 tidy: Minor cleanup of licenseck.py (#40585)
- Remove unused accepted Copyright line `See
http://rust-lang.org/COPYRIGHT`. This URL now yields a 404, and we don't
seem to use this line anywhere in the project so we can remove it. Note:
We should probably use a regex anyway, so we can match the whole
required expression, but thats a different topic.
- Remove unused `licenses_dep_toml` table. We use cargo deny for
checking the licenses of our rust dependencies.

Testing: Changing tidy is covered by `./mach test-tidy` in CI

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-12 10:41:46 +00:00
Jonathan Schwender
88398204e9 ohos: Make test-speedometer-ohos more robust (#40558)
The main change is running `hdc shell power-shell setmode 602`, which
sets the device to performance mode, increasing the screen timeout and
manually waking the device up.
We add a helper class for that, so that we can use the `with` syntax to
undo these changes at the end of scope.
We also add a small HDC wrapper class, which slightly simplifies and
abstracts over some common functionality like running commands or making
a screenshot.

Testing: This is a CI script change.
Fixes: Speculative fix for speedometer sometimes timing out on HOS and
the screenshot showing a locked device screen.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-12 04:36:43 +00:00
Ashwin Naren
370f205032 mach: Remove unused setup/config (#40547)
Removed `setup.py`, `setup.cfg`, `mach.egg-info/`, and `PKG-INFO`. I
don't see these being used anywhere and mach isn't packaged by us. I
checked the firefox source tree and couldn't find them:
45fd8b48b2/python/mach.

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-11 03:24:54 +00:00
Ashwin Naren
6bce35f93a storage: Run storage tests (#40546)
These were accidentally disabled when creating the storage crate.

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
2025-11-11 02:31:07 +00:00
Jonathan Schwender
1410a8f2a6 bootstrap: Run apt update before apt-cache (#40505)
In a fresh container skipping the apt-update will cause only 4 packages
to be installed and the rest filtered. Also add a debug print to inform
the user if packages were skipped.

Testing: Manually tested

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-08 20:12:40 +00:00
eri
eb6ca612c3 Remove tshark from mach bootstrap (#40506)
`mach bootstrap` no longer installs Wireshark, as it isn't useful for
people not working directly on DevTools support. The linux runner that
runs `mach test-scripts` now installs it manually, skipping the security
prompt.

Testing: Manual test of `mach test-scripts`
Fixes: #40503

Signed-off-by: eri <eri@igalia.com>
2025-11-08 18:42:33 +00:00