Download apps/desktop/e2e/window-input.unit.test.ts from SaylorTwift/hermes-agent: direct link, hf CLI and curl.
- Browser
- Download file 2.76 kB
-
https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/apps/desktop/e2e/window-input.unit.test.ts
- Command line
-
hf download hf://SaylorTwift/hermes-agent/apps/desktop/e2e/window-input.unit.test.ts
-
curl -L -o window-input.unit.test.ts https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/apps/desktop/e2e/window-input.unit.test.ts
2.76 kB
| import { createRequire } from 'node:module' | |
| import { expect, test } from 'vitest' | |
| const { prepareWindowForInput } = createRequire(import.meta.url)( | |
| '../../../tests/install/e2e-assets/window-input.cjs', | |
| ) | |
| test('does not finish when IPC reports 100% before the window factor settles', async () => { | |
| let observations = 0 | |
| const previous = (globalThis as any).hermesDesktop | |
| ;(globalThis as any).hermesDesktop = { zoom: { | |
| setPercent: () => undefined, | |
| get: async () => ({ percent: 100 }), | |
| } } | |
| const appWindow = { evaluate: async (fn: any) => fn({ webContents: { | |
| getZoomFactor: () => ++observations === 1 ? 0.9 : 1, | |
| } }) } | |
| const page = { | |
| evaluate: async (fn: any) => fn(), | |
| waitForTimeout: async () => undefined, | |
| } | |
| try { | |
| await prepareWindowForInput({ browserWindow: async () => appWindow }, page) | |
| expect(observations).toBeGreaterThan(1) | |
| } finally { | |
| ;(globalThis as any).hermesDesktop = previous | |
| } | |
| }) | |
| 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 | |
| const zoom = { | |
| setPercent: () => undefined, | |
| get: async () => { | |
| reads++ | |
| if (reads > 1) {factor = 1} | |
| return { percent: factor * 100 } | |
| }, | |
| } | |
| const previous = (globalThis as any).hermesDesktop | |
| ;(globalThis as any).hermesDesktop = { zoom } | |
| const window = { evaluate: async (fn: any) => fn({ webContents: { getZoomFactor: () => factor } }) } | |
| const page = { | |
| evaluate: async (fn: any) => fn(), | |
| // Playwright 1.58 accepts the predicate's Promise before it resolves. | |
| waitForFunction: async (fn: any) => { await fn() }, | |
| waitForTimeout: async () => undefined, | |
| } | |
| try { | |
| await prepareWindowForInput({ browserWindow: async () => window }, page) | |
| expect(reads).toBeGreaterThan(1) | |
| expect(factor).toBe(1) | |
| } finally { | |
| ;(globalThis as any).hermesDesktop = previous | |
| } | |
| }) | |