vietnamese
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
"""Search (clear and OMEMO messages) and the shared files drawer, on a phone screen."""
|
||||
import asyncio, os
|
||||
from playwright.async_api import async_playwright
|
||||
from browser import login, BASE, OUT
|
||||
|
||||
S = os.path.dirname(os.path.abspath(__file__))
|
||||
PHONE = {"width": 390, "height": 844}
|
||||
|
||||
|
||||
async def upload(page, path):
|
||||
await page.evaluate("Upload_ajaxGetPanel()")
|
||||
await page.wait_for_selector("#upload", timeout=10000)
|
||||
await page.set_input_files("input#file", path)
|
||||
await page.wait_for_timeout(1500)
|
||||
await page.click("#upload_button")
|
||||
await page.wait_for_timeout(4000)
|
||||
|
||||
|
||||
async def main():
|
||||
async with async_playwright() as p:
|
||||
browser = await p.chromium.launch()
|
||||
actx, alice, aerr = await login(browser, "alice@localhost", "alicepass", "filesalice")
|
||||
bctx, bob, berr = await login(browser, "bob@localhost", "bobpass", "filesbob")
|
||||
await alice.wait_for_timeout(4000)
|
||||
|
||||
# Clear text messages and files
|
||||
await alice.goto(BASE + "/chat/bob@localhost")
|
||||
await alice.wait_for_selector("#chat_textarea", timeout=15000)
|
||||
await alice.wait_for_timeout(2000)
|
||||
await alice.fill("#chat_textarea", "Xin chào Bob, hẹn gặp lại")
|
||||
await alice.press("#chat_textarea", "Enter")
|
||||
await alice.wait_for_timeout(1500)
|
||||
await upload(alice, f"{S}/test.png")
|
||||
await upload(alice, f"{S}/notes.txt")
|
||||
|
||||
# OMEMO messages and an encrypted picture
|
||||
await alice.evaluate("ChatOmemo.enableContactState('bob@localhost', false)")
|
||||
await alice.wait_for_timeout(5000)
|
||||
print("alice omemo:", await alice.evaluate("Chat.getOmemoState()"))
|
||||
await alice.fill("#chat_textarea", "Bí mật: CHÀO buổi sáng")
|
||||
await alice.press("#chat_textarea", "Enter")
|
||||
await alice.wait_for_timeout(3000)
|
||||
await upload(alice, f"{S}/test.png")
|
||||
|
||||
# Bob reads them (decrypted into his browser), on a phone
|
||||
await bob.set_viewport_size(PHONE)
|
||||
await bob.goto(BASE + "/chat/alice@localhost")
|
||||
await bob.wait_for_selector("#chat_textarea", timeout=15000)
|
||||
await bob.wait_for_timeout(6000)
|
||||
await bob.screenshot(path=f"{OUT}/files_1_chat_phone.png")
|
||||
print("bob bubbles:", (await bob.locator("#chat_widget .bubble p").all_inner_texts())[-4:])
|
||||
|
||||
# Search, without accents: finds the clear and the encrypted message
|
||||
await bob.evaluate("ChatActions_ajaxShowSearchDialog('alice@localhost', false)")
|
||||
await bob.wait_for_selector("form[name=search] input", timeout=10000)
|
||||
await bob.wait_for_timeout(1000)
|
||||
await bob.fill("form[name=search] input", "chao")
|
||||
await bob.wait_for_timeout(3000)
|
||||
print("search 'chao':", await bob.locator("#chat_search #message_preview li p").all_inner_texts())
|
||||
await bob.screenshot(path=f"{OUT}/files_2_search_phone.png")
|
||||
await bob.evaluate("Drawer.clear()")
|
||||
await bob.wait_for_timeout(1000)
|
||||
|
||||
# Shared files
|
||||
await bob.evaluate("ChatActions_ajaxShowFiles('alice@localhost', false)")
|
||||
await bob.wait_for_selector("#chat_files", timeout=10000)
|
||||
await bob.wait_for_timeout(5000)
|
||||
for tab in ("images", "videos", "recordings", "files"):
|
||||
count = await bob.locator(f"#chat_files [data-list={tab}] > li").count()
|
||||
print(f"files {tab}:", count)
|
||||
await bob.screenshot(path=f"{OUT}/files_3_images_phone.png")
|
||||
await bob.evaluate("ChatActions.filesTab('files')")
|
||||
await bob.wait_for_timeout(500)
|
||||
await bob.screenshot(path=f"{OUT}/files_4_files_phone.png")
|
||||
await bob.evaluate("ChatActions.filesTab('videos')")
|
||||
await bob.wait_for_timeout(500)
|
||||
await bob.screenshot(path=f"{OUT}/files_5_empty_phone.png")
|
||||
await bob.evaluate("Drawer.clear()")
|
||||
await bob.wait_for_timeout(1000)
|
||||
|
||||
# On a phone the files button moves to the menu
|
||||
await bob.click("#chat_widget header .show_context_menu")
|
||||
await bob.wait_for_timeout(1000)
|
||||
print("phone: header button", await bob.locator("#chat_widget header .files_button").first.is_visible(),
|
||||
"| menu item", await bob.locator("#chat_widget li.files_menu").first.is_visible())
|
||||
await bob.screenshot(path=f"{OUT}/files_6_menu_phone.png")
|
||||
await bob.keyboard.press("Escape")
|
||||
await bob.set_viewport_size({"width": 1400, "height": 900})
|
||||
await bob.wait_for_timeout(1000)
|
||||
print("desktop: header button", await bob.locator("#chat_widget header .files_button").first.is_visible())
|
||||
await bob.set_viewport_size(PHONE)
|
||||
|
||||
width = await bob.evaluate("document.documentElement.scrollWidth")
|
||||
print("page width:", width, "(viewport 390)")
|
||||
|
||||
for e in aerr + berr:
|
||||
print(e)
|
||||
await browser.close()
|
||||
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user