|
| 1 | +import { expect, Page } from "@playwright/test"; |
| 2 | +import { DetailsPageLayout } from "../DetailsPageLayout"; |
| 3 | +import { Navigation } from "../Navigation"; |
| 4 | +import { VulnerabilityListPage } from "../vulnerability-list/VulnerabilityListPage"; |
| 5 | +import { PackageListPage } from "../package-list/PackageListPage"; |
| 6 | + |
| 7 | +export class PackageDetailsPage { |
| 8 | + private readonly _page: Page; |
| 9 | + _layout: DetailsPageLayout; |
| 10 | + |
| 11 | + private constructor(page: Page, layout: DetailsPageLayout) { |
| 12 | + this._page = page; |
| 13 | + this._layout = layout; |
| 14 | + } |
| 15 | + |
| 16 | + static async build(page: Page, packageName: string) { |
| 17 | + const navigation = await Navigation.build(page); |
| 18 | + await navigation.goToSidebar("Packages"); |
| 19 | + |
| 20 | + const listPage = await PackageListPage.build(page); |
| 21 | + const toolbar = await listPage.getToolbar(); |
| 22 | + const table = await listPage.getTable(); |
| 23 | + |
| 24 | + await toolbar.applyTextFilter("Filter text", packageName); |
| 25 | + await table.waitUntilDataIsLoaded(); |
| 26 | + await table.verifyColumnContainsText("Name", packageName); |
| 27 | + |
| 28 | + await page.getByRole("link", { name: packageName, exact: true }).click(); |
| 29 | + |
| 30 | + const layout = await DetailsPageLayout.build(page); |
| 31 | + await expect( |
| 32 | + page.getByRole("heading", { name: packageName }) |
| 33 | + ).toBeVisible(); |
| 34 | + |
| 35 | + return new PackageDetailsPage(page, layout); |
| 36 | + } |
| 37 | +} |
0 commit comments