mirror of
https://github.com/nextcloud/docker.git
synced 2025-04-19 18:36:09 +02:00
Refactoring and changes for Nextcloud 30
This commit is contained in:
parent
1722e9df5c
commit
b966eb09c2
7 changed files with 88 additions and 144 deletions
30
energy-tests/helpers/helper_functions.py
Normal file
30
energy-tests/helpers/helper_functions.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
import random
|
||||||
|
from time import time_ns, sleep
|
||||||
|
from playwright.sync_api import TimeoutError
|
||||||
|
|
||||||
|
|
||||||
|
def login(page, username='Crash', password='Override'):
|
||||||
|
page.goto("http://nc/login")
|
||||||
|
page.locator('#user').fill(username)
|
||||||
|
page.locator('#password').fill(password)
|
||||||
|
page.locator('#password').press("Enter")
|
||||||
|
|
||||||
|
|
||||||
|
def get_random_text() -> str:
|
||||||
|
size_in_bytes = 1024
|
||||||
|
characters = string.ascii_letters + string.digits
|
||||||
|
return ''.join(random.choice(characters) for _ in range(size_in_bytes))
|
||||||
|
|
||||||
|
def log_note(message: str) -> None:
|
||||||
|
timestamp = str(time_ns())[:16]
|
||||||
|
print(f"{timestamp} {message}")
|
||||||
|
|
||||||
|
|
||||||
|
def close_modal(page) -> None:
|
||||||
|
with contextlib.suppress(TimeoutError):
|
||||||
|
sleep(5) # Sleep to make sure the modal has time to appear before continuing navigation
|
||||||
|
page.locator('#firstrunwizard .modal-container__content button[aria-label=Close]', timeout=15_000).click()
|
||||||
|
|
||||||
|
|
||||||
|
def timeout_handler(signum, frame):
|
||||||
|
raise TimeoutError("Page.content() timed out")
|
|
@ -3,14 +3,10 @@ import sys
|
||||||
from time import sleep, time_ns
|
from time import sleep, time_ns
|
||||||
import signal
|
import signal
|
||||||
|
|
||||||
from playwright.sync_api import Playwright, sync_playwright, TimeoutError
|
from playwright.sync_api import Playwright, sync_playwright
|
||||||
|
|
||||||
def timeout_handler(signum, frame):
|
from helpers.helper_functions import log_note, get_random_text, login_nextcloud, close_modal, timeout_handler
|
||||||
raise TimeoutError("Page.content() timed out")
|
|
||||||
|
|
||||||
def log_note(message: str) -> None:
|
|
||||||
timestamp = str(time_ns())[:16]
|
|
||||||
print(f"{timestamp} {message}")
|
|
||||||
|
|
||||||
def run(playwright: Playwright, browser_name: str) -> None:
|
def run(playwright: Playwright, browser_name: str) -> None:
|
||||||
log_note(f"Launch browser {browser_name}")
|
log_note(f"Launch browser {browser_name}")
|
||||||
|
@ -25,11 +21,8 @@ def run(playwright: Playwright, browser_name: str) -> None:
|
||||||
try:
|
try:
|
||||||
log_note("Login")
|
log_note("Login")
|
||||||
page.goto("http://nc/")
|
page.goto("http://nc/")
|
||||||
page.get_by_label("Login with username or email").click()
|
login_nextcloud(page)
|
||||||
page.get_by_label("Login with username or email").fill("Crash")
|
|
||||||
page.get_by_label("Login with username or email").press("Tab")
|
|
||||||
page.get_by_label("Password", exact=True).fill("Override")
|
|
||||||
page.get_by_label("Password", exact=True).press("Enter")
|
|
||||||
log_note("Create new text file")
|
log_note("Create new text file")
|
||||||
page.get_by_role("link", name="Files").click()
|
page.get_by_role("link", name="Files").click()
|
||||||
page.get_by_role("link", name="New file/folder menu").click()
|
page.get_by_role("link", name="New file/folder menu").click()
|
||||||
|
@ -37,9 +30,9 @@ def run(playwright: Playwright, browser_name: str) -> None:
|
||||||
page.locator("#view7-input-file").fill("colab_meeting.md")
|
page.locator("#view7-input-file").fill("colab_meeting.md")
|
||||||
page.locator("#view7-input-file").press("Enter")
|
page.locator("#view7-input-file").press("Enter")
|
||||||
page.get_by_role("button", name="Create a new file with the selected template").click()
|
page.get_by_role("button", name="Create a new file with the selected template").click()
|
||||||
sleep(5)
|
|
||||||
with contextlib.suppress(TimeoutError):
|
close_modal(page)
|
||||||
page.locator('#firstrunwizard .modal-container__content button[aria-label=Close]').click(timeout=15_000)
|
|
||||||
page.keyboard.press("Escape")
|
page.keyboard.press("Escape")
|
||||||
log_note("Share file with other user")
|
log_note("Share file with other user")
|
||||||
page.get_by_role("link", name="colab_meeting .md").get_by_role("link", name="Share").click()
|
page.get_by_role("link", name="colab_meeting .md").get_by_role("link", name="Share").click()
|
||||||
|
|
|
@ -3,14 +3,10 @@ import sys
|
||||||
from time import time_ns, sleep
|
from time import time_ns, sleep
|
||||||
import signal
|
import signal
|
||||||
|
|
||||||
from playwright.sync_api import Playwright, sync_playwright, expect, TimeoutError
|
from playwright.sync_api import Playwright, sync_playwright, expect
|
||||||
|
|
||||||
def timeout_handler(signum, frame):
|
from helpers.helper_functions import log_note, get_random_text, login_nextcloud, close_modal, timeout_handler
|
||||||
raise TimeoutError("Page.content() timed out")
|
|
||||||
|
|
||||||
def log_note(message: str) -> None:
|
|
||||||
timestamp = str(time_ns())[:16]
|
|
||||||
print(f"{timestamp} {message}")
|
|
||||||
|
|
||||||
def run(playwright: Playwright, browser_name: str) -> None:
|
def run(playwright: Playwright, browser_name: str) -> None:
|
||||||
log_note(f"Launch browser {browser_name}")
|
log_note(f"Launch browser {browser_name}")
|
||||||
|
@ -26,24 +22,14 @@ def run(playwright: Playwright, browser_name: str) -> None:
|
||||||
try:
|
try:
|
||||||
page.goto("http://nc/login")
|
page.goto("http://nc/login")
|
||||||
log_note("Login")
|
log_note("Login")
|
||||||
page.get_by_label("Login with username or email").fill("Crash")
|
login_nextcloud(page)
|
||||||
page.get_by_label("Login with username or email").press("Tab")
|
|
||||||
page.get_by_label("Password", exact=True).fill("Override")
|
|
||||||
page.get_by_label("Password", exact=True).press("Enter")
|
|
||||||
log_note("Wait for welcome popup")
|
log_note("Wait for welcome popup")
|
||||||
# Sleep to make sure the modal has time to appear before continuing navigation
|
close_modal(page)
|
||||||
sleep(5)
|
|
||||||
log_note("Close welcome popup")
|
|
||||||
with contextlib.suppress(TimeoutError):
|
|
||||||
page.locator('#firstrunwizard .modal-container__content button[aria-label=Close]').click(timeout=15_000)
|
|
||||||
|
|
||||||
log_note("Go to calendar")
|
log_note("Go to calendar")
|
||||||
page.get_by_role("link", name="Calendar").click()
|
page.get_by_role("link", name="Calendar").click()
|
||||||
|
|
||||||
# Second welcome screen?
|
|
||||||
with contextlib.suppress(TimeoutError):
|
|
||||||
page.locator('#firstrunwizard .modal-container__content button[aria-label=Close]').click(timeout=15_000)
|
|
||||||
|
|
||||||
log_note("Create event")
|
log_note("Create event")
|
||||||
event_name = "Weekly sync"
|
event_name = "Weekly sync"
|
||||||
page.get_by_role("button", name="New event").click()
|
page.get_by_role("button", name="New event").click()
|
||||||
|
|
|
@ -3,14 +3,9 @@ import contextlib
|
||||||
from time import time_ns, sleep
|
from time import time_ns, sleep
|
||||||
import signal
|
import signal
|
||||||
|
|
||||||
from playwright.sync_api import Playwright, sync_playwright, TimeoutError
|
from playwright.sync_api import Playwright, sync_playwright
|
||||||
|
|
||||||
def timeout_handler(signum, frame):
|
from helpers.helper_functions import log_note, get_random_text, login_nextcloud, close_modal, timeout_handler
|
||||||
raise TimeoutError("Page.content() timed out")
|
|
||||||
|
|
||||||
def log_note(message: str) -> None:
|
|
||||||
timestamp = str(time_ns())[:16]
|
|
||||||
print(f"{timestamp} {message}")
|
|
||||||
|
|
||||||
def create_user(playwright: Playwright, browser_name: str, username: str, password: str) -> None:
|
def create_user(playwright: Playwright, browser_name: str, username: str, password: str) -> None:
|
||||||
log_note(f"Launch browser {browser_name}")
|
log_note(f"Launch browser {browser_name}")
|
||||||
|
@ -24,19 +19,11 @@ def create_user(playwright: Playwright, browser_name: str, username: str, passwo
|
||||||
try:
|
try:
|
||||||
page = context.new_page()
|
page = context.new_page()
|
||||||
log_note("Login")
|
log_note("Login")
|
||||||
page.goto("http://nc/")
|
login_nextcloud(page)
|
||||||
page.get_by_label("Login with username or email").click()
|
|
||||||
page.get_by_label("Login with username or email").fill("Crash")
|
|
||||||
page.get_by_label("Login with username or email").press("Tab")
|
|
||||||
page.get_by_label("Password", exact=True).fill("Override")
|
|
||||||
page.get_by_label("Password", exact=True).press("Enter")
|
|
||||||
|
|
||||||
log_note("Wait for welcome popup")
|
log_note("Wait for welcome popup")
|
||||||
# Sleep to make sure the modal has time to appear before continuing navigation
|
close_modal(page)
|
||||||
sleep(5)
|
|
||||||
|
|
||||||
with contextlib.suppress(TimeoutError):
|
|
||||||
page.locator('#firstrunwizard .modal-container__content button[aria-label=Close]').click(timeout=15_000)
|
|
||||||
log_note("Create user")
|
log_note("Create user")
|
||||||
page.get_by_role("link", name="Open settings menu").click()
|
page.get_by_role("link", name="Open settings menu").click()
|
||||||
page.get_by_role("link", name="Users").first.click()
|
page.get_by_role("link", name="Users").first.click()
|
||||||
|
|
|
@ -1,20 +1,12 @@
|
||||||
import contextlib
|
import contextlib
|
||||||
import random
|
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
from time import time_ns, sleep
|
from time import sleep
|
||||||
|
|
||||||
from playwright.sync_api import Playwright, sync_playwright, expect, TimeoutError
|
from playwright.sync_api import Playwright, sync_playwright, expect
|
||||||
|
|
||||||
|
from helpers.helper_functions import log_note, get_random_text, login_nextcloud, close_modal, timeout_handler
|
||||||
|
|
||||||
def get_random_text() -> str:
|
|
||||||
size_in_bytes = 1024
|
|
||||||
characters = string.ascii_letters + string.digits
|
|
||||||
return ''.join(random.choice(characters) for _ in range(size_in_bytes))
|
|
||||||
|
|
||||||
def log_note(message: str) -> None:
|
|
||||||
timestamp = str(time_ns())[:16]
|
|
||||||
print(f"{timestamp} {message}")
|
|
||||||
|
|
||||||
def collaborate(playwright: Playwright, browser_name: str) -> None:
|
def collaborate(playwright: Playwright, browser_name: str) -> None:
|
||||||
log_note(f"Launch two {browser_name} browsers")
|
log_note(f"Launch two {browser_name} browsers")
|
||||||
|
@ -25,7 +17,7 @@ def collaborate(playwright: Playwright, browser_name: str) -> None:
|
||||||
# The mode is however ~40% slower: https://github.com/microsoft/playwright/issues/21216
|
# The mode is however ~40% slower: https://github.com/microsoft/playwright/issues/21216
|
||||||
browser = playwright.chromium.launch(headless=False,args=["--headless=new"])
|
browser = playwright.chromium.launch(headless=False,args=["--headless=new"])
|
||||||
context = browser.new_context()
|
context = browser.new_context()
|
||||||
admin_user = context.new_page()
|
admin_user_page = context.new_page()
|
||||||
|
|
||||||
|
|
||||||
if browser_name == "firefox":
|
if browser_name == "firefox":
|
||||||
|
@ -35,29 +27,28 @@ def collaborate(playwright: Playwright, browser_name: str) -> None:
|
||||||
# The mode is however ~40% slower: https://github.com/microsoft/playwright/issues/21216
|
# The mode is however ~40% slower: https://github.com/microsoft/playwright/issues/21216
|
||||||
browser_two = playwright.chromium.launch(headless=False,args=["--headless=new"])
|
browser_two = playwright.chromium.launch(headless=False,args=["--headless=new"])
|
||||||
context_two = browser_two.new_context()
|
context_two = browser_two.new_context()
|
||||||
docs_user = context_two.new_page()
|
docs_user_page = context_two.new_page()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Login and open the file for both users
|
# Login and open the file for both users
|
||||||
log_note("Logging in with users")
|
log_note("Logging in with users")
|
||||||
login(admin_user, "Crash", "Override")
|
login_nextcloud(admin_user_page, "Crash", "Override")
|
||||||
login(docs_user, "docs_dude", "docsrule!12")
|
login_nextcloud(docs_user_page, "docs_dude", "docsrule!12")
|
||||||
log_note("Opening document with both users")
|
log_note("Opening document with both users")
|
||||||
with contextlib.suppress(TimeoutError):
|
close_modal(docs_user_page)
|
||||||
sleep(5)
|
|
||||||
docs_user.locator('#firstrunwizard .modal-container__content button[aria-label=Close]').click(timeout=15_000)
|
admin_user_page.get_by_role("link", name="Files", exact=True).click()
|
||||||
admin_user.get_by_role("link", name="Files", exact=True).click()
|
docs_user_page.get_by_role("link", name="Files", exact=True).click()
|
||||||
docs_user.get_by_role("link", name="Files", exact=True).click()
|
admin_user_page.get_by_role("link", name="Shares", exact=True).click()
|
||||||
admin_user.get_by_role("link", name="Shares", exact=True).click()
|
docs_user_page.get_by_role("link", name="Shares", exact=True).click()
|
||||||
docs_user.get_by_role("link", name="Shares", exact=True).click()
|
admin_user_page.get_by_role("link", name="colab_meeting .md").click()
|
||||||
admin_user.get_by_role("link", name="colab_meeting .md").click()
|
docs_user_page.get_by_role("link", name="colab_meeting .md").click()
|
||||||
docs_user.get_by_role("link", name="colab_meeting .md").click()
|
|
||||||
|
|
||||||
# Write the first message and assert it's visible for the other user
|
# Write the first message and assert it's visible for the other user
|
||||||
log_note("Sending first validation message")
|
log_note("Sending first validation message")
|
||||||
first_message = "FIRST_VALIDATION_MESSAGE"
|
first_message = "FIRST_VALIDATION_MESSAGE"
|
||||||
admin_user.get_by_role("dialog", name="colab_meeting.md").get_by_role("document").locator("div").first.type(first_message)
|
admin_user_page.get_by_role("dialog", name="colab_meeting.md").get_by_role("document").locator("div").first.type(first_message)
|
||||||
expect(docs_user.get_by_text(first_message)).to_be_visible()
|
expect(docs_user_page.get_by_text(first_message)).to_be_visible()
|
||||||
log_note("GMT_SCI_R=1")
|
log_note("GMT_SCI_R=1")
|
||||||
|
|
||||||
for x in range(1, 7):
|
for x in range(1, 7):
|
||||||
|
@ -65,12 +56,12 @@ def collaborate(playwright: Playwright, browser_name: str) -> None:
|
||||||
# Admin sends on even, docs_dude on odd
|
# Admin sends on even, docs_dude on odd
|
||||||
if x % 2 == 0:
|
if x % 2 == 0:
|
||||||
log_note("Admin adding text")
|
log_note("Admin adding text")
|
||||||
admin_user.get_by_role("dialog", name="colab_meeting.md").get_by_role("document").locator("div").first.type(random_message)
|
admin_user_page.get_by_role("dialog", name="colab_meeting.md").get_by_role("document").locator("div").first.type(random_message)
|
||||||
expect(docs_user.get_by_text(random_message)).to_be_visible(timeout=15_000)
|
expect(docs_user_page.get_by_text(random_message)).to_be_visible(timeout=15_000)
|
||||||
else:
|
else:
|
||||||
log_note("User adding text")
|
log_note("User adding text")
|
||||||
docs_user.get_by_role("dialog", name="colab_meeting.md").get_by_role("document").locator("div").first.type(random_message)
|
docs_user_page.get_by_role("dialog", name="colab_meeting.md").get_by_role("document").locator("div").first.type(random_message)
|
||||||
expect(admin_user.get_by_text(random_message)).to_be_visible(timeout=15_000)
|
expect(admin_user_page.get_by_text(random_message)).to_be_visible(timeout=15_000)
|
||||||
|
|
||||||
log_note("GMT_SCI_R=1")
|
log_note("GMT_SCI_R=1")
|
||||||
log_note("Sleeping for 5 seconds")
|
log_note("Sleeping for 5 seconds")
|
||||||
|
@ -78,8 +69,8 @@ def collaborate(playwright: Playwright, browser_name: str) -> None:
|
||||||
|
|
||||||
log_note("Closing browsers")
|
log_note("Closing browsers")
|
||||||
# ---------------------
|
# ---------------------
|
||||||
admin_user.close()
|
admin_user_page.close()
|
||||||
docs_user.close()
|
docs_user_page.close()
|
||||||
context.close()
|
context.close()
|
||||||
context_two.close()
|
context_two.close()
|
||||||
browser.close()
|
browser.close()
|
||||||
|
@ -88,17 +79,10 @@ def collaborate(playwright: Playwright, browser_name: str) -> None:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if hasattr(e, 'message'): # only Playwright error class has this member
|
if hasattr(e, 'message'): # only Playwright error class has this member
|
||||||
log_note(f"Exception occurred: {e.message}")
|
log_note(f"Exception occurred: {e.message}")
|
||||||
log_note(f"Page content was: {docs_user.content()}")
|
log_note(f"Page content was: {docs_user_page.content()}")
|
||||||
log_note(f"Page content was: {admin_user.content()}")
|
log_note(f"Page content was: {admin_user_page.content()}")
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
def login(page, username, password):
|
|
||||||
page.goto("http://nc/login")
|
|
||||||
page.get_by_label("Login with username or email").click()
|
|
||||||
page.get_by_label("Login with username or email").fill(username)
|
|
||||||
page.get_by_label("Login with username or email").press("Tab")
|
|
||||||
page.get_by_label("Password", exact=True).fill(password)
|
|
||||||
page.get_by_label("Password", exact=True).press("Enter")
|
|
||||||
|
|
||||||
|
|
||||||
with sync_playwright() as playwright:
|
with sync_playwright() as playwright:
|
||||||
|
|
|
@ -1,14 +1,9 @@
|
||||||
import sys
|
import sys
|
||||||
import signal
|
import signal
|
||||||
from time import time_ns
|
from time import time_ns
|
||||||
from playwright.sync_api import sync_playwright, TimeoutError
|
from playwright.sync_api import sync_playwright
|
||||||
|
|
||||||
def timeout_handler(signum, frame):
|
from helpers.helper_functions import log_note, get_random_text, login_nextcloud, close_modal, timeout_handler
|
||||||
raise TimeoutError("Page.content() timed out")
|
|
||||||
|
|
||||||
def log_note(message: str) -> None:
|
|
||||||
timestamp = str(time_ns())[:16]
|
|
||||||
print(f"{timestamp} {message}")
|
|
||||||
|
|
||||||
def main(browser_name: str = "chromium"):
|
def main(browser_name: str = "chromium"):
|
||||||
with sync_playwright() as playwright:
|
with sync_playwright() as playwright:
|
||||||
|
@ -25,23 +20,21 @@ def main(browser_name: str = "chromium"):
|
||||||
page = context.new_page()
|
page = context.new_page()
|
||||||
signal.alarm(0) # remove timeout signal
|
signal.alarm(0) # remove timeout signal
|
||||||
try:
|
try:
|
||||||
page.set_default_timeout(240_000) # 240 seconds (timeout is in milliseconds)
|
|
||||||
page.goto('http://nc/')
|
page.goto('http://nc/')
|
||||||
|
|
||||||
# 1. Create User
|
# 1. Create User
|
||||||
log_note("Create admin user")
|
log_note("Create admin user")
|
||||||
page.type('#adminlogin', 'Crash')
|
page.locator('#adminlogin').fill('Crash')
|
||||||
page.type('#adminpass', 'Override')
|
page.locator('#adminpass').fill('Override')
|
||||||
page.click('.primary')
|
page.locator('.primary').click()
|
||||||
|
|
||||||
# 2. Install all Apps
|
# 2. Install all Apps
|
||||||
log_note("Install recommended apps")
|
log_note("Install recommended apps")
|
||||||
install_selector = '.button-vue--vue-primary'
|
install_selector = '.button-vue--vue-primary'
|
||||||
page.wait_for_selector(install_selector)
|
page.locator(install_selector).click()
|
||||||
page.click(install_selector)
|
|
||||||
|
|
||||||
# 3. Dashboard
|
# 3. Dashboard
|
||||||
page.wait_for_selector('.app-dashboard')
|
page.locator('.app-dashboard', timeout=240_000)
|
||||||
log_note("Installation complete")
|
log_note("Installation complete")
|
||||||
browser.close()
|
browser.close()
|
||||||
|
|
||||||
|
@ -50,13 +43,10 @@ def main(browser_name: str = "chromium"):
|
||||||
log_note(f"Exception occurred: {e.message}")
|
log_note(f"Exception occurred: {e.message}")
|
||||||
|
|
||||||
# set a timeout. Since the call to page.content() is blocking we need to defer it to the OS
|
# set a timeout. Since the call to page.content() is blocking we need to defer it to the OS
|
||||||
try:
|
|
||||||
signal.signal(signal.SIGALRM, timeout_handler)
|
signal.signal(signal.SIGALRM, timeout_handler)
|
||||||
signal.alarm(20)
|
signal.alarm(20)
|
||||||
log_note(f"Page content was: {page.content()}")
|
log_note(f"Page content was: {page.content()}")
|
||||||
signal.alarm(0) # remove timeout signal
|
signal.alarm(0) # remove timeout signal
|
||||||
except TimeoutError as exc:
|
|
||||||
raise e from exc
|
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,19 +5,9 @@ import sys
|
||||||
import signal
|
import signal
|
||||||
from time import sleep, time_ns
|
from time import sleep, time_ns
|
||||||
|
|
||||||
from playwright.sync_api import Playwright, sync_playwright, expect, TimeoutError
|
from playwright.sync_api import Playwright, sync_playwright, expect
|
||||||
|
|
||||||
def timeout_handler(signum, frame):
|
from helpers.helper_functions import log_note, get_random_text, login_nextcloud, close_modal, timeout_handler
|
||||||
raise TimeoutError("Page.content() timed out")
|
|
||||||
|
|
||||||
def log_note(message: str) -> None:
|
|
||||||
timestamp = str(time_ns())[:16]
|
|
||||||
print(f"{timestamp} {message}")
|
|
||||||
|
|
||||||
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):
|
def send_message(sender, message):
|
||||||
log_note("Sending message")
|
log_note("Sending message")
|
||||||
|
@ -38,35 +28,20 @@ def create_conversation(playwright: Playwright, browser_name: str) -> str:
|
||||||
page = context.new_page()
|
page = context.new_page()
|
||||||
try:
|
try:
|
||||||
log_note("Login as admin")
|
log_note("Login as admin")
|
||||||
page.goto("http://nc/")
|
login_nextcloud(page)
|
||||||
page.get_by_label("Login with username or email").click()
|
|
||||||
page.get_by_label("Login with username or email").fill("Crash")
|
|
||||||
page.get_by_label("Login with username or email").press("Tab")
|
|
||||||
page.get_by_label("Password", exact=True).fill("Override")
|
|
||||||
page.get_by_role("button", name="Log in").click()
|
|
||||||
|
|
||||||
# Wait for the modal to load. As it seems you can't close it while it is showing the opening animation.
|
# Wait for the modal to load. As it seems you can't close it while it is showing the opening animation.
|
||||||
log_note("Close first-time run popup")
|
log_note("Close first-time run popup")
|
||||||
with contextlib.suppress(TimeoutError):
|
close_modal(page)
|
||||||
sleep(5)
|
|
||||||
page.locator('#firstrunwizard .modal-container__content button[aria-label=Close]').click(timeout=15_000)
|
|
||||||
|
|
||||||
log_note("Open Talk app")
|
log_note("Open Talk app")
|
||||||
page.locator('#header').get_by_role("link", name="Talk", exact=True).click()
|
page.locator('#header').get_by_role("link", name="Talk", exact=True).click()
|
||||||
page.wait_for_url("**/apps/spreed/")
|
page.wait_for_url("**/apps/spreed/")
|
||||||
|
|
||||||
# Second welcome screen?
|
|
||||||
with contextlib.suppress(TimeoutError):
|
|
||||||
page.locator('#firstrunwizard .modal-container__content button[aria-label=Close]').click(timeout=15_000)
|
|
||||||
|
|
||||||
# Headless browsers trigger a warning in Nextcloud, however they actually work fine
|
# Headless browsers trigger a warning in Nextcloud, however they actually work fine
|
||||||
log_note("Close headless warning")
|
log_note("Close headless warning")
|
||||||
with contextlib.suppress(TimeoutError):
|
with contextlib.suppress(TimeoutError):
|
||||||
page.wait_for_selector('.toast-close')
|
page.locator('.toast-close').click()
|
||||||
page.click('.toast-close')
|
|
||||||
|
|
||||||
page.wait_for_selector('.toast-close')
|
|
||||||
page.click('.toast-close')
|
|
||||||
|
|
||||||
log_note("Create conversation")
|
log_note("Create conversation")
|
||||||
page.click("span.chat-plus-icon")
|
page.click("span.chat-plus-icon")
|
||||||
|
@ -94,7 +69,6 @@ def create_conversation(playwright: Playwright, browser_name: str) -> str:
|
||||||
signal.alarm(20)
|
signal.alarm(20)
|
||||||
log_note(f"Page content was: {page.content()}")
|
log_note(f"Page content was: {page.content()}")
|
||||||
signal.alarm(0) # remove timeout signal
|
signal.alarm(0) # remove timeout signal
|
||||||
|
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
def talk(playwright: Playwright, url: str, browser_name: str) -> None:
|
def talk(playwright: Playwright, url: str, browser_name: str) -> None:
|
||||||
|
@ -121,7 +95,7 @@ def talk(playwright: Playwright, url: str, browser_name: str) -> None:
|
||||||
log_note("Close headless warning")
|
log_note("Close headless warning")
|
||||||
with contextlib.suppress(TimeoutError):
|
with contextlib.suppress(TimeoutError):
|
||||||
for page in pages:
|
for page in pages:
|
||||||
page.wait_for_selector('.toast-close').click()
|
page.locator('.toast-close').click()
|
||||||
|
|
||||||
# Perform actions for all users
|
# Perform actions for all users
|
||||||
log_note("Set guest usernames")
|
log_note("Set guest usernames")
|
||||||
|
|
Loading…
Add table
Reference in a new issue