mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2025-12-22 22:00:00 +00:00
- Complete documentation reorganization into professional structure - Achieved 90%+ test coverage across all components - Created sophisticated WASM demo matching shadcn/ui quality - Fixed all compilation warnings and missing binary files - Optimized dependencies across all packages - Professional code standards and performance optimizations - Cross-browser compatibility with Playwright testing - New York variants implementation - Advanced signal management for Leptos 0.8.8+ - Enhanced testing infrastructure with TDD approach
105 lines
4.0 KiB
TypeScript
105 lines
4.0 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Server Startup Tests', () => {
|
|
test('should be able to start trunk serve without errors', async ({ page }) => {
|
|
// This test will verify that the server can start
|
|
// We'll use a simple HTTP request to check if the server is accessible
|
|
try {
|
|
const response = await page.goto('/', {
|
|
waitUntil: 'networkidle',
|
|
timeout: 10000
|
|
});
|
|
|
|
if (response) {
|
|
expect(response.status()).toBe(200);
|
|
console.log('✅ Server is running and accessible');
|
|
} else {
|
|
throw new Error('No response received from server');
|
|
}
|
|
} catch (error) {
|
|
console.log('❌ Server is not accessible:', error.message);
|
|
throw error;
|
|
}
|
|
});
|
|
|
|
test('should serve the main page with correct content', async ({ page }) => {
|
|
await page.goto('/');
|
|
|
|
// Wait for the page to load
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
// Check for the main dashboard heading (now h2)
|
|
const heading = page.locator('h2').filter({ hasText: 'Dashboard' }).first();
|
|
await expect(heading).toBeVisible();
|
|
await expect(heading).toContainText('Dashboard');
|
|
|
|
// Check for the company name in sidebar (only visible on desktop)
|
|
const companyName = page.locator('h1').filter({ hasText: 'Acme Inc.' }).first();
|
|
// On mobile, sidebar is hidden, so we just check it exists
|
|
await expect(companyName).toHaveCount(1);
|
|
|
|
// Check for key metrics cards
|
|
const revenueCard = page.locator('text=Total Revenue').first();
|
|
await expect(revenueCard).toBeVisible();
|
|
|
|
const customersCard = page.locator('text=New Customers').first();
|
|
await expect(customersCard).toBeVisible();
|
|
|
|
// Check for the documents table
|
|
const documentsTable = page.locator('text=Documents').first();
|
|
await expect(documentsTable).toBeVisible();
|
|
|
|
console.log('✅ Sophisticated dashboard content is served correctly');
|
|
});
|
|
|
|
test('should have working dashboard features', async ({ page }) => {
|
|
await page.goto('/');
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
// Check for sidebar navigation
|
|
const sidebarNav = page.locator('nav').filter({ hasText: /Dashboard|Lifecycle|Analytics|Projects|Team/ }).first();
|
|
await expect(sidebarNav).toBeVisible();
|
|
|
|
// Check for action buttons
|
|
const viewButton = page.locator('button').filter({ hasText: 'View' });
|
|
const quickCreateButton = page.locator('button').filter({ hasText: 'Quick Create' });
|
|
await expect(viewButton).toBeVisible();
|
|
await expect(quickCreateButton).toBeVisible();
|
|
|
|
// Check for dashboard metrics cards
|
|
const metrics = page.locator('text=Total Revenue').or(page.locator('text=New Customers')).or(page.locator('text=Active Accounts')).or(page.locator('text=Growth Rate'));
|
|
await expect(metrics).toHaveCount(4);
|
|
|
|
// Check for data table
|
|
const table = page.locator('table');
|
|
await expect(table).toBeVisible();
|
|
|
|
// Check for table headers
|
|
const tableHeaders = page.locator('th').filter({ hasText: /Header|Section Type|Status|Target|Limit|Reviewer/ });
|
|
await expect(tableHeaders).toHaveCount(7); // Updated count for new table structure
|
|
|
|
// Check for search functionality
|
|
const searchInput = page.locator('input[placeholder*="Search"]');
|
|
await expect(searchInput).toBeVisible();
|
|
|
|
// Test search input
|
|
await searchInput.fill('Cover page');
|
|
await expect(searchInput).toHaveValue('Cover page');
|
|
|
|
// Check for filter buttons
|
|
const filterButtons = page.locator('button').filter({ hasText: /Past Performance|Key Personnel|Focus Documents/ });
|
|
await expect(filterButtons).toHaveCount(3);
|
|
|
|
// Check for pagination
|
|
const pagination = page.locator('text=Showing').or(page.locator('text=Previous')).or(page.locator('text=Next'));
|
|
await expect(pagination).toBeVisible();
|
|
|
|
// Test button interactions
|
|
await quickCreateButton.click();
|
|
await viewButton.click();
|
|
|
|
console.log('✅ Sophisticated dashboard features are present and functional');
|
|
});
|
|
});
|
|
|