Files
digital-psychology/apps/user-h5/src/lib/mpEmbed.spec.ts
T
jackyu66gitandCursor fc53be22f8 fix(h5): 统一 nh=1 与 sbh 顶距逻辑,与 index.html 首屏一致
applyMpEmbedDom 在原生顶栏模式读取 session sbh;补充 nh+sbh 单测。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 04:21:52 +08:00

59 lines
2.3 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it } from 'vitest'
import { applyMpEmbedDom, initMpEmbed, isMpEmbed, isMpNativeHeader } from './mpEmbed'
describe('mpEmbed', () => {
beforeEach(() => {
sessionStorage.clear()
document.documentElement.className = ''
document.documentElement.style.removeProperty('--yxg-safe-top')
document.documentElement.style.removeProperty('--yxg-page-top')
window.history.replaceState({}, '', '/psy/')
})
afterEach(() => {
sessionStorage.clear()
})
it('persists embed flag from ?mp=1', () => {
window.history.replaceState({}, '', '/psy/?mp=1')
initMpEmbed()
expect(isMpEmbed()).toBe(true)
})
it('persists status bar height from ?sbh=', () => {
window.history.replaceState({}, '', '/psy/?mp=1&sbh=47')
initMpEmbed()
expect(document.documentElement.style.getPropertyValue('--yxg-safe-top')).toBe('47px')
expect(document.documentElement.style.getPropertyValue('--yxg-page-top')).toBe('calc(47px + 50px)')
expect(sessionStorage.getItem('yxg_sbh')).toBe('47')
window.history.replaceState({}, '', '/psy/?mp=1')
applyMpEmbedDom()
expect(document.documentElement.style.getPropertyValue('--yxg-safe-top')).toBe('47px')
})
it('uses native mini-program header mode with ?nh=1', () => {
window.history.replaceState({}, '', '/psy/?mp=1&nh=1')
initMpEmbed()
expect(isMpNativeHeader()).toBe(true)
expect(document.documentElement.classList.contains('mp-native-header')).toBe(true)
expect(document.documentElement.style.getPropertyValue('--yxg-safe-top')).toBe('0px')
expect(document.documentElement.style.getPropertyValue('--yxg-page-top')).toBe('4px')
})
it('applies sbh in native header mode with ?nh=1&sbh=', () => {
window.history.replaceState({}, '', '/psy/?mp=1&nh=1&sbh=12')
initMpEmbed()
expect(isMpNativeHeader()).toBe(true)
expect(sessionStorage.getItem('yxg_sbh')).toBe('12')
expect(document.documentElement.style.getPropertyValue('--yxg-page-top')).toBe('12px')
window.history.replaceState({}, '', '/psy/?mp=1&nh=1')
applyMpEmbedDom()
expect(document.documentElement.style.getPropertyValue('--yxg-page-top')).toBe('12px')
})
it('returns false without mp query', () => {
initMpEmbed()
expect(isMpEmbed()).toBe(false)
})
})