Prepare IDE beta 6 with Turkish native dialogs and map errors
This commit is contained in:
@@ -9,6 +9,7 @@ type DesktopTestWindow = Window & {
|
||||
hermesDesktop: {
|
||||
api<T = unknown>(request: { path: string }): Promise<T>
|
||||
setUiLanguage(locale: string): void
|
||||
selectSavePath(options?: { title?: string; defaultPath?: string }): Promise<string | null>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,3 +96,41 @@ test('native language bridge updates the Mac menu and preserves menu-free Window
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
test('native save dialog follows language while preserving caller title and path', async () => {
|
||||
const { app, page } = fixture!
|
||||
await app.evaluate(({ dialog }) => {
|
||||
const state = globalThis as typeof globalThis & { originalSave?: unknown; saveOptions?: unknown }
|
||||
state.originalSave = dialog.showSaveDialog
|
||||
dialog.showSaveDialog = async (_parent: unknown, options: unknown) => {
|
||||
state.saveOptions = options
|
||||
return { canceled: true, filePath: '' }
|
||||
}
|
||||
})
|
||||
try {
|
||||
for (const locale of ['tr', 'en']) {
|
||||
const result = await page.evaluate(async language => {
|
||||
const bridge = (window as unknown as DesktopTestWindow).hermesDesktop
|
||||
bridge.setUiLanguage(language)
|
||||
return bridge.selectSavePath({ defaultPath: 'My custom archive.zip' })
|
||||
}, locale)
|
||||
expect(result).toBeNull()
|
||||
const options = await app.evaluate(() => (globalThis as typeof globalThis & { saveOptions?: unknown }).saveOptions)
|
||||
expect(options).toMatchObject({ title: locale === 'tr' ? 'Kaydet' : 'Save', defaultPath: 'My custom archive.zip' })
|
||||
}
|
||||
await page.evaluate(async () => {
|
||||
const bridge = (window as unknown as DesktopTestWindow).hermesDesktop
|
||||
bridge.setUiLanguage('tr')
|
||||
await bridge.selectSavePath({ title: 'My custom title' })
|
||||
})
|
||||
expect(await app.evaluate(() => (globalThis as typeof globalThis & { saveOptions?: unknown }).saveOptions))
|
||||
.toMatchObject({ title: 'My custom title' })
|
||||
} finally {
|
||||
await app.evaluate(({ dialog }) => {
|
||||
const state = globalThis as typeof globalThis & { originalSave?: typeof dialog.showSaveDialog; saveOptions?: unknown }
|
||||
dialog.showSaveDialog = state.originalSave!
|
||||
delete state.originalSave
|
||||
delete state.saveOptions
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user