41 lines
2.2 KiB
Python
41 lines
2.2 KiB
Python
import asyncio
|
|
from playwright.async_api import async_playwright
|
|
from browser import login, BASE, OUT
|
|
|
|
async def main():
|
|
async with async_playwright() as p:
|
|
browser = await p.chromium.launch(args=["--use-fake-ui-for-media-stream", "--use-fake-device-for-media-stream"])
|
|
actx, alice, aerr = await login(browser, "alice@localhost", "alicepass", "callalice")
|
|
bctx, bob, berr = await login(browser, "bob@localhost", "bobpass", "callbob")
|
|
for c in (actx, bctx):
|
|
await c.grant_permissions(["microphone", "camera"], origin=BASE)
|
|
await alice.goto(BASE + "/chat/bob@localhost")
|
|
await alice.wait_for_selector("#chat_textarea", timeout=15000)
|
|
await alice.wait_for_timeout(3000)
|
|
await alice.screenshot(path=f"{OUT}/call_0_header.png")
|
|
btn = alice.locator("#chat_header span.control.icon[title]").first
|
|
print("call buttons:", await alice.locator("#chat_header span.control.icon[title]").count())
|
|
await btn.click()
|
|
await alice.wait_for_selector("#lobby_start:not(.disabled)", timeout=15000)
|
|
await alice.screenshot(path=f"{OUT}/call_1_lobby.png")
|
|
await alice.click("#lobby_start")
|
|
await bob.wait_for_selector("#lobby_start", timeout=15000)
|
|
await bob.wait_for_timeout(1500)
|
|
await bob.screenshot(path=f"{OUT}/call_2_incoming.png")
|
|
await bob.wait_for_selector("#lobby_start:not(.disabled)", timeout=15000)
|
|
await bob.click("#lobby_start")
|
|
await alice.wait_for_timeout(6000)
|
|
await alice.screenshot(path=f"{OUT}/call_3_alice.png")
|
|
await bob.screenshot(path=f"{OUT}/call_3_bob.png")
|
|
states = await alice.evaluate("Object.values(MovimJingles.sessions || {}).map(s => s.pc && s.pc.connectionState)")
|
|
print("alice peer connection states:", states)
|
|
# Hang up
|
|
await alice.evaluate("Visio_ajaxGoodbye(document.querySelector('#visio').dataset.jid || 'bob@localhost', Object.keys(MovimJingles.sessions)[0] ? MovimJingles.sessions[Object.keys(MovimJingles.sessions)[0]].id : '')")
|
|
await alice.wait_for_timeout(3000)
|
|
await bob.screenshot(path=f"{OUT}/call_4_bob_end.png")
|
|
for e in aerr + berr:
|
|
print(e)
|
|
await browser.close()
|
|
|
|
asyncio.run(main())
|