Seitenmenue startet auf schmalen Bildschirmen (bis 720 px) eingeklappt. Bei 390 px liess das feste 248-px-Menue nur ~140 px Inhalt, jede Seite (auch /finance) scrollte waagerecht; das fiel in den Einzeltests ohne App-Rahmen nicht auf. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
28 lines
1.1 KiB
JavaScript
28 lines
1.1 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { loadModule } from './load.mjs'
|
|
|
|
const { startsCollapsed, AUTO_COLLAPSE_MAX_WIDTH } = await loadModule('src/lib/sidebar.js')
|
|
|
|
// Fenster mit matchMedia, das "(max-width: Npx)" gegen eine feste Breite prueft
|
|
const windowOf = (width) => ({
|
|
matchMedia: (query) => ({ matches: width <= Number(/max-width:\s*(\d+)px/.exec(query)?.[1]) }),
|
|
})
|
|
|
|
test('startsCollapsed: Handy (390 px) und Grenze (720 px) starten eingeklappt', () => {
|
|
assert.equal(AUTO_COLLAPSE_MAX_WIDTH, 720)
|
|
assert.equal(startsCollapsed(windowOf(390)), true)
|
|
assert.equal(startsCollapsed(windowOf(720)), true)
|
|
})
|
|
|
|
test('startsCollapsed: breitere Fenster starten ausgeklappt', () => {
|
|
assert.equal(startsCollapsed(windowOf(721)), false)
|
|
assert.equal(startsCollapsed(windowOf(1280)), false)
|
|
})
|
|
|
|
test('startsCollapsed: ohne window oder matchMedia (oder bei Fehler) ausgeklappt', () => {
|
|
assert.equal(startsCollapsed(null), false)
|
|
assert.equal(startsCollapsed({}), false)
|
|
assert.equal(startsCollapsed({ matchMedia: () => { throw new Error('kaputt') } }), false)
|
|
})
|