upskill-event-manager/wordpress-dev/tests/e2e/test-zoho-admin-interface.test.ts

148 lines
No EOL
5.7 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { STAGING_URL } from './config/staging-config';
/**
* Test Zoho admin interface with enhanced error reporting
*/
test.describe('Zoho Admin Interface Test', () => {
test('Login as admin and test Zoho connection', async ({ page }) => {
console.log('Testing Zoho admin interface with test_admin credentials');
// Step 1: Login to WordPress admin
console.log('Step 1: Logging into WordPress admin');
await page.goto(`${STAGING_URL}/wp-admin/`);
await page.waitForLoadState('networkidle');
// Should be redirected to login page
expect(page.url()).toContain('wp-login.php');
// Login with test_admin credentials
await page.fill('input[name="log"]', 'test_admin');
await page.fill('input[name="pwd"]', 'hvac_staging_2025');
await page.click('input[type="submit"]');
await page.waitForLoadState('networkidle');
console.log('Current URL after login:', page.url());
// Verify we're in wp-admin
const isInAdmin = page.url().includes('/wp-admin/') && !page.url().includes('wp-login.php');
console.log(`Successfully logged into admin: ${isInAdmin}`);
if (!isInAdmin) {
console.log('Login failed - taking screenshot');
await page.screenshot({ path: 'test-results/zoho/login-failed.png' });
return;
}
// Take screenshot of admin dashboard
await page.screenshot({ path: 'test-results/zoho/admin-dashboard.png' });
// Step 2: Look for HVAC menu items
console.log('Step 2: Looking for HVAC menu items');
const hvacMenuItems = await page.locator('#adminmenu a:has-text("HVAC")').count();
const zohoMenuItems = await page.locator('#adminmenu a:has-text("Zoho")').count();
console.log(`HVAC menu items found: ${hvacMenuItems}`);
console.log(`Zoho menu items found: ${zohoMenuItems}`);
// Try to find Zoho CRM settings
const possibleZohoSelectors = [
'#adminmenu a:has-text("Zoho")',
'#adminmenu a[href*="zoho"]',
'#adminmenu a:has-text("CRM")',
'#adminmenu a:has-text("HVAC")',
'a:has-text("Zoho CRM")'
];
let zohoLinkFound = false;
for (const selector of possibleZohoSelectors) {
const count = await page.locator(selector).count();
if (count > 0) {
console.log(`Found potential Zoho link with selector: ${selector}`);
zohoLinkFound = true;
// Try to click it
await page.locator(selector).first().click();
await page.waitForLoadState('networkidle');
await page.screenshot({ path: 'test-results/zoho/zoho-page.png' });
console.log('Clicked Zoho menu, current URL:', page.url());
break;
}
}
if (!zohoLinkFound) {
console.log('No Zoho menu found, checking all menu items');
const allMenuItems = await page.$$eval('#adminmenu a', links =>
links.map(link => ({ text: link.textContent?.trim(), href: link.href }))
);
console.log('All admin menu items:');
for (const item of allMenuItems.slice(0, 20)) {
console.log(` - ${item.text}: ${item.href}`);
}
}
// Step 3: Look for Zoho settings in any admin pages
console.log('Step 3: Searching for Zoho settings in admin pages');
// Try direct URLs that might contain Zoho settings
const possibleZohoUrls = [
'/wp-admin/admin.php?page=zoho-crm',
'/wp-admin/admin.php?page=zoho-settings',
'/wp-admin/admin.php?page=hvac-zoho',
'/wp-admin/admin.php?page=hvac-settings',
'/wp-admin/options-general.php'
];
for (const urlPath of possibleZohoUrls) {
try {
console.log(`Trying URL: ${urlPath}`);
await page.goto(`${STAGING_URL}${urlPath}`);
await page.waitForLoadState('networkidle');
const pageContent = await page.textContent('body');
const hasZohoContent = pageContent?.includes('Zoho') || pageContent?.includes('zoho') ||
pageContent?.includes('CRM') || pageContent?.includes('Test Connection');
console.log(`${urlPath} contains Zoho content: ${hasZohoContent}`);
if (hasZohoContent) {
await page.screenshot({ path: `test-results/zoho/zoho-settings-${urlPath.replace(/[\/\?=]/g, '-')}.png` });
// Look for Test Connection button
const testButton = page.locator('button:has-text("Test Connection"), input[value*="Test Connection"]');
const testButtonCount = await testButton.count();
if (testButtonCount > 0) {
console.log('Found Test Connection button - clicking it');
await testButton.click();
await page.waitForTimeout(3000); // Wait for AJAX response
await page.screenshot({ path: 'test-results/zoho/test-connection-result.png' });
// Check for error messages or success messages
const pageContentAfter = await page.textContent('body');
const hasErrorInfo = pageContentAfter?.includes('no_token') ||
pageContentAfter?.includes('Connection failed') ||
pageContentAfter?.includes('Error Code') ||
pageContentAfter?.includes('Debug Information');
console.log(`Enhanced error reporting visible: ${hasErrorInfo}`);
if (hasErrorInfo) {
console.log('✓ Enhanced error reporting is working!');
console.log('Error details found on page');
}
}
break;
}
} catch (error) {
console.log(`Error accessing ${urlPath}: ${error}`);
}
}
console.log('Zoho admin interface test completed');
});
});