Zum Inhalt

tests/engine/adapter.test.ts

import { describe, expect, it } from 'vitest';
import { detectTier, isWebGPUAvailable } from '~/engine/adapter';
import type { PerfTier } from '~/engine/types';

describe('isWebGPUAvailable', () => {
  it('returns false when navigator.gpu is undefined', () => {
    const fakeNav = {} as Navigator;
    expect(isWebGPUAvailable(fakeNav)).toBe(false);
  });

  it('returns true when navigator.gpu exists', () => {
    const fakeNav = { gpu: {} } as Navigator;
    expect(isWebGPUAvailable(fakeNav)).toBe(true);
  });
});

describe('detectTier', () => {
  it('returns "minimum" for fallback adapter', () => {
    const adapter = {
      info: { isFallbackAdapter: true, architecture: '' },
    } as unknown as GPUAdapter;
    expect(detectTier(adapter, false)).toBe<PerfTier>('minimum');
  });

  it('returns "mobile" when isMobileUA is true', () => {
    const adapter = {
      info: { isFallbackAdapter: false, architecture: '' },
    } as unknown as GPUAdapter;
    expect(detectTier(adapter, true)).toBe<PerfTier>('mobile');
  });

  it('returns "desktop" when not mobile and not fallback', () => {
    const adapter = {
      info: { isFallbackAdapter: false, architecture: '' },
    } as unknown as GPUAdapter;
    expect(detectTier(adapter, false)).toBe<PerfTier>('desktop');
  });
});