applyMpEmbedDom 在原生顶栏模式读取 session sbh;补充 nh+sbh 单测。 Co-authored-by: Cursor <cursoragent@cursor.com>
59 lines
2.3 KiB
TypeScript
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)
|
|
})
|
|
})
|