Skip to content

Commit 452797e

Browse files
lutienmoz-wptsync-bot
authored andcommitted
[wdspec] Extend test suite for "userContexts" argument of "sessions.subscribe" command.
Differential Revision: https://phabricator.services.mozilla.com/D236694 bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1938604 gecko-commit: e60f809fa4bc5f38abac8db1240d97d708be9d3f gecko-reviewers: webdriver-reviewers, jdescottes
1 parent 26b440e commit 452797e

File tree

3 files changed

+774
-67
lines changed

3 files changed

+774
-67
lines changed

webdriver/tests/bidi/browsing_context/context_destroyed/context_destroyed.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,3 +332,34 @@ async def on_event(method, data):
332332
)
333333

334334
remove_listener()
335+
336+
337+
async def test_with_user_context_subscription(
338+
bidi_session,
339+
subscribe_events,
340+
create_user_context,
341+
wait_for_events
342+
):
343+
user_context = await create_user_context()
344+
345+
await subscribe_events(
346+
events=[CONTEXT_DESTROYED_EVENT], user_contexts=[user_context]
347+
)
348+
349+
context = await bidi_session.browsing_context.create(
350+
type_hint="tab", user_context=user_context
351+
)
352+
353+
with wait_for_events([CONTEXT_DESTROYED_EVENT]) as waiter:
354+
await bidi_session.browsing_context.close(context=context["context"])
355+
events = await waiter.get_events(lambda events: len(events) >= 1)
356+
assert len(events) == 1
357+
358+
assert_browsing_context(
359+
events[0][1],
360+
context["context"],
361+
children=0,
362+
url="about:blank",
363+
parent=None,
364+
user_context=user_context,
365+
)

webdriver/tests/bidi/session/subscribe/user_contexts.py

Lines changed: 290 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
from ... import create_console_api_message, recursive_compare
44

5+
pytestmark = pytest.mark.asyncio
6+
57

6-
@pytest.mark.asyncio
78
async def test_subscribe_one_user_context(bidi_session, subscribe_events, create_user_context, wait_for_events):
89
user_context = await create_user_context()
910

@@ -33,7 +34,6 @@ async def test_subscribe_one_user_context(bidi_session, subscribe_events, create
3334
)
3435

3536

36-
@pytest.mark.asyncio
3737
async def test_subscribe_multiple_user_contexts(bidi_session, subscribe_events, wait_for_events, create_user_context):
3838
user_context = await create_user_context()
3939

