import { test, expect } from '@playwright/test' test.describe('Payment redirect', () => { test.beforeEach(async ({ page }) => { await page.goto('/logga-in') await page.getByLabel('E-postadress').fill('test@bilhej.se') await page.getByLabel('Lösenord').fill('test1234') await page.getByRole('button', { name: 'Logga in' }).click() await page.waitForURL('/') }) test('can navigate to payment page from compose', async ({ page }) => { await page.goto('/compose?plate=ABC123') await page.getByLabel('Ditt meddelande').fill('Hej fin bil!') await page.getByRole('button', { name: 'Fortsätt till betalning' }).click() await expect(page).toHaveURL(/\/betalning\//) await expect(page.getByRole('heading', { name: 'Betalning' })).toBeVisible() await expect(page.getByText('49 kr')).toBeVisible() await expect(page.getByText('ABC123')).toBeVisible() }) test('payment button marks order as paid and redirects to orders', async ({ page, }) => { await page.goto('/compose?plate=DEF456') await page.getByLabel('Ditt meddelande').fill('Vill köpa din bil.') await page.getByRole('button', { name: 'Fortsätt till betalning' }).click() await page.waitForURL(/\/betalning\//) await page.getByRole('button', { name: 'Jag har betalat' }).click() await page.getByRole('button', { name: 'Ja, jag har betalat' }).click() await expect(page).toHaveURL('/orders') await expect(page.getByText('DEF456').first()).toBeVisible() }) test('payment page requires authentication', async ({ page }) => { await page.evaluate(() => localStorage.clear()) await page.goto('/betalning/some-id') await expect(page).toHaveURL(/\/logga-in/) }) test('shows Swish payment instructions', async ({ page }) => { await page.goto('/compose?plate=GHI789') await page.getByLabel('Ditt meddelande').fill('Hej!') await page.getByRole('button', { name: 'Fortsätt till betalning' }).click() await page.waitForURL(/\/betalning\//) await expect(page.getByText('Swisha till')).toBeVisible() await expect( page.getByRole('button', { name: 'Jag har betalat' }), ).toBeVisible() }) test('shows QR code for desktop scanning', async ({ page }) => { await page.goto('/compose?plate=JKL012') await page.getByLabel('Ditt meddelande').fill('Fin bil!') await page.getByRole('button', { name: 'Fortsätt till betalning' }).click() await page.waitForURL(/\/betalning\//) await expect(page.getByRole('img', { name: 'Swish QR-kod' })).toBeVisible() await expect(page.getByText('Skanna QR-koden')).toBeVisible() }) test('shows Swish payment link with pre-filled data', async ({ page }) => { await page.goto('/compose?plate=MNO345') await page.getByLabel('Ditt meddelande').fill('Hej där!') await page.getByRole('button', { name: 'Fortsätt till betalning' }).click() await page.waitForURL(/\/betalning\//) const swishLink = page.getByRole('link', { name: 'Betala med Swish' }) await expect(swishLink).toBeVisible() const href = await swishLink.getAttribute('href') expect(href).toContain('app.swish.nu') expect(href).toContain('amt=49.00') }) })