148 lines
No EOL
5.7 KiB
TypeScript
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');
|
|
});
|
|
}); |