Skip to content

Commit 5fb729b

Browse files
feat: added BrowserType.connect slow_mo param (microsoft#674)
1 parent e1e354c commit 5fb729b

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

playwright/_impl/_browser_type.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,9 @@ async def connect(
178178
if timeout is None:
179179
timeout = 30000
180180

181-
transport = WebSocketTransport(self._connection._loop, ws_endpoint, headers)
181+
transport = WebSocketTransport(
182+
self._connection._loop, ws_endpoint, headers, slow_mo
183+
)
182184
connection = Connection(
183185
self._connection._dispatcher_fiber,
184186
self._connection._object_factory,

playwright/_impl/_transport.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,15 @@ def __init__(
149149
loop: asyncio.AbstractEventLoop,
150150
ws_endpoint: str,
151151
headers: Dict[str, str] = None,
152+
slow_mo: float = None,
152153
) -> None:
153154
super().__init__(loop)
154155
Transport.__init__(self, loop)
155156

156157
self._stopped = False
157158
self.ws_endpoint = ws_endpoint
158159
self.headers = headers
160+
self.slow_mo = slow_mo
159161

160162
def request_stop(self) -> None:
161163
self._stopped = True
@@ -179,6 +181,8 @@ async def run(self) -> None:
179181
while not self._stopped:
180182
try:
181183
message = await self._connection.recv()
184+
if self.slow_mo is not None:
185+
await asyncio.sleep(self.slow_mo / 1000)
182186
if self._stopped:
183187
self.on_error_future.set_exception(
184188
Error("Playwright connection closed")

tests/sync/test_browsertype_connect.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,28 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import time
16+
1517
import pytest
1618

1719
from playwright.sync_api import BrowserType, Error
1820
from tests.server import Server
1921

2022

23+
def test_browser_type_connect_slow_mo(
24+
server: Server, browser_type: BrowserType, launch_server
25+
):
26+
remote_server = launch_server()
27+
browser = browser_type.connect(remote_server.ws_endpoint, slow_mo=100)
28+
browser_context = browser.new_context()
29+
page = browser_context.new_page()
30+
t1 = time.monotonic()
31+
assert page.evaluate("11 * 11") == 121
32+
assert (time.monotonic() - t1) >= 0.100
33+
page.goto(server.EMPTY_PAGE)
34+
browser.close()
35+
36+
2137
def test_browser_type_connect_should_be_able_to_reconnect_to_a_browser(
2238
server: Server, browser_type: BrowserType, launch_server
2339
):

0 commit comments

Comments
 (0)