Kundenansicht neu: vorübergehende iPhone-Messung wieder entfernt
Die Messung auscca29a4hat beide Ursachen gezeigt (Chat kürzer als der Bildschirm, verkleinerte Seite mit Hineinzoomen beim Tippen). Nach1a09bebzeigt 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:
1 parent
1a09bebe41
commit
ff8adadf00
7 files changed
+4
-175
No files matched your search
@@ -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'"))
|
||||
})
|
||||
@@ -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/)
|
||||
})
|
||||
@@ -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 \}\)/)
|
||||
})
|
||||
Reference in new issue
Block a user