0
0
Fork 0
mirror of https://github.com/nextcloud/docker.git synced 2025-03-14 18:35:08 +01:00

Playwright scripts first draft

This commit is contained in:
Danilo Ješić 2023-06-06 15:10:14 +02:00
parent 22d28e45cd
commit 86a442638d
4 changed files with 149 additions and 0 deletions

16
Dockerfile Normal file
View file

@ -0,0 +1,16 @@
FROM python:3.11
# Install dependencies
RUN apt-get update && apt-get install -y \
curl \
wget \
gnupg \
&& rm -rf /var/lib/apt/lists/*
# Install Playwright
RUN pip install playwright
# Set up Playwright dependencies for Chromium, Firefox and Webkit
RUN playwright install
CMD ["/bin/bash"]

33
compose.yml Normal file
View file

@ -0,0 +1,33 @@
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=TheGibson
- MYSQL_PASSWORD=TheGibson
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:26.0.1
restart: always
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=TheGibson
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db

View file

@ -0,0 +1,64 @@
import asyncio
import time
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as playwright:
browser_type = playwright.chromium
browser = await browser_type.launch(headless=True, args=["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"])
page = await browser.new_page()
# await page.set_default_timeout(60_000) # milliseconds
await page.goto('http://app/login')
# 1. Login
user_element = await page.wait_for_selector('//*[@data-login-form-input-user]')
await user_element.type('Crash')
pass_element = await page.wait_for_selector('//*[@data-login-form-input-password]')
await pass_element.type('Override')
await page.click('.button-vue--vue-primary')
print(time.time(), "Login clicked")
# Handle unsupported browsers warning
unsupported_element = await page.wait_for_selector('.content-unsupported-browser__continue')
if unsupported_element:
await unsupported_element.click()
print(time.time(), "Unsupported browsers warning clicked")
await page.wait_for_navigation(wait_until='domcontentloaded', url='http://app/apps/dashboard/')
# Wait for the modal to load and close
await asyncio.sleep(3)
# 2. Close Modal
modal_close = await page.wait_for_selector('.modal-container__close')
await modal_close.click()
print(time.time(), "Intro video modal clicked")
# Wait for the modal animation to complete
await asyncio.sleep(3)
# 3. Go to Cal
await page.click('a[href="/apps/calendar/"]')
print(time.time(), "Calendar clicked")
# 4. Open New Event Box
new_event_selector = await page.wait_for_selector('.new-event')
await new_event_selector.click()
print(time.time(), "New event clicked")
# 4. Create Event
title_selector = await page.wait_for_selector('input[placeholder="Event title"]')
await title_selector.type('NYC2600 Meeting')
save_selector = await page.wait_for_selector('text=Save')
await save_selector.click()
print(time.time(), "Save event clicked")
# 5. Wait for the event
await page.wait_for_selector('text=NYC2600 Meeting')
print(time.time(), "Event found! Fin")
await browser.close()
if __name__ == '__main__':
asyncio.run(main())

View file

@ -0,0 +1,36 @@
from playwright.async_api import async_playwright
from time import time
async def main():
async with async_playwright() as playwright:
browser_type = playwright.chromium
browser = await browser_type.launch(
headless=True,
args=["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"]
)
page = await browser.new_page()
# await page.set_default_timeout(60_000) # milliseconds
await page.goto('http://app/')
# 1. Create User
await page.type('#adminlogin', 'Crash')
await page.type('#adminpass', 'Override')
await page.click('.primary')
print(time(), "Create user clicked")
# 2. Install all Apps
install_selector = '.button-vue--vue-primary'
await page.wait_for_selector(install_selector)
await page.click(install_selector)
print(time(), "Install apps clicked")
# 3. Dashboard
await page.wait_for_selector('.app-dashboard')
print(time(), "Dashboard found")
await browser.close()
if __name__ == '__main__':
import asyncio
asyncio.run(main())