upskill-event-manager/tests/e2e/tec-form-inspector.js
Ben 7c9ca65cf2
Some checks are pending
HVAC Plugin CI/CD Pipeline / Security Analysis (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Code Quality & Standards (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Unit Tests (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Integration Tests (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Deploy to Staging (push) Blocked by required conditions
HVAC Plugin CI/CD Pipeline / Deploy to Production (push) Blocked by required conditions
HVAC Plugin CI/CD Pipeline / Notification (push) Blocked by required conditions
Security Monitoring & Compliance / Dependency Vulnerability Scan (push) Waiting to run
Security Monitoring & Compliance / Secrets & Credential Scan (push) Waiting to run
Security Monitoring & Compliance / WordPress Security Analysis (push) Waiting to run
Security Monitoring & Compliance / Static Code Security Analysis (push) Waiting to run
Security Monitoring & Compliance / Security Compliance Validation (push) Waiting to run
Security Monitoring & Compliance / Security Summary Report (push) Blocked by required conditions
Security Monitoring & Compliance / Security Team Notification (push) Blocked by required conditions
feat: add comprehensive test framework and test files
- Add 90+ test files including E2E, unit, and integration tests
- Implement Page Object Model (POM) architecture
- Add Docker testing environment with comprehensive services
- Include modernized test framework with error recovery
- Add specialized test suites for master trainer and trainer workflows
- Update .gitignore to properly track test infrastructure

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 23:23:26 -03:00

119 lines
No EOL
5.8 KiB
JavaScript

/**
* TEC Form Inspector - Analyze TEC Community Events forms to identify correct field selectors
*/
const { chromium } = require('playwright');
async function inspectTECForm() {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
try {
// Login first
await page.goto('https://upskill-staging.measurequick.com/trainer/training-login/');
await page.fill('#user_login', 'test_trainer');
await page.fill('#user_pass', 'TestTrainer123!');
await page.click('#wp-submit');
await page.waitForTimeout(3000);
// Navigate to TEC form
await page.goto('https://upskill-staging.measurequick.com/events/network/add/');
await page.waitForLoadState('networkidle');
// Analyze all forms on the page
const formAnalysis = await page.evaluate(() => {
const forms = document.querySelectorAll('form');
const analysis = {};
forms.forEach((form, index) => {
analysis[`form_${index}`] = {
id: form.id || `unnamed_form_${index}`,
action: form.action || 'no-action',
method: form.method || 'get',
fields: {}
};
// Analyze input fields
const inputs = form.querySelectorAll('input, textarea, select');
inputs.forEach((input) => {
const fieldInfo = {
type: input.type || (input.tagName ? input.tagName.toLowerCase() : 'unknown'),
name: input.name || 'no-name',
id: input.id || 'no-id',
required: input.required || (input.classList && input.classList.contains('required')),
placeholder: input.placeholder || 'no-placeholder',
visible: input.offsetWidth > 0 && input.offsetHeight > 0,
selector: input.id ? `#${input.id}` : (input.name ? `[name="${input.name}"]` : (input.tagName ? input.tagName.toLowerCase() : 'unknown'))
};
// Try to identify common field types
const name = input.name || '';
const id = input.id || '';
const placeholder = (input.placeholder || '').toLowerCase();
if (name.includes('title') || id.includes('title') || placeholder.includes('title')) {
analysis[`form_${index}`].fields.title = fieldInfo;
} else if (name.includes('content') || id.includes('content') || placeholder.includes('description')) {
analysis[`form_${index}`].fields.description = fieldInfo;
} else if (name.includes('StartDate') || id.includes('StartDate')) {
analysis[`form_${index}`].fields.startDate = fieldInfo;
} else if (name.includes('StartTime') || id.includes('StartTime')) {
analysis[`form_${index}`].fields.startTime = fieldInfo;
} else if (name.includes('EndDate') || id.includes('EndDate')) {
analysis[`form_${index}`].fields.endDate = fieldInfo;
} else if (name.includes('EndTime') || id.includes('EndTime')) {
analysis[`form_${index}`].fields.endTime = fieldInfo;
} else if (name.includes('Cost') || id.includes('Cost')) {
analysis[`form_${index}`].fields.cost = fieldInfo;
} else if (name.includes('venue') || id.includes('venue')) {
analysis[`form_${index}`].fields.venue = fieldInfo;
} else if (name.includes('organizer') || id.includes('organizer')) {
analysis[`form_${index}`].fields.organizer = fieldInfo;
} else if (input.type === 'submit') {
analysis[`form_${index}`].fields.submit = fieldInfo;
}
});
});
return analysis;
});
console.log('📋 TEC FORM ANALYSIS');
console.log('═'.repeat(50));
console.log(JSON.stringify(formAnalysis, null, 2));
// Find which form is the main event creation form
const mainForm = Object.entries(formAnalysis).find(([key, form]) =>
form.fields.title && form.fields.description && form.fields.submit
);
if (mainForm) {
console.log('\n🎯 MAIN EVENT CREATION FORM IDENTIFIED:');
console.log(`Form ID: ${mainForm[1].id}`);
console.log(`Title Field: ${mainForm[1].fields.title?.selector}`);
console.log(`Description Field: ${mainForm[1].fields.description?.selector}`);
console.log(`Submit Button: ${mainForm[1].fields.submit?.selector}`);
// Test filling out the main form
if (mainForm[1].fields.title) {
await page.fill(mainForm[1].fields.title.selector, 'Test Event Title');
console.log('✅ Title field filled successfully');
}
if (mainForm[1].fields.description) {
await page.fill(mainForm[1].fields.description.selector, 'Test event description');
console.log('✅ Description field filled successfully');
}
await page.screenshot({ path: 'screenshots/tec-form-filled-debug.png', fullPage: true });
console.log('📸 Screenshot saved: tec-form-filled-debug.png');
}
} catch (error) {
console.error('Error:', error);
} finally {
await browser.close();
}
}
inspectTECForm();