31 lines
1.3 KiB
TypeScript
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,
|
|
)
|
|
})
|
|
})
|