|
| 1 | +import asyncio |
1 | 2 | import base64 |
2 | 3 | from unittest.mock import ANY, AsyncMock, MagicMock, patch |
3 | 4 |
|
@@ -110,6 +111,53 @@ async def test_start_browser_failure(mock_browser): |
110 | 111 | with pytest.raises(exceptions.FailedToStartBrowser): |
111 | 112 | await mock_browser.start() |
112 | 113 |
|
| 114 | +@pytest.mark.asyncio |
| 115 | +async def test_start_browser_failure_with_start_timeout(mock_browser): |
| 116 | + browser_launched = False |
| 117 | + |
| 118 | + async def launch_browser_later(): |
| 119 | + nonlocal browser_launched |
| 120 | + await asyncio.sleep(2) |
| 121 | + browser_launched = True |
| 122 | + |
| 123 | + def start_browser_process_side_effect(*args, **kwargs): |
| 124 | + asyncio.create_task(launch_browser_later()) |
| 125 | + |
| 126 | + async def ping_side_effect(): |
| 127 | + nonlocal browser_launched |
| 128 | + return browser_launched |
| 129 | + |
| 130 | + mock_browser.options.start_timeout = 1 |
| 131 | + mock_browser._get_valid_tab_id = AsyncMock(return_value='page1') |
| 132 | + mock_browser._browser_process_manager.start_browser_process.side_effect = start_browser_process_side_effect |
| 133 | + mock_browser._connection_handler.ping = AsyncMock(side_effect=ping_side_effect) |
| 134 | + |
| 135 | + with pytest.raises(exceptions.FailedToStartBrowser): |
| 136 | + await mock_browser.start() |
| 137 | + |
| 138 | +@pytest.mark.asyncio |
| 139 | +async def test_start_browser_success_with_start_timeout(mock_browser): |
| 140 | + browser_launched = False |
| 141 | + |
| 142 | + async def launch_browser_later(): |
| 143 | + nonlocal browser_launched |
| 144 | + await asyncio.sleep(2) |
| 145 | + browser_launched = True |
| 146 | + |
| 147 | + def start_browser_process_side_effect(*args, **kwargs): |
| 148 | + asyncio.create_task(launch_browser_later()) |
| 149 | + |
| 150 | + async def ping_side_effect(): |
| 151 | + nonlocal browser_launched |
| 152 | + return browser_launched |
| 153 | + |
| 154 | + mock_browser.options.start_timeout = 3 |
| 155 | + mock_browser._get_valid_tab_id = AsyncMock(return_value='page1') |
| 156 | + mock_browser._browser_process_manager.start_browser_process.side_effect = start_browser_process_side_effect |
| 157 | + mock_browser._connection_handler.ping = AsyncMock(side_effect=ping_side_effect) |
| 158 | + |
| 159 | + await mock_browser.start() |
| 160 | + |
113 | 161 | @pytest.mark.asyncio |
114 | 162 | async def test_proxy_configuration(mock_browser): |
115 | 163 | mock_browser._proxy_manager.get_proxy_credentials = MagicMock( |
|
0 commit comments