Kundenansicht neu: vorübergehende iPhone-Messung wieder entfernt

Die Messung aus cca29a4 hat beide Ursachen gezeigt (Chat kürzer als der
Bildschirm, verkleinerte Seite mit Hineinzoomen beim Tippen). Nach
1a09beb zeigt sie am iPhone: Maßstab bleibt beim Tippen 0,85, Fenster
1002 px, Leiste unten. diag-hoehe.js, routes/diagHoehe.js, die Zeile in
server/index.js und test/diagHoehe.test.js sind raus; server/index.js
ist wieder wie vor der Messung.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-29 11:33:16 +00:00
1 parent 1a09bebe41
commit ff8adadf00
7 files changed
+4 -175

No files matched your search

-57
View File
@@ -1,57 +0,0 @@
import { test, after } from 'node:test'
import assert from 'node:assert/strict'
import { startAppwriteMock } from './support/appwriteMock.js'
import { startFakeStripe } from './support/fakeStripe.js'
import { useTestEnv } from './support/testEnv.js'
// Vorübergehende Messung der iPhone-Höhe (routes/diagHoehe.js): nur Pilot-Kunden schreiben ins Log, alle bekommen 204
const aw = await startAppwriteMock({ schema: {} })
const st = await startFakeStripe()
useTestEnv({ appwriteUrl: aw.url, stripeUrl: st.url })
const { config } = await import('../server/config.js')
const { startTestApp, send } = await import('./support/testApp.js')
const { customerCookie, kundenansichtCookie } = await import('./support/fixtures.js')
const { default: diagHoeheRoutes, MAX_BYTES, MAX_JE_STUNDE } = await import('../server/routes/diagHoehe.js')
const app = await startTestApp({ '/api/diag/hoehe': diagHoeheRoutes })
after(() => Promise.all([app.close(), aw.close(), st.close()]))
const stelle = (mode, pilotEmails = []) => Object.assign(config.kundenansichtNeu, { mode, pilotEmails })
async function mitLog(fn) {
const zeilen = []
const alt = console.log
console.log = (...a) => { if (String(a[0]).startsWith('[diag-hoehe]')) zeilen.push(a.join(' ')); else alt(...a) }
try { await fn() } finally { console.log = alt }
return zeilen
}
const melde = (body, cookie) => send('POST', '/api/diag/hoehe', { body, cookie })
test('diag-hoehe: Pilot-Kunde schreibt eine Zeile, alle anderen nichts; Antwort immer 204', async () => {
stelle('pilot', ['k@example.invalid'])
const zeilen = await mitLog(async () => {
assert.equal((await melde({ art: 'start', ih: 873 }, customerCookie('c1'))).status, 204)
assert.equal((await melde({ art: 'ohne' })).status, 204)
assert.equal((await melde({ art: 'mitarbeiter' }, kundenansichtCookie())).status, 204)
stelle('pilot', ['jemand@example.invalid'])
assert.equal((await melde({ art: 'kein-pilot' }, customerCookie('c1'))).status, 204)
stelle('off')
assert.equal((await melde({ art: 'aus' }, customerCookie('c1'))).status, 204)
})
assert.deepEqual(zeilen, ['[diag-hoehe] c1 {"art":"start","ih":873}'])
})
test('diag-hoehe: zu große Meldungen und mehr als MAX_JE_STUNDE je Stunde landen nicht im Log', async () => {
stelle('on')
const zeilen = await mitLog(async () => {
assert.equal((await melde({ x: 'a'.repeat(MAX_BYTES) }, customerCookie('c1'))).status, 204)
for (let i = 0; i < MAX_JE_STUNDE + 3; i++) await melde({ i }, customerCookie('c1'))
})
assert.ok(zeilen.length <= MAX_JE_STUNDE && zeilen.length >= MAX_JE_STUNDE - 2, `Zeilen: ${zeilen.length}`)
assert.ok(zeilen.every((z) => z.length < MAX_BYTES))
stelle('off')
})
test('server/index.js: die Messung hängt hinter dem JSON-Parser unter /api/diag/hoehe', async () => {
const { readFileSync } = await import('node:fs')
const js = readFileSync(new URL('../server/index.js', import.meta.url), 'utf8')
assert.ok(js.indexOf("app.use('/api/diag/hoehe', diagHoeheRoutes)") > js.indexOf("app.use(express.json({ limit: '2mb'"))
})
+2 -3
View File
@@ -13,8 +13,7 @@ test('huelle.css: am Handy hat die Spalte im Chat mindestens volle Höhe (100vh,
assert.match(css, /\.kn-spalte \{ position: relative; min-height: 100vh;/)
})
test('huelle.js: der alte Höhen-Wächter (Hülle aus- und einblenden) ist weg, die Messung läuft nur am iPhone und nicht in der Mitarbeiter-Ansicht', () => {
test('huelle.js: der alte Höhen-Wächter und die vorübergehende Messung sind wieder weg', () => {
const js = lies('huelle.js')
assert.doesNotMatch(js, /beobachteHoehe|'\.\/hoehe\.js'/)
assert.match(js, /if \(istIos\(\) && istHandy\(\) && !viewAs\) starteDiagHoehe\(\{ win, doc, zoom \}\)/)
assert.doesNotMatch(js, /beobachteHoehe|'\.\/hoehe\.js'|starteDiagHoehe|diag-hoehe/)
})
+1 -1
View File
@@ -42,5 +42,5 @@ test('huelle.css und huelle.js: Ausgleich nur über die Klasse an <html>, für a
const css = lies('huelle.css')
assert.match(css, /\.kn-zoom-ausgleich \.kn :is\(input:not\(\[type="checkbox"\]\)[^{]*, textarea, select\) \{ font-size: calc\(16px \* var\(--kn-zoom-ausgleich, 1\)\) !important; \}/)
const js = lies('huelle.js')
assert.match(js, /const zoom = istIos\(\) \? beobachteZoom\(\{ win, doc, istTextfeld \}\) : null/)
assert.match(js, /if \(istIos\(\)\) beobachteZoom\(\{ win, doc, istTextfeld \}\)/)
})