36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
import os
|
|
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()
|
|
ctx, page, errors = await login(browser, "alice@localhost", "alicepass", "logout")
|
|
await page.evaluate("Presence_ajaxAskLogout()")
|
|
await page.wait_for_timeout(800)
|
|
await page.click("#dialog footer button[name=submit]")
|
|
await page.wait_for_url("**/login**", timeout=15000)
|
|
await page.wait_for_timeout(2000)
|
|
print("after logout:", page.url, "quick login keys:", await page.evaluate("localStorage.getItem('quickDeviceId')"))
|
|
await page.screenshot(path=f"{OUT}/logout.png")
|
|
# Login again, then reload: quick login must work after a server restart
|
|
await page.fill("input#username", "alice@localhost")
|
|
await page.fill("input#password", "alicepass")
|
|
await page.click("#login_widget input[type=submit]")
|
|
await page.wait_for_url("**/chat**", timeout=30000)
|
|
print("logged again:", page.url)
|
|
import subprocess
|
|
subprocess.run([os.path.join(os.path.dirname(os.path.abspath(__file__)), "run.sh")])
|
|
await page.wait_for_timeout(1000)
|
|
await page.reload()
|
|
await page.wait_for_url("**/chat**", timeout=40000)
|
|
await page.wait_for_timeout(8000)
|
|
print("after server restart:", page.url)
|
|
await page.screenshot(path=f"{OUT}/restart.png")
|
|
for e in errors:
|
|
print(e[:200])
|
|
await browser.close()
|
|
|
|
asyncio.run(main())
|