[Javascript] Test a web component
import { WatermarkOverlay } from '../watermark-overlay'
describe('WatermarkOverlay', () => {
let cmp: HTMLElement
let fixture: HTMLElement
let shadow: ShadowRoot | null | undefined
customElements.define('test-watermarkoverlay', WatermarkOverlay)
beforeEach(() => {
Object.defineProperty(window, 'innerWidth', {
writable: true,
value: 1024,
})
Object.defineProperty(window, 'innerHeight', {
writable: true,
value: 768,
})
document.body.innerHTML = `<div id="fixture"><test-watermarkoverlay userId="testUserId" message="testMessage"></test-watermarkoverlay></div>`
fixture = document.querySelector('#fixture')!
cmp = document.querySelector('test-watermarkoverlay')!
cmp.setAttribute('size', '1024:768')
shadow = cmp?.shadowRoot
})
afterEach(() => {
shadow = null
fixture.remove()
})
test('should have the container', () => {
const container = shadow?.querySelector('.zscaler__overlay--container')
expect(container).toBeDefined()
const styles = window.getComputedStyle(container!)
const { zIndex } = styles
expect(zIndex).toBe('99999999999999')
})
test('should have watermark div elements', () => {
const container = shadow?.querySelector('.zscaler__overlay--container')
const elms = container?.querySelectorAll('.zscaler__overlay--watermark')
expect(elms?.length).toBeGreaterThan(0)
const firstDiv = elms?.[0]
expect(firstDiv?.innerHTML).toContain('testUserId')
expect(firstDiv?.innerHTML).toContain('testMessage')
})
test('resize: if enlarge the window should increase the number of divs', (done) => {
let container = shadow?.querySelector('.zscaler__overlay--container')
let elms = container?.querySelectorAll('.zscaler__overlay--watermark')
const pervNum = elms?.length || 0
expect(pervNum).toBeGreaterThan(0)
cmp.setAttribute('size', '2048:768')
setTimeout(() => {
container = shadow?.querySelector('.zscaler__overlay--container')
elms = container?.querySelectorAll('.zscaler__overlay--watermark')
const currentNum = elms?.length
expect(currentNum).toBeGreaterThan(pervNum)
done()
}, 10)
})
test('resize: if narrow the window should NOT decrease the number of divs', (done) => {
let container = shadow?.querySelector('.zscaler__overlay--container')
let elms = container?.querySelectorAll('.zscaler__overlay--watermark')
const pervNum = elms?.length || 0
expect(pervNum).toBeGreaterThan(0)
cmp.setAttribute('size', '768:768')
setTimeout(() => {
container = shadow?.querySelector('.zscaler__overlay--container')
elms = container?.querySelectorAll('.zscaler__overlay--watermark')
const currentNum = elms?.length
expect(currentNum).toEqual(pervNum)
done()
}, 10)
})
test('should emit "watermarkRevmoed" event when remove the fixture', () => {
const cb = jest.fn()
cmp.addEventListener('watermarkRemoved', cb)
fixture.remove()
expect(cb).toHaveBeenCalled()
expect(cb).toHaveBeenCalledTimes(1)
})
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-03-18 [Webpack] Externalize Dependencies to be Loaded via CDN with webpack
2019-03-18 [Webpack] Analyze a Production JavaScript Bundle with webpack-bundle-analyzer
2019-03-18 [Algorithm] Largest sum of non-adjacent numbers
2019-03-18 [Angular] Use ngx-build-plus to compile Angular Elements
2017-03-18 [Ramda] Get Deeply Nested Properties Safely with Ramda's path and pathOr Functions
2016-03-18 [Angular 2] Using events and refs
2016-03-18 [Angular 2] Writing a Simple Angular 2 Component