feat: comprehensive project completion and documentation

- Enhanced event creation wizard with multi-step validation
- Added advanced QR scanning system with offline support
- Implemented comprehensive territory management features
- Expanded analytics with export functionality and KPIs
- Created complete design token system with theme switching
- Added 25+ Playwright test files for comprehensive coverage
- Implemented enterprise-grade permission system
- Enhanced component library with 80+ React components
- Added Firebase integration for deployment
- Completed Phase 3 development goals substantially

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-26 15:04:37 -06:00
parent aa81eb5adb
commit 8ed7ae95d1
230 changed files with 24072 additions and 3395 deletions

View File

@@ -1,4 +1,4 @@
import path from 'path';
import * as path from 'path';
import { test, expect } from '@playwright/test';
import type { Page } from '@playwright/test';
@@ -16,10 +16,6 @@ import type { Page } from '@playwright/test';
* and does not require sudo permissions.
*/
const DEMO_ACCOUNTS = {
admin: { email: 'admin@example.com', password: 'demo123' }, // org_001, payment connected
organizer: { email: 'organizer@example.com', password: 'demo123' }, // org_002, payment NOT connected
};
async function takeScreenshot(page: Page, name: string) {
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
@@ -245,7 +241,7 @@ test.describe('Publish-Scanner Smoke Tests', () => {
}
// Check for scanner instructions or guidance text
const instructionsVisible = await page.locator('text*=scanner', 'text*=QR', 'text*=camera').first().isVisible();
const instructionsVisible = await page.locator('text*=scanner').first().isVisible();
expect(instructionsVisible).toBeTruthy();
await takeScreenshot(page, 'scanner-complete-ui-check');
@@ -312,10 +308,9 @@ test.describe('Publish-Scanner Smoke Tests', () => {
// Part 1: Admin with payment connected
await loginAs(page, 'admin');
const eventId = await navigateToFirstEvent(page);
await navigateToFirstEvent(page);
// Check for payment status indicators on event detail page
const paymentConnectedIndicator = page.locator('[data-testid="payment-status-connected"]');
const paymentDisconnectedBanner = page.locator('[data-testid="payment-banner"]');
// Admin should have payment connected, so no disconnect banner