Files
Webklar-Kundenbereich/test/knEfixCss.test.js
T
ClaudeandClaude Sonnet 5.5 92d7d247e9 Kundenansicht neu E-Fix F3a: Fokusring der Shell-Reiter liegt innen und ist sichtbar
.kn [tabindex]:focus-visible (module.css, 0-3-0, später geladen) und .kn button:focus-visible setzten outline-offset +2px und schlugen
.kn-t:focus-visible und .kn-reiter-t:focus-visible (0-2-0). Der Ring lag außerhalb und wurde von Balken und Reiterzeile abgeschnitten.
Jetzt .kn .kn-t[role="tab"] und .kn .kn-reiter-t[role="tab"] (0-4-0) mit Versatz -2px; der aktive Reiter auf dem schwarzen Gleiter
bekommt vom Gleiter einen hellen Innenring (Rückfall ohne Overlay: weißer Ring am Reiter). Pin in test/knEfixCss.test.js.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 21:30:06 +00:00

38 lines
2.1 KiB
JavaScript

import { test } from 'node:test'
import assert from 'node:assert/strict'
import { lies } from './support/knHuelle.js'
// Abschlussprüfung Phase E (Fix-Welle): Pins für die CSS-Befunde der neuen Seite. Sie lesen nur Quelltext, kein Browser.
const HUELLE = lies('huelle.css')
const regel = (css, selektor) => {
const m = css.match(new RegExp(`(?:^|\\n)${selektor.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*\\{([^}]*)\\}`))
return m ? m[1] : ''
}
test('F2: die Sperre der Mitarbeiter-Kundenansicht (.kb-view-overlay) ist in der neuen Seite eine echte Sperre', () => {
const o = regel(HUELLE, '.kb-view-overlay')
assert.match(o, /position:\s*fixed/)
assert.match(o, /inset:\s*0\b/)
assert.match(o, /z-index:\s*(\d{3,})/) // über Konto (60), Leiste (40) und Banner
assert.ok(Number(o.match(/z-index:\s*(\d+)/)?.[1]) > 60)
assert.match(o, /background:\s*var\(--kn-bg\)/) // deckend weiß, kein Glas, kein rgba mit Durchsicht
assert.doesNotMatch(o, /rgba|transparent|opacity/)
const karte = regel(HUELLE, '.kb-view-overlay-card')
assert.match(karte, /max-width:\s*\d+px/)
const knopf = regel(HUELLE, '.kb-view-overlay-card button')
assert.match(knopf, /min-height:\s*44px/)
assert.match(knopf, /background:\s*var\(--kn-accent\)/)
assert.match(regel(HUELLE, '.kb-view-overlay-card p'), /font-size:\s*\d+px/)
})
test('F3: Fokusring der Shell-Reiter liegt innen (Spezifität über .kn [tabindex]:focus-visible aus module.css, 0-3-0)', () => {
const BASIS = lies('basis.css')
assert.match(HUELLE, /\n\.kn \.kn-t\[role="tab"\]:focus-visible\s*\{[^}]*outline-offset:\s*-2px/)
assert.match(BASIS, /\n\.kn \.kn-reiter-t\[role="tab"\]:focus-visible\s*\{[^}]*outline-offset:\s*-2px/)
// keine Regel mit niedrigerer Spezifität, die den Versatz setzt
assert.doesNotMatch(HUELLE, /\n\.kn-t:focus-visible/)
assert.doesNotMatch(BASIS, /\n\.kn-reiter-t:focus-visible/)
// der aktive Reiter liegt auf dem schwarzen Gleiter: heller Innenring dort
assert.match(HUELLE, /\.kn \.kn-balken:has\(\.kn-t:focus-visible\) \.kn-gleiter\s*\{[^}]*outline:\s*2px solid #fff[^}]*outline-offset:\s*-3px/)
})