diff --git a/pages/MarketplacePage.ts b/pages/MarketplacePage.ts new file mode 100644 index 0000000..517b392 --- /dev/null +++ b/pages/MarketplacePage.ts @@ -0,0 +1,36 @@ +import { expect, Locator, Page } from '@playwright/test'; + +export class MarketplacePage { + readonly page: Page; + readonly mainContent: Locator; + + constructor(page: Page) { + this.page = page; + this.mainContent = page.locator('main, [role="main"], body').first(); + } + + async goto(): Promise { + await this.page.goto('/sell/list', { + waitUntil: 'domcontentloaded', + }); + } + + async expectPageLoaded(): Promise { + await expect(this.page).toHaveURL(/\/(sell\/list|marketplace)(\?|\/|$)/); + await expect(this.page).toHaveTitle(/Discogs|Shop|Marketplace/i); + await expect(this.mainContent).toBeVisible(); + } + + async expectMarketplaceContentVisible(): Promise { + await expect(this.mainContent).toContainText( + /marketplace|shop|for sale|vinyl|records|cds/i, + { timeout: 10000 } + ); + } + + async expectNoApplicationError(): Promise { + await expect(this.mainContent).not.toContainText( + /server error|something went wrong|application error|internal error|404/i + ); + } +} \ No newline at end of file diff --git a/tests/marketplace/marketplace.spec.ts b/tests/marketplace/marketplace.spec.ts new file mode 100644 index 0000000..8e4ef28 --- /dev/null +++ b/tests/marketplace/marketplace.spec.ts @@ -0,0 +1,18 @@ +import { test } from '@playwright/test'; +import { MarketplacePage } from '../../pages/MarketplacePage'; + +test.describe('Discogs marketplace', () => { + test('@smoke @marketplace marketplace browse page loads', async ({ page }) => { + const marketplacePage = new MarketplacePage(page); + + await test.step('Navigate to Discogs marketplace browse page', async () => { + await marketplacePage.goto(); + }); + + await test.step('Validate marketplace page loads successfully', async () => { + await marketplacePage.expectPageLoaded(); + await marketplacePage.expectMarketplaceContentVisible(); + await marketplacePage.expectNoApplicationError(); + }); + }); +}); \ No newline at end of file