收口微信页面事件诊断日志
微信 web-view 页面事件日志改为固定阶段标签 原生壳门禁拒绝输出 WebView 原生事件体 同步宿主壳方案和共享决策记录
This commit is contained in:
@@ -181,6 +181,14 @@ function logWebViewAuthFailure(label, _detail) {
|
||||
console.error(`[web-view] ${label}`);
|
||||
}
|
||||
|
||||
function logWebViewPageEvent(label, _detail) {
|
||||
console.info(`[web-view] ${label}`);
|
||||
}
|
||||
|
||||
function logWebViewPageFailure(label, _detail) {
|
||||
console.error(`[web-view] ${label}`);
|
||||
}
|
||||
|
||||
function resolveMiniProgramRuntimeConfig() {
|
||||
const miniProgramEnv =
|
||||
normalizeMiniProgramEnv(readMiniProgramEnvVersion()) ||
|
||||
@@ -678,11 +686,11 @@ function createWechatWebViewPage() {
|
||||
},
|
||||
|
||||
handleWebViewLoad(event) {
|
||||
console.info('[web-view] loaded', event.detail);
|
||||
logWebViewPageEvent('loaded', event.detail);
|
||||
},
|
||||
|
||||
handleWebViewError(event) {
|
||||
console.error('[web-view] load failed', event.detail);
|
||||
logWebViewPageFailure('load failed', event.detail);
|
||||
},
|
||||
|
||||
handleWebViewMessage(event) {
|
||||
@@ -690,8 +698,7 @@ function createWechatWebViewPage() {
|
||||
if (shareTarget) {
|
||||
this._currentShareTarget = shareTarget;
|
||||
}
|
||||
// 中文注释:支付和订阅消息都由独立 native 页面承接,web-view 消息只保留调试输出。
|
||||
console.info('[web-view] message', event.detail);
|
||||
logWebViewPageEvent('message', event.detail);
|
||||
},
|
||||
|
||||
onShareAppMessage() {
|
||||
|
||||
@@ -40,6 +40,9 @@ function createPage() {
|
||||
|
||||
describe('wechat web-view shell page', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||
vi.spyOn(console, 'info').mockImplementation(() => {});
|
||||
globalThis.wx = {
|
||||
getAccountInfoSync: vi.fn(() => ({
|
||||
miniProgram: { envVersion: 'release' },
|
||||
@@ -80,21 +83,23 @@ describe('wechat web-view shell page', () => {
|
||||
|
||||
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: '汪汪声浪',
|
||||
},
|
||||
const webViewDetail = {
|
||||
data: [
|
||||
{
|
||||
data: {
|
||||
type: 'genarrative:share-target',
|
||||
payload: {
|
||||
targetPath: '/works/detail',
|
||||
work: 'BB-12345678',
|
||||
title: '汪汪声浪',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
page.handleWebViewMessage({
|
||||
detail: webViewDetail,
|
||||
});
|
||||
|
||||
expect(page.onShareAppMessage()).toEqual({
|
||||
@@ -105,5 +110,21 @@ describe('wechat web-view shell page', () => {
|
||||
title: '陶泥儿',
|
||||
query: 'targetPath=%2Fworks%2Fdetail&work=BB-12345678',
|
||||
});
|
||||
expect(console.info).toHaveBeenCalledWith('[web-view] message');
|
||||
expect(console.info.mock.calls.flat()).not.toContain(webViewDetail);
|
||||
});
|
||||
|
||||
test('logs web-view page events without native detail payloads', () => {
|
||||
const page = createPage();
|
||||
const loadDetail = { src: 'https://www.genarrative.world/private' };
|
||||
const errorDetail = { errMsg: 'private native load failed' };
|
||||
|
||||
page.handleWebViewLoad({ detail: loadDetail });
|
||||
page.handleWebViewError({ detail: errorDetail });
|
||||
|
||||
expect(console.info).toHaveBeenCalledWith('[web-view] loaded');
|
||||
expect(console.error).toHaveBeenCalledWith('[web-view] load failed');
|
||||
expect(console.info.mock.calls.flat()).not.toContain(loadDetail);
|
||||
expect(console.error.mock.calls.flat()).not.toContain(errorDetail);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user