69 lines
No EOL
2.4 KiB
JavaScript
69 lines
No EOL
2.4 KiB
JavaScript
const { _electron: electron } = require('playwright');
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
|
|
async function runE2E() {
|
|
console.log('=== STARTING REAL ELECTRON DESKTOP APP E2E TEST ===');
|
|
|
|
const electronPath = require('electron');
|
|
console.log('Electron Executable:', electronPath);
|
|
console.log('App Directory:', path.resolve('apps/desktop'));
|
|
|
|
const outDir = 'C:/Users/encep/.gemini/antigravity-cli/brain/3ab7ae82-5634-41d5-93a7-3c12c22503e2/screenshots/live_production_verified';
|
|
if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });
|
|
|
|
const app = await electron.launch({
|
|
executablePath: electronPath,
|
|
args: ['.'],
|
|
cwd: path.resolve('apps/desktop'),
|
|
env: Object.assign({}, process.env, {
|
|
NODE_ENV: 'production',
|
|
ELECTRON_ENABLE_LOGGING: '1'
|
|
})
|
|
});
|
|
|
|
const pid = app.process().pid;
|
|
console.log('Electron Process Launched! PID:', String(pid));
|
|
|
|
console.log('Waiting for Main BrowserWindow...');
|
|
const window = await app.firstWindow({timeout: 30000});
|
|
const winTitle = await window.title();
|
|
console.log('Main Window Opened! Title:', winTitle);
|
|
|
|
await window.waitForLoadState('domcontentloaded');
|
|
await window.waitForTimeout(3000);
|
|
|
|
const shot1 = path.join(outDir, '08_electron_main_dashboard.png');
|
|
await window.screenshot({path: shot1});
|
|
console.log('Saved Main Dashboard Screenshot:', shot1);
|
|
|
|
const pageState = await window.evaluate(() => {
|
|
return {
|
|
title: document.title,
|
|
url: window.location.href,
|
|
bodyTextSnippet: document.body.innerText.substring(0, 300),
|
|
buttons: Array.from(document.querySelectorAll('button, a')).map(b => b.innerText.trim()).filter(Boolean).slice(0, 20),
|
|
hasErrors: !!document.querySelector('.error-banner, .crash-banner')
|
|
};
|
|
});
|
|
|
|
console.log('Page State Evaluated:', JSON.stringify(pageState, null, 2));
|
|
|
|
await window.waitForTimeout(2000);
|
|
const shot2 = path.join(outDir, '09_electron_dashboard_interactive.png');
|
|
await window.screenshot({path: shot2});
|
|
console.log('Saved Interactive Screenshot:', shot2);
|
|
|
|
console.log('Gracefully closing Electron application...');
|
|
await app.close();
|
|
console.log('=== ELECTRON DESKTOP APP E2E TEST COMPLETED SUCCESSFULLY ===');
|
|
return {success: true, pageState};
|
|
}
|
|
|
|
runE2E().then(res => {
|
|
console.log('FINAL E2E RESULT SSPOT_TEST_FINISHED');
|
|
process.exit(0);
|
|
}).catch(err => {
|
|
console.error('E2E TEST FAILED:g', err);
|
|
process.exit(1);
|
|
}); |