199 lines
No EOL
8 KiB
TypeScript
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 });
|
|
}
|
|
});
|
|
}); |