@@ -54,3 +54,291 @@ async def test_subscribe_multiple_user_contexts(bidi_session, subscribe_events,
5454
await create_console_api_message(bidi_session, other_context, "text2")
5555
events = await waiter.get_events(lambda events : len(events) >= 2)
5656
assert len(events) == 2
57+
58+
59+
async def test_buffered_event(
60+
bidi_session, subscribe_events, create_user_context, wait_for_events
61+
):
62+
user_context = await create_user_context()
63+
64+
new_context = await bidi_session.browsing_context.create(
65+
type_hint="tab", user_context=user_context
66+
)
67+
68+
with wait_for_events(["log.entryAdded"]) as waiter:
69+
await create_console_api_message(bidi_session, new_context, "text1")
70+
events = await waiter.get_events(lambda events: len(events) >= 0)
71+
72+
# Make sure we didn't receive any events
73+
assert len(events) == 0
74+
75+
# Subscribe to user context and make sure we received the buffered event.
76+
await subscribe_events(events=["log.entryAdded"], user_contexts=[user_context])
77+
78+
events = await waiter.get_events(lambda events: len(events) >= 1)
79+
80+
assert len(events) == 1
81+
recursive_compare(
82+
{
83+
"text": "text1",
84+
},
85+
events[0][1],
86+
)
87+
88+
89+
async def test_subscribe_to_user_context_and_then_globally(
90+
bidi_session, subscribe_events, create_user_context, new_tab, wait_for_events
91+
):
92+
user_context = await create_user_context()
93+
new_context_in_user_context = await bidi_session.browsing_context.create(
94+
user_context=user_context, type_hint="tab"
95+
)
96+
97+
# Subscribe for log events to a specific user context
98+
await subscribe_events(events=["log.entryAdded"], user_contexts=[user_context])
99+
100+
with wait_for_events(["log.entryAdded"]) as waiter:
101+
# Trigger console event in another user context
102+
event_expected_text = await create_console_api_message(
103+
bidi_session, new_tab, "text1"
104+
)
105+
106+
events = await waiter.get_events(lambda events: len(events) >= 0)
107+
108+
assert len(events) == 0
109+
110+
expected_text = await create_console_api_message(
111+
bidi_session, new_context_in_user_context, "text2"
112+
)
113+
events = await waiter.get_events(lambda events: len(events) >= 1)
114+
115+
assert len(events) == 1
116+
recursive_compare(
117+
{
118+
"text": expected_text,
119+
},
120+
events[0][1],
121+
)
122+
123+
# Subscribe for log events globally
124+
await subscribe_events(events=["log.entryAdded"])
125+
126+
events = await waiter.get_events(lambda events: len(events) >= 2)
127+
128+
# Check that we received the buffered event
129+
assert len(events) == 2
130+
recursive_compare(
131+
{
132+
"text": event_expected_text,
133+
},
134+
events[1][1],
135+
)
136+
137+
# Trigger again events in each context
138+
expected_text = await create_console_api_message(bidi_session, new_tab, "text3")
139+
events = await waiter.get_events(lambda events: len(events) >= 3)
140+
141+
assert len(events) == 3
142+
recursive_compare(
143+
{
144+
"text": expected_text,
145+
},
146+
events[2][1],
147+
)
148+
149+
expected_text = await create_console_api_message(
150+
bidi_session, new_context_in_user_context, "text4"
151+
)
152+
events = await waiter.get_events(lambda events: len(events) >= 4)
153+
154+
assert len(events) == 4
155+
recursive_compare(
156+
{
157+
"text": expected_text,
158+
},
159+
events[3][1],
160+
)
161+
162+
163+
async def test_subscribe_to_user_context_and_then_to_browsing_context(
164+
bidi_session, subscribe_events, create_user_context, wait_for_events
165+
):
166+
user_context = await create_user_context()
167+
new_context_in_user_context = await bidi_session.browsing_context.create(
168+
user_context=user_context, type_hint="tab"
169+
)
170+
171+
# Subscribe for log events to a specific user context
172+
await subscribe_events(events=["log.entryAdded"], user_contexts=[user_context])
173+
174+
with wait_for_events(["log.entryAdded"]) as waiter:
175+
# Trigger console event in the observed context
176+
expected_text = await create_console_api_message(
177+
bidi_session, new_context_in_user_context, "text"
178+
)
179+
events = await waiter.get_events(lambda events: len(events) >= 1)
180+
181+
assert len(events) == 1
182+
recursive_compare(
183+
{
184+
"text": expected_text,
185+
},
186+
events[0][1],
187+
)
188+
189+
# Subscribe for log events to the browsing context
190+
# in the observed user context.
191+
await subscribe_events(
192+
events=["log.entryAdded"], contexts=[new_context_in_user_context["context"]]
193+
)
194+
195+
with wait_for_events(["log.entryAdded"]) as waiter:
196+
# Trigger again the event
197+
expected_text = await create_console_api_message(
198+
bidi_session, new_context_in_user_context, "text2"
199+
)
200+
events = await waiter.get_events(lambda events: len(events) >= 1)
201+
202+
assert len(events) == 1
203+
recursive_compare(
204+
{
205+
"text": expected_text,
206+
},
207+
events[0][1],
208+
)
209+
210+
# Create a new context in the default user context
211+
new_context_in_default_user_context = await bidi_session.browsing_context.create(
212+
type_hint="tab"
213+
)
214+
215+
# Subscribe for log events to the browsing context
216+
# in the default user context.
217+
await subscribe_events(
218+
events=["log.entryAdded"],
219+
contexts=[new_context_in_default_user_context["context"]],
220+
)
221+
222+
with wait_for_events(["log.entryAdded"]) as waiter:
223+
# Trigger again the event
224+
expected_text = await create_console_api_message(
225+
bidi_session, new_context_in_default_user_context, "text3"
226+
)
227+
events = await waiter.get_events(lambda events: len(events) >= 1)
228+
229+
assert len(events) == 1
230+
recursive_compare(
231+
{
232+
"text": expected_text,
233+
},
234+
events[0][1],
235+
)
236+
237+
238+
async def test_subscribe_globally_and_then_to_user_context(
239+
bidi_session, subscribe_events, create_user_context, wait_for_events
240+
):
241+
user_context = await create_user_context()
242+
new_context_in_user_context = await bidi_session.browsing_context.create(
243+
user_context=user_context, type_hint="tab"
244+
)
245+
246+
# Subscribe for log events globally
247+
await subscribe_events(events=["log.entryAdded"])
248+
249+
with wait_for_events(["log.entryAdded"]) as waiter:
250+
expected_text = await create_console_api_message(
251+
bidi_session, new_context_in_user_context, "text"
252+
)
253+
events = await waiter.get_events(lambda events: len(events) >= 1)
254+
255+
assert len(events) == 1
256+
recursive_compare(
257+
{
258+
"text": expected_text,
259+
},
260+
events[0][1],
261+
)
262+
263+
# Subscribe for log events to a specific user context
264+
await subscribe_events(events=["log.entryAdded"], user_contexts=[user_context])
265+
266+
with wait_for_events(["log.entryAdded"]) as waiter:
267+
# Trigger the event again.
268+
expected_text = await create_console_api_message(
269+
bidi_session, new_context_in_user_context, "text2"
270+
)
271+
events = await waiter.get_events(lambda events: len(events) >= 1)
272+
273+
assert len(events) == 1
274+
recursive_compare(
275+
{
276+
"text": expected_text,
277+
},
278+
events[0][1],
279+
)
280+
281+
282+
async def test_subscribe_to_browsing_context_and_then_to_user_context(
283+
bidi_session, subscribe_events, create_user_context, wait_for_events
284+
):
285+
user_context = await create_user_context()
286+
new_context_in_user_context = await bidi_session.browsing_context.create(
287+
user_context=user_context, type_hint="tab"
288+
)
289+
290+
# Subscribe for log events to browsing context
291+
await subscribe_events(
292+
events=["log.entryAdded"], contexts=[new_context_in_user_context["context"]]
293+
)
294+
295+
with wait_for_events(["log.entryAdded"]) as waiter:
296+
expected_text = await create_console_api_message(
297+
bidi_session, new_context_in_user_context, "text"
298+
)
299+
events = await waiter.get_events(lambda events: len(events) >= 1)
300+
301+
assert len(events) == 1
302+
recursive_compare(
303+
{
304+
"text": expected_text,
305+
},
306+
events[0][1],
307+
)
308+
309+
# Subscribe for log events to a specific user context
310+
await subscribe_events(events=["log.entryAdded"], user_contexts=[user_context])
311+
312+
with wait_for_events(["log.entryAdded"]) as waiter:
313+
# Trigger the event again.
314+
expected_text = await create_console_api_message(
315+
bidi_session, new_context_in_user_context, "text2"
316+
)
317+
events = await waiter.get_events(lambda events: len(events) >= 1)
318+
319+
assert len(events) == 1
320+
recursive_compare(
321+
{
322+
"text": expected_text,
323+
},
324+
events[0][1],
325+
)
326+
327+
# Create a new context in the targeted user context
328+
new_context_in_user_context_2 = await bidi_session.browsing_context.create(
329+
user_context=user_context, type_hint="tab"
330+
)
331+
332+
# Trigger again the event
333+
expected_text = await create_console_api_message(
334+
bidi_session, new_context_in_user_context_2, "text3"
335+
)
336+
events = await waiter.get_events(lambda events: len(events) >= 2)
337+
338+
assert len(events) == 2
339+
recursive_compare(
340+
{
341+
"text": expected_text,
342+
},
343+
events[1][1],
344+
)

0 commit comments

Comments
 (0)