|
15 | 15 | import asyncio |
16 | 16 | import base64 |
17 | 17 | import inspect |
| 18 | +import re |
18 | 19 | import sys |
19 | 20 | from pathlib import Path |
20 | 21 | from types import SimpleNamespace |
@@ -787,13 +788,26 @@ def expect_event( |
787 | 788 | event: str, |
788 | 789 | predicate: Callable = None, |
789 | 790 | timeout: float = None, |
| 791 | + ) -> EventContextManagerImpl: |
| 792 | + return self._expect_event( |
| 793 | + event, predicate, timeout, f'waiting for event "{event}"' |
| 794 | + ) |
| 795 | + |
| 796 | + def _expect_event( |
| 797 | + self, |
| 798 | + event: str, |
| 799 | + predicate: Callable = None, |
| 800 | + timeout: float = None, |
| 801 | + log_line: str = None, |
790 | 802 | ) -> EventContextManagerImpl: |
791 | 803 | if timeout is None: |
792 | 804 | timeout = self._timeout_settings.timeout() |
793 | 805 | wait_helper = WaitHelper(self, f"page.expect_event({event})") |
794 | 806 | wait_helper.reject_on_timeout( |
795 | 807 | timeout, f'Timeout while waiting for event "{event}"' |
796 | 808 | ) |
| 809 | + if log_line: |
| 810 | + wait_helper.log(log_line) |
797 | 811 | if event != Page.Events.Crash: |
798 | 812 | wait_helper.reject_on_event(self, Page.Events.Crash, Error("Page crashed")) |
799 | 813 | if event != Page.Events.Close: |
@@ -858,8 +872,13 @@ def my_predicate(request: Request) -> bool: |
858 | 872 | return predicate(request) |
859 | 873 | return True |
860 | 874 |
|
861 | | - return self.expect_event( |
862 | | - Page.Events.Request, predicate=my_predicate, timeout=timeout |
| 875 | + trimmed_url = trim_url(url_or_predicate) |
| 876 | + log_line = f"waiting for request {trimmed_url}" if trimmed_url else None |
| 877 | + return self._expect_event( |
| 878 | + Page.Events.Request, |
| 879 | + predicate=my_predicate, |
| 880 | + timeout=timeout, |
| 881 | + log_line=log_line, |
863 | 882 | ) |
864 | 883 |
|
865 | 884 | def expect_request_finished( |
@@ -892,8 +911,13 @@ def my_predicate(response: Response) -> bool: |
892 | 911 | return predicate(response) |
893 | 912 | return True |
894 | 913 |
|
895 | | - return self.expect_event( |
896 | | - Page.Events.Response, predicate=my_predicate, timeout=timeout |
| 914 | + trimmed_url = trim_url(url_or_predicate) |
| 915 | + log_line = f"waiting for response {trimmed_url}" if trimmed_url else None |
| 916 | + return self._expect_event( |
| 917 | + Page.Events.Response, |
| 918 | + predicate=my_predicate, |
| 919 | + timeout=timeout, |
| 920 | + log_line=log_line, |
897 | 921 | ) |
898 | 922 |
|
899 | 923 | def expect_websocket( |
@@ -986,3 +1010,17 @@ async def call(self, func: Callable) -> None: |
986 | 1010 | "reject", dict(error=dict(error=serialize_error(e, tb))) |
987 | 1011 | ) |
988 | 1012 | ) |
| 1013 | + |
| 1014 | + |
| 1015 | +def trim_url(param: URLMatchRequest) -> Optional[str]: |
| 1016 | + if isinstance(param, re.Pattern): |
| 1017 | + return trim_end(param.pattern) |
| 1018 | + if isinstance(param, str): |
| 1019 | + return trim_end(param) |
| 1020 | + return None |
| 1021 | + |
| 1022 | + |
| 1023 | +def trim_end(s: str) -> str: |
| 1024 | + if len(s) > 50: |
| 1025 | + return s[:50] + "\u2026" |
| 1026 | + return s |
0 commit comments