diff --git a/browser_tests/fixtures/UserSelectPage.ts b/browser_tests/fixtures/UserSelectPage.ts new file mode 100644 index 000000000..4b78076ca --- /dev/null +++ b/browser_tests/fixtures/UserSelectPage.ts @@ -0,0 +1,41 @@ +import { Page } from 'playwright' +import { test as base } from '@playwright/test' + +export class UserSelectPage { + constructor( + public readonly url: string, + public readonly page: Page + ) {} + + get selectionUrl() { + return this.url + '/user-select' + } + + get container() { + return this.page.locator('#comfy-user-selection') + } + + get newUserInput() { + return this.container.locator('#new-user-input') + } + + get existingUserSelect() { + return this.container.locator('#existing-user-select') + } + + get nextButton() { + return this.container.getByText('Next') + } +} + +export const userSelectPageFixture = base.extend<{ + userSelectPage: UserSelectPage +}>({ + userSelectPage: async ({ page }, use) => { + const userSelectPage = new UserSelectPage( + process.env.PLAYWRIGHT_TEST_URL || 'http://localhost:8188', + page + ) + await use(userSelectPage) + } +}) diff --git a/browser_tests/userSelectView.spec.ts b/browser_tests/userSelectView.spec.ts new file mode 100644 index 000000000..68d822b84 --- /dev/null +++ b/browser_tests/userSelectView.spec.ts @@ -0,0 +1,42 @@ +import { expect } from '@playwright/test' +import { userSelectPageFixture as test } from './fixtures/UserSelectPage' + +/** + * Expects ComfyUI backend to be launched with `--multi-user` flag. + */ +test.describe('User Select View', () => { + test.beforeEach(async ({ userSelectPage, page }) => { + await page.goto(userSelectPage.url) + await page.evaluate(() => { + localStorage.clear() + sessionStorage.clear() + }) + }) + + test('Redirects to user select view if no user is logged in', async ({ + userSelectPage, + page + }) => { + await page.goto(userSelectPage.url) + await expect(userSelectPage.container).toBeVisible() + expect(page.url()).toBe(userSelectPage.selectionUrl) + }) + + test('Can create new user', async ({ userSelectPage, page }) => { + const randomUser = `test-user-${Math.random().toString(36).substring(2, 7)}` + await page.goto(userSelectPage.url) + await expect(page).toHaveURL(userSelectPage.selectionUrl) + await userSelectPage.newUserInput.fill(randomUser) + await userSelectPage.nextButton.click() + await expect(page).toHaveURL(userSelectPage.url) + }) + + test('Can choose existing user', async ({ userSelectPage, page }) => { + await page.goto(userSelectPage.url) + await expect(page).toHaveURL(userSelectPage.selectionUrl) + await userSelectPage.existingUserSelect.click() + await page.locator('.p-select-list .p-select-option').first().click() + await userSelectPage.nextButton.click() + await expect(page).toHaveURL(userSelectPage.url) + }) +}) diff --git a/index.html b/index.html index 5e6f66d54..7a321795c 100644 --- a/index.html +++ b/index.html @@ -9,33 +9,6 @@
-