UNPKG

1.92 kBJavaScriptView Raw
1// @ts-check
2
3// Application
4import { getGPUTier } from '../src/index';
5
6// Test data
7import { RENDERER_DESKTOP, RENDERER_MOBILE, RENDERER_TABLET } from './renderers';
8
9// Utilities
10const stripPrefix = entries => entries.map(entry => entry.split(' - ')[1].toLowerCase());
11
12const mobile = stripPrefix(RENDERER_MOBILE);
13const tablet = stripPrefix(RENDERER_TABLET);
14const desktop = stripPrefix(RENDERER_DESKTOP);
15
16function testPerDeviceType(deviceType, forceMobile = false) {
17 deviceType.map((rendererEntry) => {
18 const GPUTier = getGPUTier({
19 forceRendererString: rendererEntry,
20 forceMobile,
21 });
22
23 test(`${deviceType} -> GPUTier returns a valid tier`, () => {
24 const expected = /GPU_(MOBILE|DESKTOP)_TIER_(0|1|2|3)/;
25
26 expect(GPUTier.tier).toEqual(expect.stringMatching(expected));
27 });
28
29 test(`${deviceType} -> GPUTier returns a benchmark entry`, () => {
30 if (GPUTier.type === 'WEBGL_UNSUPPORTED') {
31 console.warn(
32 `WEBGL_UNSUPPORTED -> Entry: ${rendererEntry}, Tier: ${GPUTier.tier}, Type: ${
33 GPUTier.type
34 }`,
35 );
36 }
37 if (GPUTier.type === 'BLACKLISTED') {
38 console.warn(
39 `BLACKLISTED -> Entry: ${rendererEntry}, Tier: ${GPUTier.tier}, Type: ${GPUTier.type}`,
40 );
41 } else if (GPUTier.tier.match(/GPU_(MOBILE|DESKTOP)_TIER_0/)) {
42 console.warn(
43 `TIER 0 -> Entry: ${rendererEntry}, Tier: ${GPUTier.tier}, Type: ${GPUTier.type}`,
44 );
45 } else if (GPUTier.type === 'FALLBACK') {
46 console.log(
47 `FALLBACK -> Entry: ${rendererEntry}, Tier: ${GPUTier.tier}, Type: ${GPUTier.type}`,
48 );
49 } else {
50 // console.log(`SUCCESS -> Tier: ${GPUTier.tier}, Type: ${GPUTier.type}`);
51 }
52
53 expect(GPUTier.type).toBeDefined();
54 });
55 });
56}
57
58testPerDeviceType(mobile, true);
59testPerDeviceType(tablet, true);
60testPerDeviceType(desktop, false);