mirror of
https://github.com/nextcloud/docker.git
synced 2025-03-15 19:05:09 +01:00
Full talk scenario
This commit is contained in:
parent
06e8f343d1
commit
39331d8881
2 changed files with 54 additions and 38 deletions
|
@ -18,7 +18,6 @@ def main():
|
||||||
|
|
||||||
# 2. Install all Apps
|
# 2. Install all Apps
|
||||||
install_selector = '.button-vue--vue-primary'
|
install_selector = '.button-vue--vue-primary'
|
||||||
page.wait_for_selector(install_selector)
|
|
||||||
page.click(install_selector)
|
page.click(install_selector)
|
||||||
|
|
||||||
# 3. Dashboard
|
# 3. Dashboard
|
||||||
|
|
|
@ -1,5 +1,19 @@
|
||||||
from playwright.sync_api import Playwright, sync_playwright
|
import random
|
||||||
|
import string
|
||||||
|
|
||||||
|
from playwright.sync_api import Playwright, sync_playwright, expect
|
||||||
|
|
||||||
|
|
||||||
|
def get_random_text() -> str:
|
||||||
|
size_in_bytes = 20 * 1024
|
||||||
|
characters = string.ascii_letters + string.digits
|
||||||
|
return ''.join(random.choice(characters) for _ in range(size_in_bytes))
|
||||||
|
|
||||||
|
|
||||||
|
def send_message(sender, message):
|
||||||
|
sender.get_by_role("textbox", name="Write message, @ to mention someone …").click()
|
||||||
|
sender.get_by_role("textbox", name="Write message, @ to mention someone …").fill(message)
|
||||||
|
sender.get_by_role("textbox", name="Write message, @ to mention someone …").press("Enter")
|
||||||
|
|
||||||
def create_conversation(playwright: Playwright) -> str:
|
def create_conversation(playwright: Playwright) -> str:
|
||||||
headless = True
|
headless = True
|
||||||
|
@ -42,52 +56,55 @@ def create_conversation(playwright: Playwright) -> str:
|
||||||
|
|
||||||
def talk(playwright: Playwright, url: str) -> None:
|
def talk(playwright: Playwright, url: str) -> None:
|
||||||
headless = True
|
headless = True
|
||||||
browser_one = playwright.chromium.launch(headless=headless, slow_mo=1500)
|
action_delay_ms = 300
|
||||||
browser_two = playwright.chromium.launch(headless=headless, slow_mo=1500)
|
browser_count = 5
|
||||||
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)
|
# Launch browsers
|
||||||
user_two.goto(url)
|
browsers = [playwright.chromium.launch(headless=headless, slow_mo=action_delay_ms) for _ in range(browser_count)]
|
||||||
|
contexts = [browser.new_context() for browser in browsers]
|
||||||
|
pages = [context.new_page() for context in contexts]
|
||||||
|
|
||||||
# Headless browsers trigger a warning in Nextcloud, however they actually work fine
|
# Go to URL for all users
|
||||||
|
for page in pages:
|
||||||
|
page.goto(url)
|
||||||
|
|
||||||
|
# Close toast messages for headless browsers
|
||||||
if headless:
|
if headless:
|
||||||
user_one.wait_for_selector('.toast-close')
|
for page in pages:
|
||||||
user_one.click('.toast-close')
|
page.wait_for_selector('.toast-close').click()
|
||||||
|
|
||||||
user_two.wait_for_selector('.toast-close')
|
# Perform actions for all users
|
||||||
user_two.click('.toast-close')
|
for page in pages:
|
||||||
|
page.get_by_role("button", name="Edit").click()
|
||||||
|
page.get_by_placeholder("Guest").fill(f"Dude#{pages.index(page) + 1}")
|
||||||
|
page.get_by_role("button", name="Save name").click()
|
||||||
|
|
||||||
|
# Send first message and check for visibility
|
||||||
|
sender = pages[0]
|
||||||
|
message = "Let's send some random text!"
|
||||||
|
send_message(sender, message)
|
||||||
|
for page in pages[1:]:
|
||||||
|
expect(page.get_by_text(message, exact=True)).to_be_visible()
|
||||||
|
|
||||||
user_one.get_by_role("button", name="Edit").click()
|
# Send random text and validate it was received by other users
|
||||||
user_two.get_by_role("button", name="Edit").click()
|
for i, sender in enumerate(pages):
|
||||||
user_one.get_by_placeholder("Guest").fill("Dude#1")
|
receivers = pages[:i] + pages[i + 1:]
|
||||||
user_two.get_by_placeholder("Guest").fill("Dude#2")
|
random_text = get_random_text()
|
||||||
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()
|
send_message(sender, random_text)
|
||||||
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").fill("Heya")
|
for receiver in receivers:
|
||||||
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").press("Enter")
|
expect(receiver.get_by_text(random_text, exact=True)).to_be_visible()
|
||||||
|
|
||||||
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")
|
# Close all users
|
||||||
user_two.get_by_role("textbox", name="Write message, @ to mention someone …").press("Enter")
|
for page in pages:
|
||||||
|
page.close()
|
||||||
|
|
||||||
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").click()
|
for context in contexts:
|
||||||
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").fill("Lets!")
|
context.close()
|
||||||
user_one.get_by_role("textbox", name="Write message, @ to mention someone …").press("Enter")
|
|
||||||
|
|
||||||
user_one.close()
|
for browser in browsers:
|
||||||
user_two.close()
|
browser.close()
|
||||||
|
|
||||||
# ---------------------
|
|
||||||
context_one.close()
|
|
||||||
context_two.close()
|
|
||||||
browser_one.close()
|
|
||||||
browser_two.close()
|
|
||||||
|
|
||||||
|
|
||||||
with sync_playwright() as playwright:
|
with sync_playwright() as playwright:
|
||||||
|
|
Loading…
Add table
Reference in a new issue