chore:名片样式更改
This commit is contained in:
@@ -280,7 +280,8 @@ test('端到端: 三端分享面板按钮矩阵(静态推导)', () => {
|
||||
assert.ok(/@tap="copyLink"/.test(src), '复制链接应三端可用');
|
||||
// 保存二维码: MP-WEIXIN + MP-HARMONY
|
||||
// 浏览器分享: H5
|
||||
// 发给好友: MP-WEIXIN(鸿蒙无转发菜单, 用复制链接代替)
|
||||
// 发给好友: MP-WEIXIN, 且必须是原生 button(open-type=share) —— 普通 view 的 @tap
|
||||
// 调不起转发面板(微信未开放该 API), 只能弹「请点击右上角···」的死胡同提示
|
||||
const h5Btns = [];
|
||||
const wxBtns = [];
|
||||
const harmonyBtns = [];
|
||||
@@ -289,23 +290,46 @@ test('端到端: 三端分享面板按钮矩阵(静态推导)', () => {
|
||||
src.split('\n').forEach((line, i) => {
|
||||
const b = blocks.find(b => i >= b.start && i <= b.end);
|
||||
const cond = b ? b.cond : null;
|
||||
if (!/ss-btn/.test(line)) return;
|
||||
// 原生转发按钮没有 @tap, 统一记成 nativeShare 便于断言
|
||||
const tm = line.match(/@tap="(\w+)"/);
|
||||
if (!tm || !/ss-btn/.test(line)) return;
|
||||
if (!cond) { h5Btns.push(tm[1]); wxBtns.push(tm[1]); harmonyBtns.push(tm[1]); return; }
|
||||
if (condHits(cond, 'MP-WEIXIN')) wxBtns.push(tm[1]);
|
||||
if (condHits(cond, 'MP-HARMONY')) harmonyBtns.push(tm[1]);
|
||||
if (condHits(cond, 'H5')) h5Btns.push(tm[1]);
|
||||
const token = tm ? tm[1] : (/open-type="share"/.test(line) ? 'nativeShare' : null);
|
||||
if (!token) return;
|
||||
if (!cond) { h5Btns.push(token); wxBtns.push(token); harmonyBtns.push(token); return; }
|
||||
if (condHits(cond, 'MP-WEIXIN')) wxBtns.push(token);
|
||||
if (condHits(cond, 'MP-HARMONY')) harmonyBtns.push(token);
|
||||
if (condHits(cond, 'H5')) h5Btns.push(token);
|
||||
});
|
||||
assert.ok(wxBtns.includes('copyLink') && wxBtns.includes('saveQr') && wxBtns.includes('shareToFriend'),
|
||||
`微信按钮矩阵: ${JSON.stringify(wxBtns)}`);
|
||||
assert.ok(wxBtns.includes('copyLink') && wxBtns.includes('saveQr') && wxBtns.includes('nativeShare'),
|
||||
`微信按钮矩阵(发给好友须为 nativeShare): ${JSON.stringify(wxBtns)}`);
|
||||
assert.ok(!wxBtns.includes('shareToFriend'),
|
||||
'「发给好友」不能退回 @tap 弹提示的死胡同, 必须原生 button 直接拉起转发面板');
|
||||
assert.ok(harmonyBtns.includes('copyLink') && harmonyBtns.includes('saveQr'),
|
||||
`鸿蒙按钮矩阵(无发给好友): ${JSON.stringify(harmonyBtns)}`);
|
||||
assert.ok(!harmonyBtns.includes('shareToFriend'), '鸿蒙不应出现「发给好友」(无转发菜单)');
|
||||
`鸿蒙按钮矩阵: ${JSON.stringify(harmonyBtns)}`);
|
||||
assert.ok(!harmonyBtns.includes('nativeShare'), '鸿蒙元服务无转发菜单, 不应出现原生转发按钮');
|
||||
assert.ok(h5Btns.includes('copyLink') && h5Btns.includes('h5Share'),
|
||||
`H5 按钮矩阵: ${JSON.stringify(h5Btns)}`);
|
||||
assert.ok(!h5Btns.includes('saveQr'), 'H5 不应出现「保存二维码」(无 saveImageToPhotosAlbum)');
|
||||
});
|
||||
|
||||
// =============================================================
|
||||
// 9.1 「发名片」主按钮: 微信端一键转发给好友
|
||||
// =============================================================
|
||||
|
||||
test('发名片: 微信端原生 button 一键转发 + 分享链接预先就绪', () => {
|
||||
const src = read('detail.vue');
|
||||
const btnLine = src.split('\n').find(l => /send-btn/.test(l) && /open-type="share"/.test(l));
|
||||
assert.ok(btnLine, 'detail.vue 应有「发名片」按钮(open-type="share")');
|
||||
assert.ok(/<button/.test(btnLine),
|
||||
'「发名片」必须是原生 <button> —— 普通 view 无法调起「发送给朋友」面板');
|
||||
// 分享链接必须在转发前就绪: 右上角「···」转发与原生按钮都不经过 openShare()
|
||||
assert.ok(/buildShareInfo\s*\(\)/.test(src), 'shareUrl/qrUrl 应由 buildShareInfo 统一生成');
|
||||
const osm = src.match(/onShareAppMessage\(\)\s*\{([\s\S]*?)\n\t\}/);
|
||||
assert.ok(osm, 'detail.vue 应声明 onShareAppMessage');
|
||||
assert.ok(/buildShareInfo/.test(osm[1]), 'onShareAppMessage 内需兜底生成分享链接(否则中转页拿到空 url)');
|
||||
assert.ok(!/请点击右上角/.test(src), '不应保留「请点击右上角···」的提示式分享');
|
||||
});
|
||||
|
||||
// ============================================================
|
||||
// 1.8.0 后台「选择链接」注册: PAGE_KEY_MAP ↔ pages.json 对齐
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user