upskill-event-manager/wordpress-dev/tests/e2e/certificate-test-clean.spec.ts

150 lines
No EOL
5.3 KiB
TypeScript

import { STAGING_URL, PATHS, TIMEOUTS } from './config/staging-config';
import { test, expect } from '@playwright/test';
// Constants
// STAGING_URL is now imported from config
const LOGIN_URL = PATHS.login;
const DASHBOARD_URL = PATHS.dashboard;
const USERNAME = 'test_trainer';
const PASSWORD = 'Test123!';
test.describe('Certificate Functionality Tests', () => {
test.beforeEach(async ({ page }) => {
// Login before each test
await page.goto(LOGIN_URL);
await page.fill('#user_login', USERNAME);
await page.fill('#user_pass', PASSWORD);
await page.click('#wp-submit');
await page.waitForLoadState('networkidle');
// Verify login was successful
await expect(page).toHaveURL(/hvac-dashboard/);
});
test('Should navigate to Generate Certificates page', async ({ page }) => {
// Navigate to dashboard first
await page.goto(DASHBOARD_URL);
await page.waitForLoadState('networkidle');
// Look for Generate Certificates link
const generateLink = page.locator('a:has-text("Generate Certificates")');
await expect(generateLink).toBeVisible();
// Click the link
await generateLink.click();
await page.waitForLoadState('networkidle');
// Check page title
const title = await page.title();
expect(title).toContain('Generate Certificates');
// Check for event dropdown
const eventDropdown = page.locator('#event_id');
await expect(eventDropdown).toBeVisible();
// Count options to verify dropdown is populated
const optionCount = await page.locator('#event_id option').count();
expect(optionCount).toBeGreaterThan(1);
});
test('Should navigate to Certificate Reports page', async ({ page }) => {
// Navigate to dashboard first
await page.goto(DASHBOARD_URL);
await page.waitForLoadState('networkidle');
// Look for Certificate Reports link
const reportsLink = page.locator('a:has-text("Certificate Reports")');
await expect(reportsLink).toBeVisible();
// Click the link
await reportsLink.click();
await page.waitForLoadState('networkidle');
// Check page title
const title = await page.title();
expect(title).toContain('Certificate Reports');
// Check for filter form
const filterForm = page.locator('form.hvac-certificate-filters');
await expect(filterForm).toBeVisible();
});
test('Should filter certificates by event', async ({ page }) => {
// Navigate to Certificate Reports page
await page.goto(`${STAGING_URL}/certificate-reports/`);
await page.waitForLoadState('networkidle');
// Check for filter form
const filterForm = page.locator('form.hvac-certificate-filters');
await expect(filterForm).toBeVisible();
// Check if event filter exists
const eventFilter = page.locator('#filter_event');
await expect(eventFilter).toBeVisible();
// Get options count
const optionCount = await page.locator('#filter_event option').count();
// Test different filter options
if (optionCount > 1) {
// Select the first non-empty option
await eventFilter.selectOption({ index: 1 });
// Apply filter
const filterButton = page.locator('button[type="submit"]');
await filterButton.click();
await page.waitForLoadState('networkidle');
// Log the filter results (can't guarantee there will be certificates)
const certificateItems = page.locator('.hvac-certificate-item');
const certificateCount = await certificateItems.count();
console.log(`Found ${certificateCount} certificates after filtering by event`);
}
});
test('Should filter certificates by attendee', async ({ page }) => {
// Navigate to Certificate Reports page
await page.goto(`${STAGING_URL}/certificate-reports/`);
await page.waitForLoadState('networkidle');
// Check for filter form
const filterForm = page.locator('form.hvac-certificate-filters');
await expect(filterForm).toBeVisible();
// Check if attendee search exists
const attendeeSearch = page.locator('#search_attendee');
// Some versions may not have this feature yet
if (await attendeeSearch.isVisible()) {
// Try a simple search
await attendeeSearch.fill('test');
// Apply filter
const filterButton = page.locator('button[type="submit"]');
await filterButton.click();
await page.waitForLoadState('networkidle');
// Verify filter was applied
const currentSearchValue = await attendeeSearch.inputValue();
expect(currentSearchValue).toBe('test');
// Log the filter results
const certificateItems = page.locator('.hvac-certificate-item');
const certificateCount = await certificateItems.count();
console.log(`Found ${certificateCount} certificates with attendee search "test"`);
// Reset filters
const resetButton = page.locator('button[type="reset"]');
if (await resetButton.isVisible()) {
await resetButton.click();
await page.waitForLoadState('networkidle');
// Verify reset worked
const searchValue = await attendeeSearch.inputValue();
expect(searchValue).toBe('');
}
} else {
console.log('Attendee search not available, skipping test');
}
});
});