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