Add Electron E2E harness launcher
This commit is contained in:
1 parent
fa8c52b239
commit
00ee563311
4 files changed
+47
-6
No files matched your search
+18
-3
@@ -10,6 +10,7 @@ const { validateRenderRequest } = require('../shared/renderValidation.cjs') as {
|
||||
}
|
||||
|
||||
const isDev = !app.isPackaged
|
||||
const isE2E = process.env.RUWIO_E2E === '1'
|
||||
const devServerUrl = process.env.VITE_DEV_SERVER_URL ?? 'http://localhost:5200'
|
||||
const devServerOrigin = new URL(devServerUrl).origin
|
||||
const appIconPath = isDev
|
||||
@@ -43,6 +44,12 @@ function sendAppCommand(command: string): void {
|
||||
mainWindow.webContents.send('ruwio:menu-command', command)
|
||||
}
|
||||
|
||||
declare global {
|
||||
// Playwright's Electron runner can evaluate in the main process and call this
|
||||
// env-gated hook without expanding the preload bridge surface.
|
||||
var __ruwioTestMenuCommand: ((command: string) => void) | undefined
|
||||
}
|
||||
|
||||
function sendRenderProgress(
|
||||
target: Electron.WebContents,
|
||||
event: { jobId: string; progress: number; done: boolean; error?: string },
|
||||
@@ -101,9 +108,14 @@ async function runRenderMp4(event: IpcMainInvokeEvent, payload: RenderMp4Payload
|
||||
defaultPath: sanitizeMp4Name(payload?.suggestedName),
|
||||
filters: [{ name: 'MP4 Video', extensions: ['mp4'] }],
|
||||
}
|
||||
const saveResult = window
|
||||
? await dialog.showSaveDialog(window, saveOptions)
|
||||
: await dialog.showSaveDialog(saveOptions)
|
||||
const e2eSavePath = isE2E
|
||||
? process.env.RUWIO_E2E_SAVE_PATH || path.join(app.getPath('temp'), saveOptions.defaultPath)
|
||||
: ''
|
||||
const saveResult = e2eSavePath
|
||||
? { canceled: false, filePath: e2eSavePath }
|
||||
: window
|
||||
? await dialog.showSaveDialog(window, saveOptions)
|
||||
: await dialog.showSaveDialog(saveOptions)
|
||||
if (saveResult.canceled || !saveResult.filePath) return null
|
||||
|
||||
const jobId = randomUUID()
|
||||
@@ -379,6 +391,9 @@ app.setName('RUWIO')
|
||||
app.whenReady().then(() => {
|
||||
ipcMain.handle('ruwio:render-mp4', handleRenderMp4)
|
||||
ipcMain.handle('ruwio:render-cancel', handleRenderCancel)
|
||||
if (isE2E) {
|
||||
globalThis.__ruwioTestMenuCommand = (command: string) => sendAppCommand(command)
|
||||
}
|
||||
createMenu()
|
||||
createMainWindow()
|
||||
|
||||
|
||||
Reference in new issue
Block a user