install prompt support and iOS “Share → Add to Home Screen” guidance. Also added a small helper + tests to decide when/which banner variant should show, and shared copy in common.json.
25 lines
1.1 KiB
TypeScript
25 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { resolveInstallBannerState } from './installBanner';
|
|
|
|
describe('resolveInstallBannerState', () => {
|
|
it('returns null when already installed', () => {
|
|
expect(resolveInstallBannerState({ isInstalled: true, isStandalone: false, canInstall: true, isIos: true })).toBeNull();
|
|
});
|
|
|
|
it('returns null when running in standalone mode', () => {
|
|
expect(resolveInstallBannerState({ isInstalled: false, isStandalone: true, canInstall: true, isIos: true })).toBeNull();
|
|
});
|
|
|
|
it('returns prompt when install prompt is available', () => {
|
|
expect(resolveInstallBannerState({ isInstalled: false, isStandalone: false, canInstall: true, isIos: false })).toEqual({ variant: 'prompt' });
|
|
});
|
|
|
|
it('returns ios when on iOS without prompt', () => {
|
|
expect(resolveInstallBannerState({ isInstalled: false, isStandalone: false, canInstall: false, isIos: true })).toEqual({ variant: 'ios' });
|
|
});
|
|
|
|
it('returns null when no install option exists', () => {
|
|
expect(resolveInstallBannerState({ isInstalled: false, isStandalone: false, canInstall: false, isIos: false })).toBeNull();
|
|
});
|
|
});
|