mirror of
https://github.com/sky-systems/sky_phone.git
synced 2026-08-29 17:28:56 +00:00
2f70444071
Rebuild device unlock around the current iOS-style wallpaper, outlined keypad, telephone letters, status bar, and keyboard support. Require the passcode only for the first unlock of each open device session so a soft lock from the status bar returns directly after the session is authenticated.
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { readFileSync } from 'node:fs'
|
|
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
const source = readFileSync(new URL('./App.vue', import.meta.url), 'utf8')
|
|
|
|
describe('browser development preview contract', () => {
|
|
it('starts unlocked while preserving an explicit lock screen preview', () => {
|
|
expect(source).toContain(
|
|
"developmentParameters.has('lockScreenPreview')",
|
|
)
|
|
expect(source).toContain(
|
|
': !isDevelopment || developmentLockScreenPreview',
|
|
)
|
|
expect(source).toContain("developmentParameters.has('setupPreview')")
|
|
})
|
|
|
|
it('loads authenticated app data without replacing direct app routes', () => {
|
|
expect(source).toContain(
|
|
"if (isLocked.value || setupRequired.value) void router.replace('/')",
|
|
)
|
|
expect(source).toContain('else loadUnlockedPhoneData()')
|
|
})
|
|
|
|
it('requires the passcode only for the first unlock of a device session', () => {
|
|
expect(source).toContain('const passcodeRequired = ref(false)')
|
|
expect(source).toContain(
|
|
'if (phone.security.enabled && passcodeRequired.value)',
|
|
)
|
|
expect(source).toContain(
|
|
'passcodeRequired.value = isLocked.value && phone.security.enabled',
|
|
)
|
|
expect(source).toMatch(
|
|
/function lockPhone\(\): void \{[\s\S]*?passcodeRequired\.value = false[\s\S]*?isLocked\.value = true/,
|
|
)
|
|
})
|
|
|
|
it('keeps hairlines at one rendered device pixel through phone zoom', () => {
|
|
expect(source).toContain(
|
|
'...getHairlinePixelStyle(phoneZoom.value, browserDevicePixelRatio.value)',
|
|
)
|
|
expect(source).toContain(':device-pixel-ratio="browserDevicePixelRatio"')
|
|
})
|
|
})
|