Files
RepoPulse-Public/frontend/e2e/repopulse.spec.ts
T

46 lines
2.7 KiB
TypeScript

import { expect, test } from '@playwright/test'
test('portfolio workflow covers navigation, remediation, a scan lifecycle and export', async ({ page }) => {
await page.goto('/')
await expect(page.getByRole('heading', { name: /portfolio signal/i })).toBeVisible()
await expect(page.getByRole('heading', { name: 'Remediation Center' })).toBeVisible()
await expect(page.getByText('A deterministic package-manager lockfile was not found for this workspace.')).toBeVisible()
await page.locator('.remediation-center').getByRole('button', { name: /Jens\/Alpha/ }).click()
await expect(page.getByRole('heading', { name: 'Jens/Alpha' })).toBeVisible()
await page.getByRole('link', { name: 'Dashboard', exact: true }).click()
await page.getByRole('button', { name: /open repository explorer/i }).click()
await expect(page.getByText('25 matching 25 repositories')).toBeVisible()
await page.getByRole('button', { name: 'Visual grid' }).click()
await page.getByRole('button', { name: 'Pin Jens/Alpha' }).click()
await expect(page.getByRole('button', { name: 'Remove Jens/Alpha from pinned repositories' })).toBeVisible()
await page.getByRole('button', { name: 'Table' }).click()
await expect(page.getByText('Page 1 / 2')).toBeVisible()
await page.getByRole('button', { name: 'Next' }).click()
await expect(page.getByText('Page 2 / 2')).toBeVisible()
await page.getByLabel('Filter by readiness').selectOption('blocked')
await expect(page.getByText('1 matching 25 repositories')).toBeVisible()
await page.getByRole('link', { name: 'Open Jens/Alpha' }).click()
await expect(page.getByRole('heading', { name: 'Jens/Alpha' })).toBeVisible()
await page.getByRole('link', { name: /findings/i }).click()
await expect(page.getByText('No lockfile was retained for the declared dependencies.')).toBeVisible()
await page.getByRole('link', { name: /architecture/i }).click()
await expect(page.getByText('Local import and dependency topology')).toBeVisible()
await page.getByRole('link', { name: /history/i }).click()
await expect(page.getByText('Repository health over time')).toBeVisible()
await page.getByRole('button', { name: 'Scan now' }).click()
await expect(page.getByText('Repository analysis completed.')).toBeVisible({ timeout: 10_000 })
await page.getByText('Reports').click()
const download = page.waitForEvent('download')
await page.getByRole('button', { name: 'Export JSON' }).click()
await expect(download).resolves.toBeTruthy()
await page.keyboard.press('Control+k')
await page.getByPlaceholder('Search repositories…').fill('Beta')
await page.keyboard.press('ArrowDown')
await page.keyboard.press('Enter')
await expect(page.getByRole('heading', { name: 'Jens/Beta', exact: true })).toBeVisible()
})