From 7c810f2fe428d60dc79f01095bb97b1d8046dc17 Mon Sep 17 00:00:00 2001 From: Maksim Sadym <69349599+sadym-chromium@users.noreply.github.com> Date: Wed, 15 May 2024 15:20:02 +0200 Subject: [PATCH] build(chrome): update the pinned browser version + fix (#2206) Addressing https://github.com/GoogleChromeLabs/chromium-bidi/issues/2205. * Bump from https://github.com/GoogleChromeLabs/chromium-bidi/pull/2197 * Fix e2e test. Filter out optional initial load event. --------- Co-authored-by: Browser Automation Bot --- .browser | 2 +- package-lock.json | 8 +-- package.json | 2 +- tests/browsing_context/test_create.py | 97 ++++++++++++--------------- tests/conftest.py | 14 +++- 5 files changed, 59 insertions(+), 64 deletions(-) diff --git a/.browser b/.browser index 41dbad0d3b..6bb6915f22 100644 --- a/.browser +++ b/.browser @@ -1 +1 @@ -chrome@126.0.6465.2 \ No newline at end of file +chrome@126.0.6478.2 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ca948489f9..969dad1845 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "chai": "4.4.1", "chai-as-promised": "7.1.1", "debug": "4.3.4", - "devtools-protocol": "0.0.1297280", + "devtools-protocol": "0.0.1299070", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "3.6.1", @@ -3632,9 +3632,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1297280", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1297280.tgz", - "integrity": "sha512-AHOopnHxyQV+Tw2vrvvkhVOl/KP55GDC7WJPIRC5+gNSmv+oOdhYkifVd9MY2kJ9/Dg8r7Ji5PQO1vnqtW2Jvw==", + "version": "0.0.1299070", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1299070.tgz", + "integrity": "sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==", "dev": true }, "node_modules/diff": { diff --git a/package.json b/package.json index 229531db33..06bc82e192 100644 --- a/package.json +++ b/package.json @@ -165,7 +165,7 @@ "chai": "4.4.1", "chai-as-promised": "7.1.1", "debug": "4.3.4", - "devtools-protocol": "0.0.1297280", + "devtools-protocol": "0.0.1299070", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "3.6.1", diff --git a/tests/browsing_context/test_create.py b/tests/browsing_context/test_create.py index 4fae0c5d5c..fa805bc42f 100644 --- a/tests/browsing_context/test_create.py +++ b/tests/browsing_context/test_create.py @@ -205,69 +205,56 @@ async def test_browsingContext_create_withUserGesture_eventsEmitted( } }) - # Read event messages. The order can vary, so read all and sort them. + # Read event messages. The order can vary, so read all and sort them. Ignore + # optional "browsingContext.domContentLoaded" event for "about:blank" pages. # Expected sorted messages order: # 1. Command result. # 2. "browsingContext.contextCreated" event. - # 3. "browsingContext.domContentLoaded" event for "about:blank". - # 4. "browsingContext.domContentLoaded" event for the example_url. - # 5. "browsingContext.load" event. - messages = await read_sorted_messages(5) + # (optional). "browsingContext.domContentLoaded" event for "about:blank". + # Omitted in headful mode. + # 3. "browsingContext.domContentLoaded" event for the example_url. + # 4. "browsingContext.load" event. + messages = await read_sorted_messages( + 4, lambda m: 'method' not in m or + (m['method'] != 'browsingContext.domContentLoaded') or m['params'][ + 'url'] != 'about:blank') # Get the new context id from the "browsingContext.contextCreated" event. new_context_id = messages[1]['params']['context'] - assert messages == [ - { - 'id': command_id, - 'type': 'success', - 'result': ANY_DICT - }, - { - 'type': 'event', - 'method': 'browsingContext.contextCreated', - 'params': { - 'context': ANY_STR, - 'url': 'about:blank', - 'children': None, - 'parent': None, - 'userContext': 'default' - } - }, - # TODO: CDP sends Lifecycle events when we send Lifecycle event enable - # These events correspond to the initial about:blank creation - # We should try to ignore the from Mapper. - { - 'type': 'event', - 'method': 'browsingContext.domContentLoaded', - 'params': { - 'context': new_context_id, - 'navigation': ANY_STR, - 'timestamp': ANY_TIMESTAMP, - 'url': 'about:blank' - } - }, - { - 'type': 'event', - 'method': 'browsingContext.domContentLoaded', - 'params': { - 'context': new_context_id, - 'navigation': ANY_STR, - 'timestamp': ANY_TIMESTAMP, - 'url': example_url - } - }, - { - 'type': 'event', - 'method': 'browsingContext.load', - 'params': { - 'context': new_context_id, - 'navigation': ANY_STR, - 'timestamp': ANY_TIMESTAMP, - 'url': example_url - } + assert messages == [{ + 'id': command_id, + 'type': 'success', + 'result': ANY_DICT + }, { + 'type': 'event', + 'method': 'browsingContext.contextCreated', + 'params': { + 'context': ANY_STR, + 'url': 'about:blank', + 'children': None, + 'parent': None, + 'userContext': 'default' + } + }, { + 'type': 'event', + 'method': 'browsingContext.domContentLoaded', + 'params': { + 'context': new_context_id, + 'navigation': ANY_STR, + 'timestamp': ANY_TIMESTAMP, + 'url': example_url + } + }, { + 'type': 'event', + 'method': 'browsingContext.load', + 'params': { + 'context': new_context_id, + 'navigation': ANY_STR, + 'timestamp': ANY_TIMESTAMP, + 'url': example_url } - ] + }] @pytest.mark.asyncio diff --git a/tests/conftest.py b/tests/conftest.py index b538e37dd5..1769ad69d2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -16,6 +16,7 @@ import asyncio import os import ssl +from collections.abc import Callable from pathlib import Path from uuid import uuid4 @@ -294,11 +295,18 @@ def cacheable_url(local_server: LocalHttpServer): @pytest.fixture def read_sorted_messages(websocket): """Read the given number of messages from the websocket, and returns them - in consistent order.""" - async def read_sorted_messages(message_count): + in consistent order. Ignore messages that do not match the filter.""" + async def read_sorted_messages( + message_count, + filter_lambda: Callable[[dict], bool] = lambda _: True): messages = [] for _ in range(message_count): - messages.append(await read_JSON_message(websocket)) + # Get the next message matching the filter. + while True: + message = await read_JSON_message(websocket) + if filter_lambda(message): + break + messages.append(message) messages.sort(key=lambda x: x["method"] if "method" in x else str(x["id"]) if "id" in x else "") return messages