- playDashboardLoadOomph gated itself silent on the one entry that should be loud: onboarding is already flagged complete by the time the post-wizard dashboard mounts. force flag restores the full oomph there while keeping ordinary re-logins quiet (the intentional limit). - OnboardingDone now hands Login a one-shot finale flag, so the login right after the wizard gets the full zoom + oomph even as a regular password login — which is exactly the demo flow (and TOTP logins). - 'Replay intro' on the login screen actually replays: App.vue was instantly re-marking the intro as seen on onboarded nodes; an explicit one-shot replay flag now overrides every suppression rule (unit tested). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { shouldShowIntroSplash } from '../introSplash'
|
|
|
|
describe('shouldShowIntroSplash', () => {
|
|
it('skips intro on an already-onboarded node even without a browser intro flag', () => {
|
|
expect(shouldShowIntroSplash({
|
|
seenIntro: false,
|
|
routePath: '/',
|
|
fromBoot: false,
|
|
onboardingComplete: true,
|
|
})).toBe(false)
|
|
})
|
|
|
|
it('shows intro for a fresh root visit when onboarding is not complete', () => {
|
|
expect(shouldShowIntroSplash({
|
|
seenIntro: false,
|
|
routePath: '/',
|
|
fromBoot: false,
|
|
onboardingComplete: false,
|
|
})).toBe(true)
|
|
})
|
|
|
|
it('does not interrupt direct routes', () => {
|
|
expect(shouldShowIntroSplash({
|
|
seenIntro: false,
|
|
routePath: '/dashboard/web5',
|
|
fromBoot: false,
|
|
onboardingComplete: null,
|
|
})).toBe(false)
|
|
})
|
|
|
|
it('an explicit replay request overrides every suppression rule', () => {
|
|
expect(shouldShowIntroSplash({
|
|
seenIntro: true,
|
|
routePath: '/',
|
|
fromBoot: false,
|
|
onboardingComplete: true,
|
|
replayRequested: true,
|
|
})).toBe(true)
|
|
})
|
|
})
|