mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-09 03:27:43 -08:00
38 lines
1.6 KiB
JavaScript
38 lines
1.6 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
import { domProfile, validateDomReport, verifyFrozenDom } from './dom.mjs'
|
|
|
|
test('DOM baseline rejects absent interaction, fake input and wrong media', () => {
|
|
const frozen = verifyFrozenDom().report
|
|
for (const mutate of [
|
|
report => report.checks.pop(),
|
|
report => report.interactions.find(item => item.code === 'ArrowRight').trusted = false,
|
|
report => report.interactions.find(item => item.code === 'ArrowRight').afterTime = 0,
|
|
report => report.interactions.find(item => item.code === 'ArrowRight' && item.target === 'INPUT').afterHotkeys++,
|
|
report => report.capture.media['video.mp4'] = 'wrong',
|
|
report => report.unhandled.push('unexpected'),
|
|
]) {
|
|
const changed = structuredClone(frozen)
|
|
mutate(changed)
|
|
assert.throws(() => validateDomReport(changed))
|
|
}
|
|
})
|
|
|
|
test('DOM comparison detects class, variable and layout changes without freezing subpixel widths', () => {
|
|
const frozen = verifyFrozenDom().report
|
|
const expected = domProfile(frozen)
|
|
const jitter = structuredClone(frozen)
|
|
jitter.observations.wide.controls[0].width += 0.01
|
|
assert.deepEqual(domProfile(jitter), expected)
|
|
for (const mutate of [
|
|
report => report.snapshot.tree.attributes.class = 'renamed',
|
|
report => report.snapshot.cssVariables.pop(),
|
|
report => report.snapshot.controlAttributes[0].role = 'button',
|
|
report => report.observations.narrow.controls[0].withinPlayer = false,
|
|
]) {
|
|
const changed = structuredClone(frozen)
|
|
mutate(changed)
|
|
assert.notDeepEqual(domProfile(changed), expected)
|
|
}
|
|
})
|