commit 4f7af98c2e99878a3e9cff5f32295f54604ac5f5
parent 543f25fd74fe934a83b5f5cc70102d6d7fd739c2
Author: Maksim Sadym <69349599+sadym-chromium@users.noreply.github.com>
Date: Sun, 26 Oct 2025 21:12:49 +0000
Bug 1994760 [wpt PR 55479] - [wdspec] tentative tests for disabled scripting emulation, a=testonly
Automatic update from web-platform-tests
[wdspec] tentative tests for disabled scripting emulation (#55479)
Checks the behavior of disabled scripting for the corner cases mentioned in https://github.com/whatwg/html/pull/11441#pullrequestreview-3139496134
--
wpt-commits: 80cc31004c3109482251ce68ca8a31845dad78ec
wpt-pr: 55479
Diffstat:
1 file changed, 154 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/webdriver/tests/bidi/emulation/set_scripting_enabled/enabled_tentative.py b/testing/web-platform/tests/webdriver/tests/bidi/emulation/set_scripting_enabled/enabled_tentative.py
@@ -0,0 +1,154 @@
+import pytest
+
+from webdriver.bidi.modules.script import ContextTarget
+
+pytestmark = pytest.mark.asyncio
+
+
+async def test_node_set_event_handler_value(bidi_session, inline):
+ context = await bidi_session.browsing_context.create(type_hint="tab")
+ url = inline("""
+ <script>window.onload = ()=>{console.log('onload')}</script>
+ """)
+ await bidi_session.browsing_context.navigate(context=context["context"],
+ url=url, wait="complete")
+
+ result = await bidi_session.script.evaluate(
+ expression="window.onload",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ assert result == {'type': 'function'}
+
+ # Disable scripting.
+ await bidi_session.emulation.set_scripting_enabled(
+ enabled=False,
+ contexts=[context["context"]],
+ )
+
+ result = await bidi_session.script.evaluate(
+ expression="window.onload",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ assert result == {'type': 'function'}
+
+
+async def test_node_added_event_handlers(bidi_session, inline):
+ context = await bidi_session.browsing_context.create(type_hint="tab")
+ url = inline("""
+ <script>
+ addEventListener("message", (event) => { console.log('onmessage')})
+ </script>
+ """)
+ await bidi_session.browsing_context.navigate(context=context["context"],
+ url=url, wait="complete")
+
+ result = await bidi_session.script.evaluate(
+ expression="window.onmessage",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ assert result == {'type': 'null'}
+
+ await bidi_session.script.evaluate(
+ expression="""addEventListener("message", (event) => { console.log('onmessage')})""",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+
+ result = await bidi_session.script.evaluate(
+ expression="window.onmessage",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ assert result == {'type': 'null'}
+
+ # Disable scripting.
+ await bidi_session.emulation.set_scripting_enabled(
+ enabled=False,
+ contexts=[context["context"]],
+ )
+
+ result = await bidi_session.script.evaluate(
+ expression="window.onmessage",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ assert result == {'type': 'null'}
+
+
+async def test_finalization_registry(bidi_session, inline):
+ """
+ The test relies on `window.gc()` to force GC. In Chrome, it is exposed when
+ run with `--js-flags=--expose-gc` flag.
+ """
+ context = await bidi_session.browsing_context.create(type_hint="tab")
+
+ url = inline("""<script>
+ window.finalizationRegistryTriggered = false;
+ const registry = new FinalizationRegistry((heldValue) => {
+ window.finalizationRegistryTriggered = true;
+ });
+
+ function createAndRegister() {
+ const myObject = {};
+ registry.register(myObject);
+ }
+ createAndRegister();
+ </script>
+ """)
+
+ await bidi_session.browsing_context.navigate(context=context["context"],
+ url=url, wait="complete")
+
+ result = await bidi_session.script.evaluate(
+ expression="window.finalizationRegistryTriggered",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ assert result == {'type': 'boolean', 'value': False}
+
+ # Disable scripting.
+ await bidi_session.emulation.set_scripting_enabled(
+ enabled=False,
+ contexts=[context["context"]],
+ )
+
+ result = await bidi_session.script.evaluate(
+ expression="window.finalizationRegistryTriggered",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ assert result == {'type': 'boolean', 'value': False}
+
+ # Force GC to collect `myObject`.
+ await bidi_session.script.evaluate(
+ expression="window.gc()",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+
+ result = await bidi_session.script.evaluate(
+ expression="window.finalizationRegistryTriggered",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ assert result == {'type': 'boolean', 'value': True}
+
+
+async def test_enqueue_promise_job(bidi_session, inline):
+ context = await bidi_session.browsing_context.create(type_hint="tab")
+
+ # Disable scripting.
+ await bidi_session.emulation.set_scripting_enabled(
+ enabled=False,
+ contexts=[context["context"]],
+ )
+
+ result = await bidi_session.script.evaluate(
+ expression="Promise.resolve(true).then(x=>x)",
+ target=ContextTarget(context["context"]),
+ await_promise=True,
+ )
+ assert result == {'type': 'boolean', 'value': True}