import { test } from 'node:test' import assert from 'node:assert/strict' import { HEAT_DEVICES, deviceHtml, heatCaption, addressOf, deviceClock } from '../public/geraete.js' import { vpClass } from '../analytics/client/core.js' const SRC = 'https://baeckerei.de/preise?__wk_heat=abc.def&__wk_embed=1' test('Geraete: Website-Breite liegt in der Geraeteklasse der Heatmap (m/t/d wie vpClass)', () => { assert.deepEqual(Object.keys(HEAT_DEVICES), ['d', 't', 'm']) for (const [vp, dev] of Object.entries(HEAT_DEVICES)) { assert.equal(vpClass(dev.site.width), vp, vp) assert.equal(dev.site.width, dev.canvas[0], 'volle Bildschirmbreite') assert.equal(dev.site.top + dev.site.height, dev.canvas[1], 'Website reicht bis zum unteren Rand') } assert.deepEqual(Object.fromEntries(Object.entries(HEAT_DEVICES).map(([k, d]) => [k, d.label])), { d: 'Computer', t: 'Tablet', m: 'Handy' }) }) test('deviceHtml: Rahmen je Geraet, iframe in echter Breite mit enger Sandbox', () => { const frames = { d: 'dm-macbook', t: 'dm-ipad', m: 'dm-iphone' } for (const [vp, cls] of Object.entries(frames)) { const html = deviceHtml(vp, { src: SRC, title: 'Heatmap ' }) const dev = HEAT_DEVICES[vp] assert.match(html, new RegExp(`^
baeckerei\.de\/preise<\/span>/, 'Adresszeile ohne Parameter') assert.match(deviceHtml('m', { src: SRC }), /data-statusbar="dark"/, 'dunkle Statusleiste auf weisser Website') assert.equal(deviceHtml('x', { src: SRC }), '') assert.doesNotMatch(deviceHtml('d', { src: '">' }), /