fix(install-e2e): handle startup zoom restore and legacy Unicode output

This commit is contained in:
ethernet
2026-09-06 00:36:02 -04:00
parent cfe8d15259
commit 7cfe82a2a7
3 changed files with 41 additions and 2 deletions

View File

@@ -6,6 +6,35 @@ const { prepareWindowForInput } = createRequire(import.meta.url)(
'../../../tests/install/e2e-assets/window-input.cjs',
)
test('reapplies zoom when startup overwrites the first request', async () => {
let requests = 0
let factor = 0.9
const previous = (globalThis as any).hermesDesktop
;(globalThis as any).hermesDesktop = { zoom: {
setPercent: () => { requests++;
if (requests > 1) {factor = 1} },
get: async () => ({ percent: factor * 100 }),
} }
const window = { evaluate: async (fn: any) => fn({ webContents: { getZoomFactor: () => factor } }) }
const page = {
evaluate: async (fn: any) => fn(),
waitForTimeout: async () => {
if (requests === 1) {throw new Error('startup overwrote zoom and the driver never reapplied it')}
},
}
try {
await prepareWindowForInput({ browserWindow: async () => window }, page)
expect(requests).toBeGreaterThan(1)
} finally {
;(globalThis as any).hermesDesktop = previous
}
})
test('awaits the zoom response instead of accepting a truthy Promise', async () => {
let reads = 0
let factor = 0.9

View File

@@ -15,7 +15,12 @@ async function prepareWindowForInput(app, page) {
// truthy even when it resolves false. Await each IPC read on the driver.
const deadline = Date.now() + 15_000
for (;;) {
const state = await page.evaluate(() => globalThis.hermesDesktop.zoom.get())
const state = await page.evaluate(() => {
// Cold-start restoration can overwrite the first preference write.
// Reapply through its owner until a subsequent read observes it.
globalThis.hermesDesktop.zoom.setPercent(100)
return globalThis.hermesDesktop.zoom.get()
})
if (state.percent === 100) break
if (Date.now() >= deadline) throw new Error('timed out waiting for 100% app window zoom')
await page.waitForTimeout(100)

View File

@@ -114,6 +114,11 @@ param(
$ErrorActionPreference = "Stop"
$ProgressPreference = "SilentlyContinue"
# Match an interactive Unicode console when Python output is piped into the
# UTF-8 transcript. Old releases otherwise select cp1252 and crash on banners.
$env:PYTHONIOENCODING = "utf-8"
[Console]::OutputEncoding = New-Object System.Text.UTF8Encoding $false
$OutputEncoding = [Console]::OutputEncoding
if (-not $RepoRoot) {
$RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..\..")).Path
@@ -380,7 +385,7 @@ function Invoke-HermesUpdate {
$ErrorActionPreference = $prevEap
}
Write-LogGroup "hermes update transcript" $log
Assert-True ($updateExit -eq 0) "hermes update exited 0"
Assert-True ($updateExit -eq 0) "hermes update exited $updateExit (expected 0)"
}
function Invoke-HermesDesktopAppUpdate([string]$TargetSha) {