|
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