upskill-event-manager/wordpress-dev/tests/e2e/test-installer-deployment.test.ts

135 lines
No EOL
5.7 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { STAGING_URL } from './config/staging-config';
/**
* Test to deploy the HVAC plugin via web installer
*/
test.describe('Plugin Installation Test', () => {
test('Deploy HVAC plugin via web installer', async ({ page }) => {
console.log('Starting HVAC plugin installation via web installer');
// Step 1: First, let's try to upload the installer via a test endpoint
console.log('Step 1: Attempting to run the installer');
// Try to access the installer directly (this assumes we can place it on the server)
const installerUrl = `${STAGING_URL}/plugin-backups/complete-hvac-installer.php?install_key=hvac-staging-deploy-2025`;
try {
console.log(`Accessing installer at: ${installerUrl}`);
await page.goto(installerUrl, { timeout: 120000 }); // 2 minute timeout
await page.waitForLoadState('networkidle');
// Take screenshot of the installation result
await page.screenshot({ path: 'test-results/installer/installation-result.png' });
// Get the installation output
const pageContent = await page.textContent('body');
console.log('Installation output preview:');
console.log(pageContent?.substring(0, 1000) + '...');
// Check for success indicators
const hasSuccess = pageContent?.includes('Installation Complete!');
const hasError = pageContent?.includes('ERROR:') || pageContent?.includes('Failed');
console.log(`Installation successful: ${hasSuccess}`);
console.log(`Installation errors detected: ${hasError}`);
// If installation worked, verify we can now access admin
if (hasSuccess) {
console.log('Step 2: Testing admin access with new credentials');
await page.goto(`${STAGING_URL}/wp-admin/`);
await page.waitForLoadState('networkidle');
// Try to login with test_admin
const hasLoginForm = await page.locator('input[name="log"]').count() > 0;
if (hasLoginForm) {
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');
const currentUrl = page.url();
const loginSuccess = !currentUrl.includes('wp-login.php');
console.log(`Admin login successful: ${loginSuccess}`);
if (loginSuccess) {
console.log('Step 3: Checking for HVAC plugin in admin');
// Check if we can see HVAC menu items
const hvacMenuItems = await page.locator('text="HVAC"').count();
const zohoMenuItems = await page.locator('text="Zoho"').count();
console.log(`HVAC menu items found: ${hvacMenuItems}`);
console.log(`Zoho menu items found: ${zohoMenuItems}`);
// Take screenshot of wp-admin dashboard
await page.screenshot({ path: 'test-results/installer/wp-admin-dashboard.png' });
// Try to access the Zoho settings page
if (hvacMenuItems > 0 || zohoMenuItems > 0) {
console.log('Step 4: Testing Zoho CRM settings access');
// Look for Zoho CRM settings in the menu
const zohoSettingsLink = page.locator('a:has-text("Zoho"), a[href*="zoho"]').first();
const hasZohoLink = await zohoSettingsLink.count() > 0;
if (hasZohoLink) {
await zohoSettingsLink.click();
await page.waitForLoadState('networkidle');
await page.screenshot({ path: 'test-results/installer/zoho-settings-page.png' });
const zohoPageContent = await page.textContent('body');
const hasConnectionTest = zohoPageContent?.includes('Test Connection');
console.log(`Zoho settings page accessible: ${hasConnectionTest}`);
}
}
}
}
}
} catch (error) {
console.log(`Installer error: ${error}`);
// Let's try an alternative approach - check if we can upload files
console.log('Step Alternative: Checking upload capabilities');
// Try to check if there's a file upload capability
await page.goto(`${STAGING_URL}/wp-admin/plugin-install.php`);
await page.waitForLoadState('networkidle');
const currentUrl = page.url();
if (!currentUrl.includes('wp-login.php')) {
console.log('Can access plugin install page without login - this is unexpected');
} else {
console.log('Redirected to login as expected');
}
}
console.log('Plugin installation test completed');
});
test('Verify basic site functionality after installation', async ({ page }) => {
console.log('Step 1: Verifying basic site functionality');
// Check if the site still loads
await page.goto(STAGING_URL);
await page.waitForLoadState('networkidle');
const title = await page.title();
console.log(`Site title: ${title}`);
// Check for any PHP errors on homepage
const pageContent = await page.textContent('body');
const hasPhpError = pageContent?.includes('Fatal error') || pageContent?.includes('Parse error');
console.log(`PHP errors detected: ${hasPhpError}`);
// Check if WordPress is still functioning
const hasWpContent = pageContent?.includes('wp-') || pageContent?.includes('WordPress');
console.log(`WordPress content detected: ${hasWpContent}`);
await page.screenshot({ path: 'test-results/installer/post-install-homepage.png' });
console.log('Basic functionality verification completed');
});
});