From f723315abe4da965d4e045c9c88aa2108db42ece Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 1 Feb 2025 01:19:50 +0100 Subject: [PATCH 1/6] Create Produkter.spec.ts --- src/tests/Produkter/Produkter.spec.ts | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/tests/Produkter/Produkter.spec.ts diff --git a/src/tests/Produkter/Produkter.spec.ts b/src/tests/Produkter/Produkter.spec.ts new file mode 100644 index 000000000..00e0c22d8 --- /dev/null +++ b/src/tests/Produkter/Produkter.spec.ts @@ -0,0 +1,53 @@ +import { test, expect, Page, Route } from '@playwright/test'; + +test.describe('Produkter', () => { + test.beforeEach(async ({ page }: { page: Page }) => { + // Mock GraphQL responses + await page.route('**/graphql', async (route: Route) => { + const postData = route.request().postData(); + + // Mock successful response for all GraphQL requests + await route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify({ + data: { + products: { + nodes: [{ + id: '29', + name: 'Test simple', + price: '100' + }] + } + } + }) + }); + }); + + await page.goto('http://localhost:3000'); + }); + + test('basic product purchase flow', async ({ page }: { page: Page }) => { + // Click first product + await page.getByRole('link', { name: 'Test simple' }).click(); + + // Wait for product page to load + await expect(page.getByRole('button', { name: 'KJØP' })).toBeVisible(); + + // Click buy button + await page.getByRole('button', { name: 'KJØP' }).click(); + + // Go to cart + await page.getByRole('link', { name: 'Handlekurv' }).click(); + + // Verify cart page loaded + await expect(page.getByRole('button', { name: 'GÅ TIL KASSE' })).toBeVisible(); + + // Go to checkout + await page.getByRole('button', { name: 'GÅ TIL KASSE' }).click(); + + // Fill in a test field to verify form is accessible + await page.getByPlaceholder('Etternavn').fill('testetternavn'); + await expect(page.getByPlaceholder('Etternavn')).toHaveValue('testetternavn'); + }); +}); From 639f60495ddacebbffcdb19875debe2ee2ed9e88 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 1 Feb 2025 01:31:12 +0100 Subject: [PATCH 2/6] Delete Produkter.spec.ts --- src/tests/Produkter/Produkter.spec.ts | 53 --------------------------- 1 file changed, 53 deletions(-) delete mode 100644 src/tests/Produkter/Produkter.spec.ts diff --git a/src/tests/Produkter/Produkter.spec.ts b/src/tests/Produkter/Produkter.spec.ts deleted file mode 100644 index 00e0c22d8..000000000 --- a/src/tests/Produkter/Produkter.spec.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { test, expect, Page, Route } from '@playwright/test'; - -test.describe('Produkter', () => { - test.beforeEach(async ({ page }: { page: Page }) => { - // Mock GraphQL responses - await page.route('**/graphql', async (route: Route) => { - const postData = route.request().postData(); - - // Mock successful response for all GraphQL requests - await route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({ - data: { - products: { - nodes: [{ - id: '29', - name: 'Test simple', - price: '100' - }] - } - } - }) - }); - }); - - await page.goto('http://localhost:3000'); - }); - - test('basic product purchase flow', async ({ page }: { page: Page }) => { - // Click first product - await page.getByRole('link', { name: 'Test simple' }).click(); - - // Wait for product page to load - await expect(page.getByRole('button', { name: 'KJØP' })).toBeVisible(); - - // Click buy button - await page.getByRole('button', { name: 'KJØP' }).click(); - - // Go to cart - await page.getByRole('link', { name: 'Handlekurv' }).click(); - - // Verify cart page loaded - await expect(page.getByRole('button', { name: 'GÅ TIL KASSE' })).toBeVisible(); - - // Go to checkout - await page.getByRole('button', { name: 'GÅ TIL KASSE' }).click(); - - // Fill in a test field to verify form is accessible - await page.getByPlaceholder('Etternavn').fill('testetternavn'); - await expect(page.getByPlaceholder('Etternavn')).toHaveValue('testetternavn'); - }); -}); From 4621f736e3603c22f40c19054fa3769452b46f23 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 1 Feb 2025 01:32:07 +0100 Subject: [PATCH 3/6] Create Categories.spec.ts --- src/tests/Categories/Categories.spec.ts | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/tests/Categories/Categories.spec.ts diff --git a/src/tests/Categories/Categories.spec.ts b/src/tests/Categories/Categories.spec.ts new file mode 100644 index 000000000..a4f01f829 --- /dev/null +++ b/src/tests/Categories/Categories.spec.ts @@ -0,0 +1,31 @@ +import { test, expect } from '@playwright/test'; + +test.describe('Categories', () => { + test('should navigate to categories page and verify content', async ({ page }) => { + // Start from homepage + await page.goto('http://localhost:3000/'); + + // Click on Categories link in navigation + await page.getByRole('link', { name: 'KATEGORIER' }).click(); + + // Verify URL + await expect(page).toHaveURL('http://localhost:3000/kategorier'); + + // Verify page title + await expect(page.locator('h1')).toContainText('Kategorier'); + + // Verify categories section exists + await expect(page.locator('section')).toBeVisible(); + }); + + test('should navigate back to home from categories', async ({ page }) => { + // Start from categories page + await page.goto('http://localhost:3000/kategorier'); + + // Click on home/logo link + await page.getByRole('link', { name: 'NETTBUTIKK' }).click(); + + // Verify we're back on homepage + await expect(page).toHaveURL('http://localhost:3000/'); + }); +}); From 4b237e6b0a51a991255ba8e64517d86c6cb6ac5f Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 1 Feb 2025 01:39:35 +0100 Subject: [PATCH 4/6] Update Categories.spec.ts --- src/tests/Categories/Categories.spec.ts | 48 +++++++++++++------------ 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/tests/Categories/Categories.spec.ts b/src/tests/Categories/Categories.spec.ts index a4f01f829..949158837 100644 --- a/src/tests/Categories/Categories.spec.ts +++ b/src/tests/Categories/Categories.spec.ts @@ -1,31 +1,35 @@ import { test, expect } from '@playwright/test'; -test.describe('Categories', () => { - test('should navigate to categories page and verify content', async ({ page }) => { - // Start from homepage +test.describe('Categories Navigation', () => { + test.beforeEach(async ({ page }) => { await page.goto('http://localhost:3000/'); - - // Click on Categories link in navigation - await page.getByRole('link', { name: 'KATEGORIER' }).click(); - - // Verify URL - await expect(page).toHaveURL('http://localhost:3000/kategorier'); - - // Verify page title - await expect(page.locator('h1')).toContainText('Kategorier'); - - // Verify categories section exists - await expect(page.locator('section')).toBeVisible(); }); - test('should navigate back to home from categories', async ({ page }) => { - // Start from categories page - await page.goto('http://localhost:3000/kategorier'); - - // Click on home/logo link + test('should navigate through category pages', async ({ page }) => { + // Navigate to categories page + await page.getByRole('link', { name: 'Kategorier' }).click(); + await expect(page).toHaveURL(/.*\/kategorier/); + + // Click a category and verify navigation + await page.getByRole('link', { name: 'Clothing' }).click(); + await expect(page).toHaveURL(/.*\/kategori\/clothing/); + + // Go back to categories + await page.getByRole('link', { name: 'Kategorier' }).click(); + await expect(page).toHaveURL(/.*\/kategorier/); + + // Try another category + await page.getByRole('link', { name: 'Tshirts' }).click(); + await expect(page).toHaveURL(/.*\/kategori\/tshirts/); + }); + + test('should navigate between categories and home', async ({ page }) => { + // Go to categories + await page.getByRole('link', { name: 'Kategorier' }).click(); + await expect(page).toHaveURL(/.*\/kategorier/); + + // Go back home await page.getByRole('link', { name: 'NETTBUTIKK' }).click(); - - // Verify we're back on homepage await expect(page).toHaveURL('http://localhost:3000/'); }); }); From 3d23839be7cea6a46d384af436eb5095b3447310 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 1 Feb 2025 03:08:20 +0100 Subject: [PATCH 5/6] Fi rege --- src/tests/Categories/Categories.spec.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tests/Categories/Categories.spec.ts b/src/tests/Categories/Categories.spec.ts index 949158837..3073d0817 100644 --- a/src/tests/Categories/Categories.spec.ts +++ b/src/tests/Categories/Categories.spec.ts @@ -8,25 +8,25 @@ test.describe('Categories Navigation', () => { test('should navigate through category pages', async ({ page }) => { // Navigate to categories page await page.getByRole('link', { name: 'Kategorier' }).click(); - await expect(page).toHaveURL(/.*\/kategorier/); + await expect(page).toHaveURL('http://localhost:3000/kategorier'); // Click a category and verify navigation await page.getByRole('link', { name: 'Clothing' }).click(); - await expect(page).toHaveURL(/.*\/kategori\/clothing/); + await expect(page).toHaveURL('http://localhost:3000/kategori/clothing'); // Go back to categories await page.getByRole('link', { name: 'Kategorier' }).click(); - await expect(page).toHaveURL(/.*\/kategorier/); + await expect(page).toHaveURL('http://localhost:3000/kategorier'); // Try another category await page.getByRole('link', { name: 'Tshirts' }).click(); - await expect(page).toHaveURL(/.*\/kategori\/tshirts/); + await expect(page).toHaveURL('http://localhost:3000/kategori/tshirts'); }); test('should navigate between categories and home', async ({ page }) => { // Go to categories await page.getByRole('link', { name: 'Kategorier' }).click(); - await expect(page).toHaveURL(/.*\/kategorier/); + await expect(page).toHaveURL('http://localhost:3000/kategorier'); // Go back home await page.getByRole('link', { name: 'NETTBUTIKK' }).click(); From ef341b123ba0ed298a1d3626b7083d4e9c4cb342 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Sat, 1 Feb 2025 03:29:17 +0100 Subject: [PATCH 6/6] Fix test --- src/tests/Categories/Categories.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/Categories/Categories.spec.ts b/src/tests/Categories/Categories.spec.ts index 3073d0817..e15b39aea 100644 --- a/src/tests/Categories/Categories.spec.ts +++ b/src/tests/Categories/Categories.spec.ts @@ -12,7 +12,7 @@ test.describe('Categories Navigation', () => { // Click a category and verify navigation await page.getByRole('link', { name: 'Clothing' }).click(); - await expect(page).toHaveURL('http://localhost:3000/kategori/clothing'); + await expect(page).toHaveURL(/^http:\/\/localhost:3000\/kategori\/clothing/); // Go back to categories await page.getByRole('link', { name: 'Kategorier' }).click(); @@ -20,7 +20,7 @@ test.describe('Categories Navigation', () => { // Try another category await page.getByRole('link', { name: 'Tshirts' }).click(); - await expect(page).toHaveURL('http://localhost:3000/kategori/tshirts'); + await expect(page).toHaveURL(/^http:\/\/localhost:3000\/kategori\/tshirts/); }); test('should navigate between categories and home', async ({ page }) => {