Files
Genarrative/src/services/appTitle.test.ts
T
kdletters d64e576e3f 接入桌面壳窗口标题同步路径
H5 主站按当前平台阶段同步 document.title

native_app 中通过 app.setTitle 请求 Tauri 窗口标题同步

补充标题同步测试和宿主壳能力文档
2026-06-18 00:07:21 +08:00

55 lines
1.4 KiB
TypeScript

/* @vitest-environment jsdom */
import { afterEach, describe, expect, test, vi } from 'vitest';
import {
resolveAppTitleForSelectionStage,
syncAppTitle,
} from './appTitle';
const hostBridgeMock = vi.hoisted(() => ({
setHostAppTitle: vi.fn(),
}));
vi.mock('./host-bridge/hostBridge', () => ({
setHostAppTitle: hostBridgeMock.setHostAppTitle,
}));
afterEach(() => {
document.title = '';
hostBridgeMock.setHostAppTitle.mockReset();
});
describe('appTitle', () => {
test('按平台阶段生成可读页面标题', () => {
expect(resolveAppTitleForSelectionStage('platform')).toBe('陶泥儿');
expect(resolveAppTitleForSelectionStage('work-detail')).toBe(
'作品详情 - 陶泥儿',
);
expect(resolveAppTitleForSelectionStage('match3d-runtime')).toBe(
'抓大鹅 - 陶泥儿',
);
expect(resolveAppTitleForSelectionStage('puzzle-generating')).toBe(
'拼图生成中 - 陶泥儿',
);
});
test('同步浏览器标题并请求宿主窗口标题', () => {
syncAppTitle(' 拼图 - 陶泥儿 ');
expect(document.title).toBe('拼图 - 陶泥儿');
expect(hostBridgeMock.setHostAppTitle).toHaveBeenCalledWith({
title: '拼图 - 陶泥儿',
});
});
test('空标题回退到品牌名', () => {
syncAppTitle(' ');
expect(document.title).toBe('陶泥儿');
expect(hostBridgeMock.setHostAppTitle).toHaveBeenCalledWith({
title: '陶泥儿',
});
});
});