2525
2626class AssertionsBase :
2727 def __init__ (
28- self , locator : Locator , is_not : bool = False , message : Optional [str ] = None
28+ self ,
29+ locator : Locator ,
30+ timeout : float = None ,
31+ is_not : bool = False ,
32+ message : Optional [str ] = None ,
2933 ) -> None :
3034 self ._actual_locator = locator
3135 self ._loop = locator ._loop
3236 self ._dispatcher_fiber = locator ._dispatcher_fiber
37+ self ._timeout = timeout
3338 self ._is_not = is_not
3439 self ._custom_message = message
3540
@@ -43,7 +48,7 @@ async def _expect_impl(
4348 __tracebackhide__ = True
4449 expect_options ["isNot" ] = self ._is_not
4550 if expect_options .get ("timeout" ) is None :
46- expect_options ["timeout" ] = 5_000
51+ expect_options ["timeout" ] = self . _timeout or 5_000
4752 if expect_options ["isNot" ]:
4853 message = message .replace ("expected to" , "expected not to" )
4954 if "useInnerText" in expect_options and expect_options ["useInnerText" ] is None :
@@ -67,14 +72,20 @@ async def _expect_impl(
6772
6873class PageAssertions (AssertionsBase ):
6974 def __init__ (
70- self , page : Page , is_not : bool = False , message : Optional [str ] = None
75+ self ,
76+ page : Page ,
77+ timeout : float = None ,
78+ is_not : bool = False ,
79+ message : Optional [str ] = None ,
7180 ) -> None :
72- super ().__init__ (page .locator (":root" ), is_not , message )
81+ super ().__init__ (page .locator (":root" ), timeout , is_not , message )
7382 self ._actual_page = page
7483
7584 @property
7685 def _not (self ) -> "PageAssertions" :
77- return PageAssertions (self ._actual_page , not self ._is_not , self ._custom_message )
86+ return PageAssertions (
87+ self ._actual_page , self ._timeout , not self ._is_not , self ._custom_message
88+ )
7889
7990 async def to_have_title (
8091 self , title_or_reg_exp : Union [Pattern [str ], str ], timeout : float = None
@@ -120,15 +131,19 @@ async def not_to_have_url(
120131
121132class LocatorAssertions (AssertionsBase ):
122133 def __init__ (
123- self , locator : Locator , is_not : bool = False , message : Optional [str ] = None
134+ self ,
135+ locator : Locator ,
136+ timeout : float = None ,
137+ is_not : bool = False ,
138+ message : Optional [str ] = None ,
124139 ) -> None :
125- super ().__init__ (locator , is_not , message )
140+ super ().__init__ (locator , timeout , is_not , message )
126141 self ._actual_locator = locator
127142
128143 @property
129144 def _not (self ) -> "LocatorAssertions" :
130145 return LocatorAssertions (
131- self ._actual_locator , not self ._is_not , self ._custom_message
146+ self ._actual_locator , self . _timeout , not self ._is_not , self ._custom_message
132147 )
133148
134149 async def to_contain_text (
@@ -676,18 +691,23 @@ async def not_to_be_in_viewport(
676691
677692class APIResponseAssertions :
678693 def __init__ (
679- self , response : APIResponse , is_not : bool = False , message : Optional [str ] = None
694+ self ,
695+ response : APIResponse ,
696+ timeout : float = None ,
697+ is_not : bool = False ,
698+ message : Optional [str ] = None ,
680699 ) -> None :
681700 self ._loop = response ._loop
682701 self ._dispatcher_fiber = response ._dispatcher_fiber
702+ self ._timeout = timeout
683703 self ._is_not = is_not
684704 self ._actual = response
685705 self ._custom_message = message
686706
687707 @property
688708 def _not (self ) -> "APIResponseAssertions" :
689709 return APIResponseAssertions (
690- self ._actual , not self ._is_not , self ._custom_message
710+ self ._actual , self . _timeout , not self ._is_not , self ._custom_message
691711 )
692712
693713 async def to_be_ok (
0 commit comments