Initial clean project import
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
const { _electron: electron } = require('playwright');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const projectRoot = path.resolve(__dirname, '..', '..');
|
||||
const electronSourceExe = path.join(projectRoot, 'node_modules', 'electron', 'dist', 'electron.exe');
|
||||
const electronExe = path.join(projectRoot, 'node_modules', 'electron', 'dist', 'OEMBatchBuilderTool.exe');
|
||||
const mainScript = path.join(projectRoot, 'tools', 'oem-batch-builder', 'main.cjs');
|
||||
const assetsDir = path.join(projectRoot, 'oem-assets');
|
||||
const smokeUserDataDir = path.join(projectRoot, 'tools', 'oem-batch-builder', 'runs', 'ui-smoke-buildwin-user-data');
|
||||
|
||||
if (!fs.existsSync(electronExe) || fs.statSync(electronExe).mtimeMs < fs.statSync(electronSourceExe).mtimeMs) {
|
||||
fs.copyFileSync(electronSourceExe, electronExe);
|
||||
}
|
||||
|
||||
function asset(name) {
|
||||
const filePath = path.join(assetsDir, name);
|
||||
if (!fs.existsSync(filePath)) throw new Error(`Missing test asset: ${filePath}`);
|
||||
return filePath;
|
||||
}
|
||||
|
||||
(async () => {
|
||||
const app = await electron.launch({
|
||||
executablePath: electronExe,
|
||||
args: [`--user-data-dir=${smokeUserDataDir}`, mainScript],
|
||||
cwd: projectRoot,
|
||||
env: {
|
||||
...process.env,
|
||||
ELECTRON_ENABLE_LOGGING: '1',
|
||||
},
|
||||
});
|
||||
|
||||
const page = await app.firstWindow();
|
||||
await page.waitForSelector('#runBtn', { timeout: 15000 });
|
||||
|
||||
const job = {
|
||||
id: `ui-buildwin-${Date.now()}`,
|
||||
enabled: true,
|
||||
brandName: 'UI BuildWin Test',
|
||||
brandSlogan: 'Smoke',
|
||||
brandShortName: 'UIBuildWinTest',
|
||||
brandDisplayName: 'UI BuildWin Test',
|
||||
apiBaseUrl: 'http://152.136.232.83:3002/api',
|
||||
version: '4.9.9',
|
||||
buildCommand: 'npm run build:win',
|
||||
assets: {
|
||||
qrcodePath: asset('qrcode.png'),
|
||||
logoPath: asset('logo.png'),
|
||||
iconPath: asset('icon.png'),
|
||||
loginBgPath: asset('login-bg.png'),
|
||||
},
|
||||
status: 'idle',
|
||||
message: '',
|
||||
};
|
||||
|
||||
await page.evaluate((payload) => {
|
||||
localStorage.setItem('oem-batch-builder-jobs-v3', JSON.stringify([payload]));
|
||||
location.reload();
|
||||
}, job);
|
||||
|
||||
await page.waitForSelector('#runBtn', { timeout: 15000 });
|
||||
await page.click('#runBtn');
|
||||
await page.waitForTimeout(60000);
|
||||
|
||||
const processAlive = !app.process().killed;
|
||||
const windows = app.windows().filter(win => !win.isClosed());
|
||||
const statusText = await page.locator('.status').first().textContent().catch(() => '');
|
||||
const logText = await page.locator('#logBox').textContent().catch(() => '');
|
||||
|
||||
console.log(JSON.stringify({
|
||||
processAlive,
|
||||
windowCount: windows.length,
|
||||
statusText,
|
||||
logTail: String(logText || '').slice(-1200),
|
||||
}, null, 2));
|
||||
|
||||
if (!processAlive || windows.length === 0) {
|
||||
throw new Error('OEM build:win UI exited or window closed');
|
||||
}
|
||||
|
||||
await app.close();
|
||||
})();
|
||||
Reference in New Issue
Block a user