31 lines
1.3 KiB
TypeScript

// @ts-expect-error - bun:test is provided by the Bun runtime; viewer does not
// depend on @types/bun so the import type is unresolved at compile time.
import { describe, expect, test } from 'bun:test'
import { isSafariUserAgent, shouldForceWebGLRenderer } from './renderer-backend'
const SAFARI_MAC =
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15'
const CHROME_MAC =
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36'
describe('renderer backend selection', () => {
test('identifies desktop Safari without classifying Chrome as Safari', () => {
expect(isSafariUserAgent(SAFARI_MAC)).toBe(true)
expect(isSafariUserAgent(CHROME_MAC)).toBe(false)
})
test('uses WebGL for Safari and leaves Chrome on the default backend', () => {
expect(shouldForceWebGLRenderer({ search: '', userAgent: SAFARI_MAC })).toBe(true)
expect(shouldForceWebGLRenderer({ search: '', userAgent: CHROME_MAC })).toBe(false)
})
test('honors an explicit renderer override', () => {
expect(shouldForceWebGLRenderer({ search: '?renderer=webgpu', userAgent: SAFARI_MAC })).toBe(
false,
)
expect(shouldForceWebGLRenderer({ search: '?renderer=webgl', userAgent: CHROME_MAC })).toBe(
true,
)
})
})