github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/webui/test/e2e/poms/repositoriesPage.ts (about)

     1  import { Locator, Page, expect } from "@playwright/test";
     2  
     3  const SAMPLE_REPO_README_TITLE = "Welcome to the Lake!";
     4  const REGULAR_REPO_README_TITLE = "To get started with this repository:";
     5  
     6  export class RepositoriesPage {
     7      private page: Page;
     8  
     9      public noRepositoriesTitleLocator: Locator;
    10      public readOnlyIndicatorLocator: Locator;
    11      public uploadButtonLocator: Locator;
    12      public createRepositoryButtonLocator: Locator;
    13      public searchInputLocator: Locator;
    14  
    15      constructor(page: Page) {
    16          this.page = page;
    17          this.noRepositoriesTitleLocator = this.page.getByText("Welcome to LakeFS!");
    18          this.readOnlyIndicatorLocator = this.page.locator("text=Read-only");
    19          this.uploadButtonLocator = this.page.locator("text=Upload Object");
    20          this.createRepositoryButtonLocator = this.page.getByRole("button", { name: "Create Repository" });
    21          this.searchInputLocator = this.page.getByPlaceholder("Find a repository...");
    22      }
    23  
    24      async goto(): Promise<void> {
    25          await this.page.goto("/repositories");
    26      }
    27  
    28      async goToRepository(repoName: string): Promise<void> {
    29          await this.page.getByRole("link", { name: repoName, exact: true }).click();
    30      }
    31  
    32      async createSampleRepository(): Promise<void> {
    33          await this.page.getByRole("button", { name: "Create Sample Repository" }).click();
    34          expect(this.page.getByRole("heading", { name: SAMPLE_REPO_README_TITLE })).toBeVisible();
    35      }
    36  
    37      async createRepository(repoName: string, includeSampleData: boolean): Promise<void> {
    38          await this.createRepositoryButtonLocator.click();
    39          await this.page.getByLabel("Repository ID").fill(repoName);
    40          if (includeSampleData) {
    41              await this.page.getByLabel("Add sample data, hooks, and configuration").check();
    42          }
    43          await this.page.getByRole("dialog").getByRole("button", { name: "Create Repository", exact: true }).click();
    44          if (includeSampleData) {
    45              await expect(this.page.getByRole("heading", { name: SAMPLE_REPO_README_TITLE })).toBeVisible();
    46              return;
    47          }
    48          expect(this.page.getByRole("heading", { name: REGULAR_REPO_README_TITLE })).toBeVisible();
    49      }
    50  }