upskill-event-manager/wordpress-dev/tests/e2e/debug-login-page.spec.ts
bengizmo d1f1005a5a fix: Update login form selectors to match actual page structure
- Updated LoginPage selectors to use more robust input[name] selectors instead of id-based
- Added better error handling and message detection
- Enhanced form waiting for better reliability
- Created debug test scripts to verify selector functionality
- Fixed isLoginFormVisible reference in trainer journey test

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-21 20:21:16 -03:00

113 lines
No EOL
4.2 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { STAGING_URL } from './config/staging-config';
test('Debug login page', async ({ page }) => {
console.log('Starting login page debug');
// Navigate to the login page
console.log('Navigating to login page...');
await page.goto(`${STAGING_URL}/community-login/`, { waitUntil: 'networkidle' });
console.log(`Current URL: ${page.url()}`);
// Take screenshot of the page
await page.screenshot({ path: 'screenshots/login-page.png' });
console.log('Screenshot saved to screenshots/login-page.png');
// Get page title
const title = await page.title();
console.log(`Page title: ${title}`);
// Check for redirects
if (!page.url().includes('community-login')) {
console.log(`⚠️ Page was redirected to: ${page.url()}`);
}
// Check for iframes
const iframes = await page.$$('iframe');
console.log(`Number of iframes: ${iframes.length}`);
// Dump HTML content
const html = await page.content();
console.log('First 500 chars of HTML:');
console.log(html.substring(0, 500));
// Look for common login form elements with various selectors
const selectors = [
'#user_login',
'#username',
'input[name="log"]',
'input[name="username"]',
'#user_pass',
'#password',
'input[name="pwd"]',
'input[name="password"]',
'#wp-submit',
'input[type="submit"]',
'button[type="submit"]'
];
console.log('\nChecking for form elements:');
for (const selector of selectors) {
const count = await page.$$eval(selector, (elements) => elements.length).catch(() => 0);
if (count > 0) {
console.log(`✅ Found ${count} elements matching selector: ${selector}`);
const element = await page.$(selector);
if (element) {
const tagName = await element.evaluate(el => el.tagName).catch(() => 'Unknown');
const type = await element.evaluate(el => el.getAttribute('type')).catch(() => 'Unknown');
const name = await element.evaluate(el => el.getAttribute('name')).catch(() => 'Unknown');
const id = await element.evaluate(el => el.getAttribute('id')).catch(() => 'Unknown');
console.log(` Tag: ${tagName}, Type: ${type}, Name: ${name}, ID: ${id}`);
}
} else {
console.log(`❌ No elements found for selector: ${selector}`);
}
}
// Check for error containers
const errorSelectors = [
'.login-error',
'#login_error',
'.login_error',
'.notice-error',
'.woocommerce-error',
'.wp-die-message'
];
console.log('\nChecking for error containers:');
for (const selector of errorSelectors) {
const count = await page.$$eval(selector, (elements) => elements.length).catch(() => 0);
console.log(`${selector}: ${count > 0 ? '✅ Found' : '❌ Not found'}`);
}
// Output all forms on the page
const forms = await page.$$('form');
console.log(`\nNumber of forms: ${forms.length}`);
for (let i = 0; i < forms.length; i++) {
const form = forms[i];
const action = await form.evaluate(f => f.getAttribute('action') || 'No action').catch(() => 'Unknown');
const method = await form.evaluate(f => f.getAttribute('method') || 'No method').catch(() => 'Unknown');
const id = await form.evaluate(f => f.getAttribute('id') || 'No id').catch(() => 'Unknown');
const className = await form.evaluate(f => f.getAttribute('class') || 'No class').catch(() => 'Unknown');
console.log(`\nForm #${i+1}:`);
console.log(` ID: ${id}`);
console.log(` Class: ${className}`);
console.log(` Action: ${action}`);
console.log(` Method: ${method}`);
// Get inputs in the form
const inputs = await form.$$('input');
console.log(` Inputs: ${inputs.length}`);
for (const input of inputs) {
const type = await input.evaluate(i => i.getAttribute('type') || 'No type').catch(() => 'Unknown');
const name = await input.evaluate(i => i.getAttribute('name') || 'No name').catch(() => 'Unknown');
const id = await input.evaluate(i => i.getAttribute('id') || 'No id').catch(() => 'Unknown');
console.log(` Input: Type=${type}, Name=${name}, ID=${id}`);
}
}
console.log('\nLogin page debug complete');
});