import { test, expect } from '@playwright/test'; test.describe('DevOps Dashboard E2E Tests', () => { test.beforeEach(async ({ page }) => { // Navigate to login page first await page.goto('http://localhost:3000/login'); // Fill in login form await page.fill('input[type="email"]', 'admin@bytelyst.com'); await page.fill('input[type="password"]', 'admin12345'); await page.fill('input[type="text"]', 'bytelyst-devops'); // Submit login await page.click('button[type="submit"]'); // Wait for navigation to dashboard await page.waitForURL('http://localhost:3000/', { timeout: 10000 }); }); test('dashboard page loads successfully', async ({ page }) => { // Check main heading await expect(page.getByText('Dashboard')).toBeVisible(); await expect(page.getByText('Services and deployments overview')).toBeVisible(); }); test('refresh button is visible', async ({ page }) => { await expect(page.getByRole('button', { name: /refresh/i })).toBeVisible(); }); test('create service button is visible', async ({ page }) => { await expect(page.getByRole('button', { name: /create service/i })).toBeVisible(); }); test('seed services button is visible', async ({ page }) => { await expect(page.getByRole('button', { name: /seed services/i })).toBeVisible(); }); test('services section is visible', async ({ page }) => { await expect(page.getByText('Services')).toBeVisible(); }); test('recent deployments section is visible', async ({ page }) => { await expect(page.getByText('Recent Deployments')).toBeVisible(); }); test('refresh button works', async ({ page }) => { const refreshButton = page.getByRole('button', { name: /refresh/i }).first(); await refreshButton.click(); // Check that button shows loading state await expect(refreshButton).toBeDisabled(); }); test('shows empty state when no services', async ({ page }) => { // Check for empty state message const emptyState = page.getByText('No services configured'); if (await emptyState.isVisible()) { await expect(page.getByText('Create Service')).toBeVisible(); } }); });