upskill-event-manager/wordpress-dev/tests/e2e/zoho-domain-update-verification.test.ts

199 lines
No EOL
8 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { STAGING_URL, PATHS } from './config/staging-config';
/**
* Test to verify the Zoho CRM integration with the new domain
* This test verifies:
* 1. The login functionality works
* 2. The dashboard loads correctly
* 3. The Zoho CRM integration shows the correct domain in OAuth Redirect URI
*/
test.describe('Zoho Domain Update Verification', () => {
test('Login and verify dashboard', async ({ page }) => {
console.log('Step 1: Logging in as test_trainer');
// Navigate to WordPress login page
await page.goto(`${STAGING_URL}/wp-login.php`);
// Verify the login page loaded
const loginTitle = await page.title();
console.log(`Login page title: ${loginTitle}`);
// Fill in login credentials
await page.fill('#user_login', 'test_trainer');
await page.fill('#user_pass', 'Test123!');
// Take screenshot before login
await page.screenshot({ path: 'test-results/zoho-verification/before-login.png' });
// Click login button
await page.click('#wp-submit');
// Wait for navigation
await page.waitForLoadState('networkidle');
// Take screenshot after login
await page.screenshot({ path: 'test-results/zoho-verification/after-login.png' });
// URL might not change on failed login, so check if we're still on the login page
const currentUrl = page.url();
console.log(`Current URL after login: ${currentUrl}`);
if (currentUrl.includes('wp-login.php')) {
// Check if there's an error message
const errorMessage = await page.textContent('.login-error, .login_error');
if (errorMessage) {
console.log(`Login error: ${errorMessage}`);
}
console.log('Login might have failed, trying to navigate to admin directly');
}
// Navigate to the WordPress admin directly
console.log('Step 2: Navigating to WordPress admin');
await page.goto(`${STAGING_URL}/wp-admin/`);
await page.waitForLoadState('networkidle');
// Verify admin access
const adminTitle = await page.title();
console.log(`Admin page title: ${adminTitle}`);
console.log(`Admin page should contain "Dashboard": ${adminTitle.includes('Dashboard')}`);
// Check if admin panel loaded
const adminPanel = page.locator('#wpcontent');
const adminPanelExists = await adminPanel.isVisible();
console.log(`Admin panel is visible: ${adminPanelExists}`);
// Take screenshot of admin panel
await page.screenshot({ path: 'test-results/zoho-verification/admin-panel.png' });
// Try to find any HVAC Community Events menu (may be in different formats)
console.log('Looking for HVAC Community Events menu...');
const menuLocators = [
'li#toplevel_page_hvac-community-events',
'li.menu-top:has-text("HVAC Community Events")',
'#adminmenu li:has-text("HVAC")',
'#adminmenu li:has-text("Community Events")'
];
let hvacMenu = null;
let menuExists = false;
for (const locator of menuLocators) {
const menu = page.locator(locator);
if (await menu.count() > 0 && await menu.isVisible()) {
hvacMenu = menu;
menuExists = true;
console.log(`Found HVAC menu using locator: ${locator}`);
break;
}
}
console.log(`HVAC Community Events menu exists: ${menuExists}`);
// If menu exists, try to access Zoho CRM section
if (menuExists && hvacMenu) {
await hvacMenu.click();
await page.waitForTimeout(1000); // Small delay for submenu to appear
// Take screenshot of admin menu
await page.screenshot({ path: 'test-results/zoho-verification/admin-menu.png' });
// Look for the Zoho CRM Sync submenu item using multiple potential selectors
const zohoCrmMenuItems = [
'a:has-text("Zoho CRM Sync")',
'li:has-text("Zoho CRM")',
'a[href*="zoho"]'
];
let zohoCrmMenuItem = null;
for (const selector of zohoCrmMenuItems) {
const menuItem = page.locator(selector);
if (await menuItem.count() > 0 && await menuItem.isVisible()) {
zohoCrmMenuItem = menuItem;
console.log(`Found Zoho CRM menu item using selector: ${selector}`);
break;
}
}
if (zohoCrmMenuItem) {
console.log('Step 3: Navigating to Zoho CRM Sync page');
await zohoCrmMenuItem.click();
await page.waitForLoadState('networkidle');
// Take screenshot of Zoho CRM page
await page.screenshot({ path: 'test-results/zoho-verification/zoho-crm-page.png' });
// Verify the page title
const zohoCrmTitle = await page.title();
console.log(`Zoho CRM page title: ${zohoCrmTitle}`);
expect(zohoCrmTitle).toContain('Zoho CRM Sync');
// Verify staging mode banner is present
const stagingBanner = page.locator('.notice-info:has-text("STAGING MODE ACTIVE")');
const bannerVisible = await stagingBanner.isVisible();
console.log(`Staging mode banner visible: ${bannerVisible}`);
expect(bannerVisible).toBeTruthy();
// Check for the OAuth Redirect URI in the banner
const redirectUriText = await page.textContent('.notice-info');
console.log(`Banner text: ${redirectUriText}`);
// Verify the banner contains the new domain
expect(redirectUriText).toContain('upskill-staging.measurequick.com');
expect(redirectUriText).not.toContain('wordpress-974670-5399585.cloudwaysapps.com');
// Test the connection button to verify enhanced error reporting
console.log('Step 4: Testing Zoho CRM connection');
const testButton = page.locator('button#test-connection');
if (await testButton.isVisible()) {
await testButton.click();
await page.waitForTimeout(3000); // Wait for the response
// Take screenshot of connection test result
await page.screenshot({ path: 'test-results/zoho-verification/connection-test-result.png' });
// Check for error message with enhanced details
const errorMessage = page.locator('#connection-status');
const errorVisible = await errorMessage.isVisible();
console.log(`Error message visible: ${errorVisible}`);
if (errorVisible) {
const errorText = await errorMessage.textContent();
console.log(`Error message: ${errorText}`);
// Verify the error message contains detailed information
expect(errorText).toContain('Connection failed');
// Look for debug information section (enhanced reporting)
const debugToggle = page.locator('button.toggle-debug');
const debugToggleVisible = await debugToggle.isVisible();
if (debugToggleVisible) {
console.log('Debug information toggle found, clicking to expand...');
await debugToggle.click();
await page.waitForTimeout(1000);
// Take screenshot with expanded debug info
await page.screenshot({ path: 'test-results/zoho-verification/error-debug-expanded.png' });
// Verify debug information is shown
const debugInfo = page.locator('.hvac-zoho-debug');
const debugVisible = await debugInfo.isVisible();
expect(debugVisible).toBeTruthy();
// Look for the new domain in debug information
const debugText = await debugInfo.textContent();
expect(debugText).toContain('upskill-staging.measurequick.com');
}
}
}
} else {
console.log('Zoho CRM Sync menu item not found');
}
} else {
console.log('HVAC Community Events menu not found');
// Take a screenshot of the whole admin panel to debug
await page.screenshot({ path: 'test-results/zoho-verification/admin-panel-no-menu.png', fullPage: true });
}
});
});