0
0
Fork 0
mirror of https://github.com/nextcloud/docker.git synced 2025-03-16 19:35:08 +01:00
nextcloud-docker/nextcloud_talk_playwright.py

96 lines
3.8 KiB
Python
Raw Normal View History

2023-06-09 10:43:34 +02:00
from playwright.sync_api import Playwright, sync_playwright
def create_conversation(playwright: Playwright) -> str:
2023-06-12 12:22:13 +02:00
headless = True
browser = playwright.chromium.launch(headless=headless)
2023-06-09 10:43:34 +02:00
context = browser.new_context()
page = context.new_page()
2023-06-09 11:49:51 +02:00
page.goto("http://nc/")
2023-06-09 10:43:34 +02:00
page.get_by_label("Account name or email").click()
page.get_by_label("Account name or email").fill("Crash")
page.get_by_label("Account name or email").press("Tab")
page.get_by_label("Password", exact=True).fill("Override")
page.get_by_role("button", name="Log in").click()
2023-06-09 14:41:11 +02:00
# Wait for the modal to load. As it seems you can't close it while it is showing the opening animation.
page.get_by_role("button", name="Close modal").click(timeout=15_000)
2023-06-09 10:43:34 +02:00
page.get_by_role("link", name="Talk", exact=True).click()
2023-06-09 15:05:32 +02:00
page.wait_for_url("**/apps/spreed/")
# Headless browsers trigger a warning in Nextcloud, however they actually work fine
2023-06-12 12:22:13 +02:00
if headless:
page.wait_for_selector('.toast-close')
page.click('.toast-close')
2023-06-12 12:22:13 +02:00
page.wait_for_selector('.toast-close')
page.click('.toast-close')
2023-06-09 10:43:34 +02:00
page.get_by_role("button", name="Create a new group conversation").click()
page.get_by_placeholder("Conversation name").fill("Random talk")
page.locator("label").filter(has_text="Allow guests to join via link").locator("svg").click()
page.get_by_role("button", name="Create conversation").click()
page.get_by_role("button", name="Copy conversation link").click()
page.close()
# ---------------------
context.close()
browser.close()
return page.url
def talk(playwright: Playwright, url: str) -> None:
2023-06-12 12:22:13 +02:00
headless = True
browser_one = playwright.chromium.launch(headless=headless, slow_mo=1500)
browser_two = playwright.chromium.launch(headless=headless, slow_mo=1500)
2023-06-09 10:43:34 +02:00
context_one = browser_one.new_context()
context_two = browser_two.new_context()
user_one = context_one.new_page()
user_two = context_two.new_page()
user_one.goto(url)
user_two.goto(url)
# Headless browsers trigger a warning in Nextcloud, however they actually work fine
2023-06-12 12:22:13 +02:00
if headless:
user_one.wait_for_selector('.toast-close')
user_one.click('.toast-close')
2023-06-12 12:22:13 +02:00
user_two.wait_for_selector('.toast-close')
user_two.click('.toast-close')
2023-06-09 10:43:34 +02:00
user_one.get_by_role("button", name="Edit").click()
user_two.get_by_role("button", name="Edit").click()
user_one.get_by_placeholder("Guest").fill("Dude#1")
user_two.get_by_placeholder("Guest").fill("Dude#2")
user_one.get_by_role("button", name="Save name").click()
user_two.get_by_role("button", name="Save name").click()
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").click()
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").fill("Heya")
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").press("Enter")
user_two.get_by_role("textbox", name="Write message, @ to mention someone …").click()
user_two.get_by_role("textbox", name="Write message, @ to mention someone …").fill("Let's send some /dev/random")
user_two.get_by_role("textbox", name="Write message, @ to mention someone …").press("Enter")
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").click()
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").fill("Lets!")
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").press("Enter")
user_one.close()
user_two.close()
# ---------------------
context_one.close()
context_two.close()
browser_one.close()
browser_two.close()
with sync_playwright() as playwright:
conversation_link = create_conversation(playwright)
talk(playwright, conversation_link)