import { readFileSync } from 'node:fs' import { describe, expect, it } from 'vitest' const styles = readFileSync( new URL('../assets/main.css', import.meta.url), 'utf8', ) const source = readFileSync( new URL('./PhoneLockScreen.vue', import.meta.url), 'utf8', ) describe('PhoneLockScreen notification theme contract', () => { it('uses the dedicated Lock Screen wallpaper preference', () => { expect(source).toContain('settings.lockWallpaperImageUrl') expect(source).toContain('settings.lockWallpaper') expect(source).not.toContain('settings.wallpaperImageUrl') }) it('uses explicit light and dark notification material tokens', () => { expect(styles).toMatch( /\.lock-screen\s*\{[^}]*--lock-notification-background:\s*rgb\(38 36 40 \/ 76%\)[^}]*--lock-notification-color:\s*#fff/s, ) expect(styles).toMatch( /\.phone-app--light \.lock-screen\s*\{[^}]*--lock-notification-background:\s*rgb\(247 247 248 \/ 82%\)[^}]*--lock-notification-color:\s*#111[^}]*--lock-notification-muted:\s*rgb\(0 0 0 \/ 55%\)/s, ) }) it('applies the adaptive tokens to cards, metadata, focus and clear all', () => { expect(styles).toMatch( /\.lock-screen__notification\s*\{[^}]*color:\s*var\(--lock-notification-color\)[^}]*background-color:\s*var\(--lock-notification-background\)[^}]*text-shadow:\s*var\(--lock-notification-text-shadow\)/s, ) expect(styles).toMatch( /\.lock-screen__notifications-clear\s*\{[^}]*color:\s*var\(--lock-notification-color\)[^}]*background:\s*var\(--lock-notification-clear-background\)/s, ) expect(styles).toContain('color: var(--lock-notification-muted);') expect(styles).toContain( 'outline: 2px solid var(--lock-notification-focus);', ) }) it('uses the solid mode material for the performance clear action', () => { expect(styles).toMatch( /\.phone-app--performance \.lock-screen\s*\{[^}]*--lock-notification-clear-background:\s*var\(--phone-performance-glass\)/s, ) }) })