84 lines
3.1 KiB
TypeScript
84 lines
3.1 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Minimal Form Submission Test', () => {
|
|
test('should submit minimal valid form', async ({ page }) => {
|
|
await page.goto('/');
|
|
|
|
// Wait for page to load
|
|
await page.waitForLoadState('networkidle');
|
|
|
|
// Fill required fields with minimal valid data
|
|
await page.fill('input[id="playerName"]', 'TestPlayer');
|
|
await page.fill('input[id="currentPoints"]', '0');
|
|
|
|
// Select a simple crime that doesn't require additional inputs
|
|
// Click "all" category first to show all crimes
|
|
await page.locator('button').filter({ hasText: 'all' }).click();
|
|
|
|
// Wait for select trigger to be available
|
|
await page.waitForSelector('button:has-text("select an offense")');
|
|
|
|
// Click the select trigger
|
|
await page.locator('button').filter({ hasText: 'select an offense' }).click();
|
|
|
|
// Wait for dropdown and select "Abusive Chat" (simple crime)
|
|
await page.locator('[data-slot="select-content"]').locator('text=Abusive Chat').click();
|
|
|
|
// Take screenshot before submit
|
|
await page.screenshot({ path: 'debug-screenshots/minimal-before-submit.png', fullPage: true });
|
|
|
|
// Check if button is enabled before submitting
|
|
const button = page.locator('button[type="submit"]');
|
|
const isEnabled = await button.isEnabled();
|
|
console.log('Submit button is enabled:', isEnabled);
|
|
|
|
// Check form validity by looking at the DOM
|
|
const hasErrors = await page.locator('.text-red-500').count() > 0;
|
|
console.log('Form has errors:', hasErrors);
|
|
|
|
// Submit the form
|
|
await button.click();
|
|
|
|
// Wait for processing
|
|
await page.waitForTimeout(2000);
|
|
|
|
// Take screenshot after submit
|
|
await page.screenshot({ path: 'debug-screenshots/minimal-after-submit.png', fullPage: true });
|
|
|
|
// Listen for console messages after submit
|
|
const consoleMessages: string[] = [];
|
|
page.on('console', msg => {
|
|
consoleMessages.push(msg.text());
|
|
});
|
|
|
|
// Wait a bit more for any async operations
|
|
await page.waitForTimeout(1000);
|
|
|
|
console.log('Console messages after submit:', consoleMessages);
|
|
|
|
// Check for results
|
|
const resultsVisible = await page.locator('h3').filter({ hasText: 'results' }).count() > 0;
|
|
console.log('Results visible:', resultsVisible);
|
|
|
|
if (resultsVisible) {
|
|
console.log('SUCCESS: Form submission worked!');
|
|
} else {
|
|
console.log('FAILURE: Form submission did not work');
|
|
|
|
// Check for any form errors
|
|
const formErrors = await page.locator('.text-red-500').allTextContents();
|
|
console.log('Form errors:', formErrors);
|
|
|
|
// Check form data
|
|
const playerName = await page.inputValue('input[id="playerName"]');
|
|
const currentPoints = await page.inputValue('input[id="currentPoints"]');
|
|
console.log('Form data - playerName:', playerName, 'currentPoints:', currentPoints);
|
|
|
|
// Check if crimeId is set
|
|
const crimeTrigger = page.locator('button').filter({ hasText: 'select an offense' });
|
|
const crimeTriggerText = await crimeTrigger.textContent();
|
|
console.log('Crime trigger text:', crimeTriggerText);
|
|
}
|
|
});
|
|
});
|