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  });