github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/webui/test/e2e/common/setup.spec.ts (about) 1 import { test, expect } from "@playwright/test"; 2 import { SetupPage } from "../poms/setupPage"; 3 import { LoginPage } from "../poms/loginPage"; 4 import { RepositoriesPage } from "../poms/repositoriesPage"; 5 import { COMMON_STORAGE_STATE_PATH } from "../consts"; 6 import {writeCredentials} from "../credentialsFile"; 7 8 const LAKECTL_CONFIGURATION_FILE_NAME = "lakectl.yaml"; 9 10 test.describe("Setup Page", () => { 11 test("initial navigation to the base URL should redirect to /setup", async ({ page }) => { 12 await page.goto("/"); 13 await page.waitForURL(/.*\/setup/); 14 }); 15 16 test("username has a defualt value of 'admin'", async ({ page }) => { 17 const setupPage = new SetupPage(page); 18 setupPage.goto(); 19 const usernameInput = setupPage.usernameInputLocator; 20 await expect(usernameInput).toHaveValue("admin"); 21 }); 22 23 test("username is required", async ({ page }) => { 24 const setupPage = new SetupPage(page); 25 setupPage.goto(); 26 await setupPage.fillForm("test@example.com", ""); 27 const error = await page.getByText(setupPage.usernameErrorSelectorText); 28 await expect(error).toBeVisible(); 29 }); 30 31 test("email is required", async ({ page }) => { 32 const setupPage = new SetupPage(page); 33 setupPage.goto(); 34 await setupPage.fillForm(""); 35 const error = await page.getByText(setupPage.emailErrorSelectorText); 36 await expect(error).toBeVisible(); 37 }); 38 39 test("successfully submiting the form", async ({ page }) => { 40 const setupPage = new SetupPage(page); 41 setupPage.goto(); 42 await setupPage.fillForm("test@example.com"); 43 44 await expect(setupPage.setupFinishedTitleLocator).toBeVisible(); 45 await expect(setupPage.downloadCredentialsButtonLocator).toBeVisible(); 46 await expect(setupPage.goToLoginButtonLocator).toBeVisible(); 47 48 // download credentials 49 const download = await setupPage.donwloadCredentialsButton(); 50 expect(download.suggestedFilename()).toBe(LAKECTL_CONFIGURATION_FILE_NAME); 51 52 // open login page in a new tab 53 // and do login 54 const credentials = await setupPage.getCredentials(); 55 const loginTab = await setupPage.goToLoginButton(); 56 await expect(loginTab).toHaveURL(/.*\/login/); 57 const loginPage = new LoginPage(loginTab); 58 await loginPage.doLogin(credentials.accessKeyId, credentials.secretAccessKey); 59 await loginTab.waitForURL(/.*\/repositories/); 60 const repositoriesPage = new RepositoriesPage(loginTab); 61 await expect(repositoriesPage.noRepositoriesTitleLocator).toBeVisible(); 62 63 // save local storage state 64 await loginTab.context().storageState({ path: COMMON_STORAGE_STATE_PATH }); 65 // dump raw credentials to a file 66 await writeCredentials(credentials); 67 }); 68 69 test("after successful setup, navigating to the base URL should redirect to /login", async ({ page }) => { 70 await page.goto("/"); 71 await page.waitForURL(/.*\/login/); 72 }); 73 });