Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit 1d58fc4

Browse files
sadym-chromiummoz-wptsync-bot
authored andcommitted
Bug 1932829 [wpt PR 49327] - [WebDriver BiDi] Align initial browsingContext events with the spec, a=testonly
Automatic update from web-platform-tests [WebDriver BiDi] Align initial `browsingContext` events with the spec (#49327) As discussed in w3c/webdriver-bidi#766, and according to the HTML spec, the navigation, load and dom loaded events should not be emitted when browsing context is created. -- wpt-commits: 366451632c8d6b555cb3779e622f02bb3c066ec6 wpt-pr: 49327
1 parent 3ad2bdc commit 1d58fc4

File tree

4 files changed

+85
-62
lines changed

4 files changed

+85
-62
lines changed

testing/web-platform/tests/webdriver/tests/bidi/browsing_context/dom_content_loaded/dom_content_loaded.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
from tests.support.sync import AsyncPoll
3+
from webdriver.error import TimeoutException
34
from webdriver.bidi.modules.script import ContextTarget
45

56
from ... import int_interval
@@ -142,22 +143,32 @@ async def on_event(method, data):
142143

143144

144145
@pytest.mark.parametrize("type_hint", ["tab", "window"])
145-
async def test_new_context(bidi_session, subscribe_events, wait_for_event, wait_for_future_safe, type_hint):
146+
async def test_new_context_not_emitted(bidi_session, subscribe_events,
147+
wait_for_event, wait_for_future_safe, type_hint):
146148
await subscribe_events(events=[DOM_CONTENT_LOADED_EVENT])
147149

148-
on_entry = wait_for_event(DOM_CONTENT_LOADED_EVENT)
149-
new_context = await bidi_session.browsing_context.create(type_hint=type_hint)
150-
event = await wait_for_future_safe(on_entry)
150+
# Track all received browsingContext.domContentLoaded events in the events array
151+
events = []
151152

152-
assert_navigation_info(
153-
event, {"context": new_context["context"], "url": "about:blank"}
153+
async def on_event(method, data):
154+
events.append(data)
155+
156+
remove_listener = bidi_session.add_event_listener(
157+
DOM_CONTENT_LOADED_EVENT, on_event
154158
)
155-
assert event["navigation"] is not None
159+
160+
await bidi_session.browsing_context.create(type_hint=type_hint)
161+
162+
wait = AsyncPoll(bidi_session, timeout=0.5)
163+
with pytest.raises(TimeoutException):
164+
await wait.until(lambda _: len(events) > 0)
165+
166+
remove_listener()
156167

157168

158169
@pytest.mark.parametrize("sandbox", [None, "sandbox_1"])
159170
async def test_document_write(
160-
bidi_session, subscribe_events, new_tab, wait_for_event, wait_for_future_safe, sandbox
171+
bidi_session, subscribe_events, new_tab, wait_for_event, wait_for_future_safe, sandbox
161172
):
162173
await subscribe_events(events=[DOM_CONTENT_LOADED_EVENT])
163174

testing/web-platform/tests/webdriver/tests/bidi/browsing_context/load/load.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,17 +122,27 @@ async def on_event(method, data):
122122

123123

124124
@pytest.mark.parametrize("type_hint", ["tab", "window"])
125-
async def test_new_context(bidi_session, subscribe_events, wait_for_event, wait_for_future_safe, type_hint):
125+
async def test_new_context_not_emitted(bidi_session, subscribe_events,
126+
wait_for_event, wait_for_future_safe, type_hint):
126127
await subscribe_events(events=[CONTEXT_LOAD_EVENT])
127128

128-
on_entry = wait_for_event(CONTEXT_LOAD_EVENT)
129-
new_context = await bidi_session.browsing_context.create(type_hint=type_hint)
130-
event = await wait_for_future_safe(on_entry)
129+
# Track all received "browsingContext.load" events in the events array
130+
events = []
131131

132-
assert_navigation_info(
133-
event, {"context": new_context["context"], "url": "about:blank"}
132+
async def on_event(method, data):
133+
events.append(data)
134+
135+
remove_listener = bidi_session.add_event_listener(
136+
CONTEXT_LOAD_EVENT, on_event
134137
)
135-
assert event["navigation"] is not None
138+
139+
await bidi_session.browsing_context.create(type_hint=type_hint)
140+
141+
wait = AsyncPoll(bidi_session, timeout=0.5)
142+
with pytest.raises(TimeoutException):
143+
await wait.until(lambda _: len(events) > 0)
144+
145+
remove_listener()
136146

137147

138148
@pytest.mark.parametrize("sandbox", [None, "sandbox_1"])

testing/web-platform/tests/webdriver/tests/bidi/session/subscribe/events.py

Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66

77
@pytest.mark.asyncio
8-
async def test_subscribe_to_module(bidi_session, subscribe_events, wait_for_event, wait_for_future_safe):
8+
async def test_subscribe_to_module(bidi_session, subscribe_events, new_tab,
9+
wait_for_event, wait_for_future_safe, inline):
910
# Subscribe to all browsing context events
1011
await subscribe_events(events=["browsingContext"])
1112

@@ -15,9 +16,6 @@ async def test_subscribe_to_module(bidi_session, subscribe_events, wait_for_even
1516
async def on_event(method, _):
1617
events.append(method)
1718

18-
remove_listener_contextCreated = bidi_session.add_event_listener(
19-
"browsingContext.contextCreated", on_event
20-
)
2119
remove_listener_domContentLoaded = bidi_session.add_event_listener(
2220
"browsingContext.domContentLoaded", on_event
2321
)
@@ -26,70 +24,78 @@ async def on_event(method, _):
2624
)
2725

2826
# Wait for the last event
29-
on_entry_added = wait_for_event("browsingContext.load")
30-
await bidi_session.browsing_context.create(type_hint="tab")
31-
await wait_for_future_safe(on_entry_added)
27+
on_context_load = wait_for_event("browsingContext.load")
28+
29+
await bidi_session.browsing_context.navigate(
30+
context=new_tab["context"], url=inline("")
31+
)
32+
33+
await wait_for_future_safe(on_context_load)
3234

33-
assert len(events) == 3
35+
# 2 events are expected:
36+
# * `browsingContext.domContentLoaded`
37+
# * `browsingContext.load`
38+
assert len(events) == 2
3439

35-
remove_listener_contextCreated()
3640
remove_listener_domContentLoaded()
3741
remove_listener_load()
3842

3943

4044
@pytest.mark.asyncio
4145
async def test_subscribe_to_one_event_and_then_to_module(
42-
bidi_session, subscribe_events, wait_for_event, wait_for_future_safe
46+
bidi_session, subscribe_events, wait_for_event, wait_for_future_safe,
47+
inline, new_tab
4348
):
4449
# Subscribe to one event
45-
await subscribe_events(events=["browsingContext.contextCreated"])
50+
await subscribe_events(events=["browsingContext.domContentLoaded"])
4651

4752
# Track all received browsing context events in the events array
4853
events = []
4954

5055
async def on_event(method, data):
5156
events.append(method)
5257

53-
remove_listener_contextCreated = bidi_session.add_event_listener(
54-
"browsingContext.contextCreated", on_event
58+
remove_listener_domContentLoaded = bidi_session.add_event_listener(
59+
"browsingContext.domContentLoaded", on_event
5560
)
5661

57-
on_entry_added = wait_for_event("browsingContext.contextCreated")
58-
await bidi_session.browsing_context.create(type_hint="tab")
62+
on_entry_added = wait_for_event("browsingContext.domContentLoaded")
63+
await bidi_session.browsing_context.navigate(
64+
context=new_tab["context"], url=inline("")
65+
)
5966
await wait_for_future_safe(on_entry_added)
6067

6168
assert len(events) == 1
62-
assert "browsingContext.contextCreated" in events
69+
assert "browsingContext.domContentLoaded" in events
6370

6471
# Subscribe to all browsing context events
6572
await subscribe_events(events=["browsingContext"])
6673

6774
# Clean up the event list
6875
events = []
6976

70-
remove_listener_domContentLoaded = bidi_session.add_event_listener(
71-
"browsingContext.domContentLoaded", on_event
72-
)
7377
remove_listener_load = bidi_session.add_event_listener(
7478
"browsingContext.load", on_event
7579
)
7680

7781
# Wait for the last event
7882
on_entry_added = wait_for_event("browsingContext.load")
79-
await bidi_session.browsing_context.create(type_hint="tab")
83+
await bidi_session.browsing_context.navigate(
84+
context=new_tab["context"], url=inline("")
85+
)
8086
await wait_for_future_safe(on_entry_added)
8187

8288
# Make sure we didn't receive duplicates
83-
assert len(events) == 3
89+
assert len(events) == 2
8490

85-
remove_listener_contextCreated()
8691
remove_listener_domContentLoaded()
8792
remove_listener_load()
8893

8994

9095
@pytest.mark.asyncio
9196
async def test_subscribe_to_module_and_then_to_one_event_again(
92-
bidi_session, subscribe_events, wait_for_event, wait_for_future_safe
97+
bidi_session, subscribe_events, wait_for_event, wait_for_future_safe,
98+
new_tab, inline
9399
):
94100
# Subscribe to all browsing context events
95101
await subscribe_events(events=["browsingContext"])
@@ -100,9 +106,6 @@ async def test_subscribe_to_module_and_then_to_one_event_again(
100106
async def on_event(method, data):
101107
events.append(method)
102108

103-
remove_listener_contextCreated = bidi_session.add_event_listener(
104-
"browsingContext.contextCreated", on_event
105-
)
106109
remove_listener_domContentLoaded = bidi_session.add_event_listener(
107110
"browsingContext.domContentLoaded", on_event
108111
)
@@ -112,25 +115,28 @@ async def on_event(method, data):
112115

113116
# Wait for the last event
114117
on_entry_added = wait_for_event("browsingContext.load")
115-
await bidi_session.browsing_context.create(type_hint="tab")
118+
await bidi_session.browsing_context.navigate(
119+
context=new_tab["context"], url=inline("")
120+
)
116121
await wait_for_future_safe(on_entry_added)
117122

118-
assert len(events) == 3
123+
assert len(events) == 2
119124

120125
# Subscribe to one event again
121-
await subscribe_events(events=["browsingContext.contextCreated"])
126+
await subscribe_events(events=["browsingContext.domContentLoaded"])
122127

123128
# Clean up the event list
124129
events = []
125130

126131
# Wait for the last event
127132
on_entry_added = wait_for_event("browsingContext.load")
128-
await bidi_session.browsing_context.create(type_hint="tab")
133+
await bidi_session.browsing_context.navigate(
134+
context=new_tab["context"], url=inline("")
135+
)
129136
await wait_for_future_safe(on_entry_added)
130137

131138
# Make sure we didn't receive duplicates
132-
assert len(events) == 3
139+
assert len(events) == 2
133140

134-
remove_listener_contextCreated()
135141
remove_listener_domContentLoaded()
136142
remove_listener_load()

testing/web-platform/tests/webdriver/tests/bidi/session/unsubscribe/events.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
@pytest.mark.asyncio
10-
async def test_unsubscribe_from_module(bidi_session):
10+
async def test_unsubscribe_from_module(bidi_session, new_tab, inline):
1111
await bidi_session.session.subscribe(events=["browsingContext"])
1212
await bidi_session.session.unsubscribe(events=["browsingContext"])
1313

@@ -17,45 +17,41 @@ async def test_unsubscribe_from_module(bidi_session):
1717
async def on_event(method, data):
1818
events.append(data)
1919

20-
remove_listener_contextCreated = bidi_session.add_event_listener(
21-
"browsingContext.contextCreated", on_event
22-
)
2320
remove_listener_domContentLoaded = bidi_session.add_event_listener(
2421
"browsingContext.domContentLoaded", on_event
2522
)
2623
remove_listener_load = bidi_session.add_event_listener(
2724
"browsingContext.load", on_event
2825
)
2926

30-
await bidi_session.browsing_context.create(type_hint="tab")
27+
await bidi_session.browsing_context.navigate(
28+
context=new_tab["context"], url=inline("")
29+
)
3130

3231
wait = AsyncPoll(bidi_session, timeout=0.5)
3332
with pytest.raises(TimeoutException):
3433
await wait.until(lambda _: len(events) > 0)
3534

36-
remove_listener_contextCreated()
3735
remove_listener_domContentLoaded()
3836
remove_listener_load()
3937

4038

4139
@pytest.mark.asyncio
4240
async def test_subscribe_to_module_unsubscribe_from_one_event(
43-
bidi_session, wait_for_event, wait_for_future_safe
41+
bidi_session, wait_for_event, wait_for_future_safe, new_tab, inline
4442
):
4543
await bidi_session.session.subscribe(events=["browsingContext"])
4644

4745
# Unsubscribe from one event
48-
await bidi_session.session.unsubscribe(events=["browsingContext.domContentLoaded"])
46+
await bidi_session.session.unsubscribe(
47+
events=["browsingContext.domContentLoaded"])
4948

5049
# Track all received browsing context events in the events array
5150
events = []
5251

5352
async def on_event(method, _):
5453
events.append(method)
5554

56-
remove_listener_contextCreated = bidi_session.add_event_listener(
57-
"browsingContext.contextCreated", on_event
58-
)
5955
remove_listener_domContentLoaded = bidi_session.add_event_listener(
6056
"browsingContext.domContentLoaded", on_event
6157
)
@@ -65,17 +61,17 @@ async def on_event(method, _):
6561

6662
# Wait for the last event
6763
on_entry_added = wait_for_event("browsingContext.load")
68-
await bidi_session.browsing_context.create(type_hint="tab")
64+
await bidi_session.browsing_context.navigate(
65+
context=new_tab["context"], url=inline("")
66+
)
6967
await wait_for_future_safe(on_entry_added)
7068

7169
# Make sure we didn't receive browsingContext.domContentLoaded event
72-
assert len(events) == 2
70+
assert len(events) == 1
7371
assert "browsingContext.domContentLoaded" not in events
7472

75-
remove_listener_contextCreated()
7673
remove_listener_domContentLoaded()
7774
remove_listener_load()
7875

7976
# Unsubscribe from the rest of the events
80-
await bidi_session.session.unsubscribe(events=["browsingContext.contextCreated"])
8177
await bidi_session.session.unsubscribe(events=["browsingContext.load"])

0 commit comments

Comments
 (0)