コード例 #1
0
def test_connect_to_closed_server_without_hangs(browser_type: BrowserType,
                                                launch_server):
    remote_server = launch_server()
    remote_server.kill()
    with pytest.raises(Error) as exc:
        browser_type.connect(remote_server.ws_endpoint)
    assert "websocket.connect: " in exc.value.message
コード例 #2
0
def test_browser_type_connect_disconnected_event_should_be_emitted_when_browser_is_closed_or_server_is_closed(
    browser_type: BrowserType, launch_server: Callable[[], RemoteServer]
) -> None:
    # Launch another server to not affect other tests.
    remote = launch_server()

    browser1 = browser_type.connect(remote.ws_endpoint)
    browser2 = browser_type.connect(remote.ws_endpoint)

    disconnected1 = []
    disconnected2 = []
    browser1.on("disconnected", lambda browser: disconnected1.append(True))
    browser2.on("disconnected", lambda browser: disconnected2.append(True))

    page2 = browser2.new_page()

    browser1.close()
    assert len(disconnected1) == 1
    assert len(disconnected2) == 0

    remote.kill()
    assert len(disconnected1) == 1

    with pytest.raises(Error):
        # Tickle connection so that it gets a chance to dispatch disconnect event.
        page2.title()
    assert len(disconnected2) == 1
コード例 #3
0
def test_browser_type_connect_set_browser_connected_state(
        browser_type: BrowserType, launch_server):
    remote_server = launch_server()
    browser = browser_type.connect(remote_server.ws_endpoint)
    assert browser.is_connected()
    browser.close()
    assert browser.is_connected() is False
コード例 #4
0
def test_browser_type_connect_set_browser_connected_state(
    browser_type: BrowserType, launch_server: Callable[[], RemoteServer]
) -> None:
    remote_server = launch_server()
    browser = browser_type.connect(remote_server.ws_endpoint)
    assert browser.is_connected()
    browser.close()
    assert browser.is_connected() is False
コード例 #5
0
def test_browser_type_connect_should_be_able_to_reconnect_to_a_browser(
        server: Server, browser_type: BrowserType, launch_server):
    remote_server = launch_server()
    browser = browser_type.connect(remote_server.ws_endpoint)
    browser_context = browser.new_context()
    assert len(browser_context.pages) == 0
    page = browser_context.new_page()
    assert len(browser_context.pages) == 1
    assert page.evaluate("11 * 11") == 121
    page.goto(server.EMPTY_PAGE)
    browser.close()

    browser = browser_type.connect(remote_server.ws_endpoint)
    browser_context = browser.new_context()
    page = browser_context.new_page()
    page.goto(server.EMPTY_PAGE)
    browser.close()
コード例 #6
0
def test_browser_type_disconnected_event_should_have_browser_as_argument(
        browser_type: BrowserType, launch_server):
    remote_server = launch_server()
    browser = browser_type.connect(remote_server.ws_endpoint)
    event_payloads = []
    browser.on("disconnected", lambda b: event_payloads.append(b))
    browser.close()
    assert event_payloads[0] == browser
コード例 #7
0
def test_browser_type_connect_should_be_able_to_connect_two_browsers_at_the_same_time(
        browser_type: BrowserType, launch_server):
    remote_server = launch_server()
    browser1 = browser_type.connect(remote_server.ws_endpoint)
    assert len(browser1.contexts) == 0
    browser1.new_context()
    assert len(browser1.contexts) == 1

    browser2 = browser_type.connect(remote_server.ws_endpoint)
    assert len(browser2.contexts) == 0
    browser2.new_context()
    assert len(browser2.contexts) == 1
    assert len(browser1.contexts) == 1

    browser1.close()
    page2 = browser2.new_page()
    # original browser should still work
    assert page2.evaluate("7 * 6") == 42

    browser2.close()
コード例 #8
0
def test_browser_type_connect_slow_mo(
    server: Server, browser_type: BrowserType, launch_server: Callable[[], RemoteServer]
) -> None:
    remote_server = launch_server()
    browser = browser_type.connect(remote_server.ws_endpoint, slow_mo=100)
    browser_context = browser.new_context()
    t1 = time.monotonic()
    page = browser_context.new_page()
    assert page.evaluate("11 * 11") == 121
    assert (time.monotonic() - t1) >= 0.2
    page.goto(server.EMPTY_PAGE)
    browser.close()
コード例 #9
0
def test_browser_type_connect_should_throw_when_used_after_is_connected_returns_false(
        browser_type: BrowserType, launch_server):
    remote_server = launch_server()
    browser = browser_type.connect(remote_server.ws_endpoint)
    page = browser.new_page()

    remote_server.kill()

    with pytest.raises(Error) as exc_info:
        page.evaluate("1 + 1")
    assert "Playwright connection closed" == exc_info.value.message
    assert browser.is_connected() is False
コード例 #10
0
def test_browser_type_connect_should_forward_close_events_on_remote_kill(
    browser_type: BrowserType, launch_server: Callable[[], RemoteServer]
) -> None:
    # Launch another server to not affect other tests.
    remote = launch_server()

    browser = browser_type.connect(remote.ws_endpoint)
    context = browser.new_context()
    page = context.new_page()

    events = []
    browser.on("disconnected", lambda context: events.append("browser::disconnected"))
    context.on("close", lambda context: events.append("context::close"))
    page.on("close", lambda page: events.append("page::close"))
    remote.kill()
    with pytest.raises(Error):
        page.title()
    assert events == ["page::close", "context::close", "browser::disconnected"]
コード例 #11
0
def test_browser_type_connect_should_forward_close_events_to_pages(
        browser_type: BrowserType, launch_server):
    # Launch another server to not affect other tests.
    remote = launch_server()

    browser = browser_type.connect(remote.ws_endpoint)
    context = browser.new_context()
    page = context.new_page()

    events = []
    browser.on("disconnected", lambda: events.append("browser::disconnected"))
    context.on("close", lambda: events.append("context::close"))
    page.on("close", lambda: events.append("page::close"))

    browser.close()
    assert events == ["page::close", "context::close", "browser::disconnected"]
    remote.kill()
    assert events == ["page::close", "context::close", "browser::disconnected"]