import { test, expect, Page } from '@playwright/test';
import { LoginPage } from './pages/LoginPage';
import { DashboardPage } from './pages/DashboardPage';
import { EventSummaryPage } from './pages/EventSummaryPage';
import * as fs from 'fs';
import * as path from 'path';

test.describe('Dashboard and Event Summary Screenshots', () => {
  const screenshotsDir = path.join(__dirname, 'screenshots');
  
  // Create screenshots directory if it doesn't exist
  test.beforeAll(async () => {
    if (!fs.existsSync(screenshotsDir)) {
      fs.mkdirSync(screenshotsDir, { recursive: true });
    }
  });

  test('Take screenshots of trainer dashboard and event summary', async ({ page }) => {
    // Set viewport size
    await page.setViewportSize({ width: 1280, height: 800 });
    
    // Login
    const loginPage = new LoginPage(page);
    await loginPage.navigate();
    await loginPage.login('test_trainer', 'Test123!');
    
    // Take screenshot of dashboard
    const dashboardPage = new DashboardPage(page);
    await dashboardPage.navigate();
    const dashboardPath = path.join(screenshotsDir, 'trainer-dashboard.png');
    await page.screenshot({ path: dashboardPath, fullPage: true });
    console.log(`Dashboard screenshot saved to: ${dashboardPath}`);
    
    // Navigate to event summary page
    const eventSummaryPage = new EventSummaryPage(page);
    await eventSummaryPage.navigateToEventSummary('5484');
    
    // Take screenshot of event summary
    const eventSummaryPath = path.join(screenshotsDir, 'event-summary.png');
    await page.screenshot({ path: eventSummaryPath, fullPage: true });
    console.log(`Event summary screenshot saved to: ${eventSummaryPath}`);
    
    // Check if tickets data is visible on the event summary page
    const isTransactionsTableVisible = await eventSummaryPage.isTransactionsTableVisible();
    if (isTransactionsTableVisible) {
      const transactionCount = await eventSummaryPage.getTransactionCount();
      console.log(`Transactions table is visible with ${transactionCount} transactions`);
    } else {
      console.log('Transactions table is not visible');
    }
  });
});