|
import pytest
|
|
import asyncio
|
|
from playwright.async_api import expect
|
|
|
|
@pytest.mark.asyncio
|
|
class TestAuthFlow:
|
|
|
|
async def test_01_user_registration(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
# Click Sign Up
|
|
await page.click('text=Sign Up')
|
|
await page.wait_for_timeout(500)
|
|
|
|
# Fill registration form
|
|
await page.fill('#register-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#register-form input[name="email"]', 'e2etestuser@example.com')
|
|
await page.fill('#register-form input[name="password"]', 'testpassword123')
|
|
|
|
# Submit registration
|
|
await page.click('#register-form button[type="submit"]')
|
|
|
|
await page.wait_for_timeout(2000)
|
|
await expect(page.locator('text=My Files')).to_be_visible()
|
|
|
|
async def test_02_user_login(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
# Unregister service worker to avoid interference
|
|
await page.evaluate("""
|
|
navigator.serviceWorker.getRegistrations().then(function(registrations) {
|
|
for(let registration of registrations) {
|
|
registration.unregister();
|
|
}
|
|
});
|
|
""")
|
|
|
|
await page.reload()
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
# Fill login form
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
|
|
# Submit login
|
|
await page.click('#login-form button[type="submit"]')
|
|
|
|
await page.wait_for_timeout(2000)
|
|
await expect(page.locator('text=My Files')).to_be_visible()
|
|
|
|
async def test_03_navigate_to_files_view(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
await page.click('#login-form button[type="submit"]')
|
|
await page.wait_for_timeout(2000)
|
|
|
|
# Files view should be active by default
|
|
await expect(page.locator('a.nav-link.active[data-view="files"]')).to_be_visible()
|
|
await expect(page.locator('file-list')).to_be_visible()
|
|
|
|
async def test_04_navigate_to_photos_view(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
await page.click('#login-form button[type="submit"]')
|
|
await page.wait_for_timeout(2000)
|
|
|
|
await page.click('a.nav-link[data-view="photos"]')
|
|
await page.wait_for_timeout(1000)
|
|
|
|
await expect(page.locator('a.nav-link.active[data-view="photos"]')).to_be_visible()
|
|
await expect(page.locator('photo-gallery')).to_be_visible()
|
|
|
|
async def test_05_navigate_to_shared_view(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
await page.click('#login-form button[type="submit"]')
|
|
await page.wait_for_timeout(2000)
|
|
|
|
await page.click('a.nav-link[data-view="shared"]')
|
|
await page.wait_for_timeout(1000)
|
|
|
|
await expect(page.locator('a.nav-link.active[data-view="shared"]')).to_be_visible()
|
|
await expect(page.locator('shared-items')).to_be_visible()
|
|
|
|
async def test_06_navigate_to_starred_view(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
await page.click('#login-form button[type="submit"]')
|
|
await page.wait_for_timeout(2000)
|
|
|
|
await page.click('a.nav-link[data-view="starred"]')
|
|
await page.wait_for_timeout(1000)
|
|
|
|
await expect(page.locator('a.nav-link.active[data-view="starred"]')).to_be_visible()
|
|
await expect(page.locator('starred-items')).to_be_visible()
|
|
|
|
async def test_07_navigate_to_recent_view(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
await page.click('#login-form button[type="submit"]')
|
|
await page.wait_for_timeout(2000)
|
|
|
|
await page.click('a.nav-link[data-view="recent"]')
|
|
await page.wait_for_timeout(1000)
|
|
|
|
await expect(page.locator('a.nav-link.active[data-view="recent"]')).to_be_visible()
|
|
await expect(page.locator('recent-files')).to_be_visible()
|
|
|
|
async def test_08_navigate_to_deleted_view(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
await page.click('#login-form button[type="submit"]')
|
|
await page.wait_for_timeout(2000)
|
|
|
|
await page.click('a.nav-link[data-view="deleted"]')
|
|
await page.wait_for_timeout(1000)
|
|
|
|
await expect(page.locator('a.nav-link.active[data-view="deleted"]')).to_be_visible()
|
|
await expect(page.locator('deleted-files')).to_be_visible()
|
|
|
|
async def test_09_navigate_to_billing_view(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
await page.click('#login-form button[type="submit"]')
|
|
await page.wait_for_timeout(2000)
|
|
|
|
await page.click('a.nav-link[data-view="billing"]')
|
|
await page.wait_for_timeout(1000)
|
|
|
|
await expect(page.locator('a.nav-link.active[data-view="billing"]')).to_be_visible()
|
|
await expect(page.locator('billing-dashboard')).to_be_visible()
|
|
|
|
async def test_10_user_logout(self, page, base_url):
|
|
await page.goto(f"{base_url}/")
|
|
await page.wait_for_load_state("networkidle")
|
|
|
|
await page.fill('#login-form input[name="username"]', 'e2etestuser')
|
|
await page.fill('#login-form input[name="password"]', 'testpassword123')
|
|
await page.click('#login-form button[type="submit"]')
|
|
await page.wait_for_timeout(2000)
|
|
|
|
# Click logout
|
|
await page.click('#logout-btn')
|
|
await page.wait_for_timeout(1000)
|
|
|
|
# Should be back to login
|
|
await expect(page.locator('#login-form')).to_be_visible() |