Files
Genarrative/miniprogram/shell/webView.test.js
T
kdletters bc3b464349 统一三端桥接层职责命名
微信小程序 host-bridge 与 shell 文件改为职责命名

移动壳 host-bridge 与 shell 文件改为职责命名

更新原生壳结构门禁、微信 smoke 和宿主壳文档
2026-06-18 17:48:03 +08:00

110 lines
3.0 KiB
JavaScript

import path from 'node:path';
import { beforeEach, describe, expect, test, vi } from 'vitest';
import { loadCommonJsModule } from '../test-utils/loadCommonJsModule.js';
const webViewBridgePath = path.resolve(
process.cwd(),
'miniprogram/host-bridge/webView.js',
);
const webViewShellPath = path.resolve(
process.cwd(),
'miniprogram/shell/webView.js',
);
const config = {
API_BASE_URL: 'https://www.genarrative.world',
DEV_API_BASE_URL: 'https://dev.genarrative.world',
DEV_WEB_VIEW_ENTRY_URL: 'https://dev.genarrative.world',
MINI_PROGRAM_APP_ID: 'wx-test-app',
MINI_PROGRAM_ENV: 'release',
WEB_VIEW_ENTRY_URL: 'https://www.genarrative.world',
WEB_VIEW_SOURCE_QUERY: {
clientType: 'mini_program',
clientRuntime: 'wechat_mini_program',
},
};
let createWechatWebViewPage;
function createPage() {
const page = createWechatWebViewPage();
return {
...page,
data: { ...page.data },
setData(patch) {
Object.assign(this.data, patch);
},
};
}
describe('wechat web-view shell page', () => {
beforeEach(() => {
globalThis.wx = {
getAccountInfoSync: vi.fn(() => ({
miniProgram: { envVersion: 'release' },
})),
getStorageSync: vi.fn(() => ''),
getSystemInfoSync: vi.fn(() => ({ platform: 'ios' })),
login: vi.fn(),
navigateBack: vi.fn(),
removeStorageSync: vi.fn(),
request: vi.fn(),
setStorageSync: vi.fn(),
showShareMenu: vi.fn(),
};
const webViewBridge = loadCommonJsModule(webViewBridgePath);
const webViewShell = loadCommonJsModule(webViewShellPath, {
'../config': config,
'../host-bridge/webView': webViewBridge,
});
createWechatWebViewPage = webViewShell.createWechatWebViewPage;
});
test('opens anonymous H5 web-view without eager login', async () => {
const page = createPage();
await page.onLoad({});
expect(globalThis.wx.login).not.toHaveBeenCalled();
expect(globalThis.wx.request).not.toHaveBeenCalled();
expect(page.data.loading).toBe(false);
expect(page.data.webViewUrl).toBe(
'https://www.genarrative.world?clientType=mini_program&clientRuntime=wechat_mini_program',
);
expect(globalThis.wx.showShareMenu).toHaveBeenCalledWith({
withShareTicket: true,
menus: ['shareAppMessage', 'shareTimeline'],
});
});
test('stores latest H5 share target for native share menu', () => {
const page = createPage();
page.handleWebViewMessage({
detail: {
data: [
{
data: {
type: 'genarrative:share-target',
payload: {
targetPath: '/works/detail',
work: 'BB-12345678',
title: '汪汪声浪',
},
},
},
],
},
});
expect(page.onShareAppMessage()).toEqual({
title: '陶泥儿',
path: '/pages/web-view/index?targetPath=%2Fworks%2Fdetail&work=BB-12345678',
});
expect(page.onShareTimeline()).toEqual({
title: '陶泥儿',
query: 'targetPath=%2Fworks%2Fdetail&work=BB-12345678',
});
});
});