19 lines
706 B
TypeScript
19 lines
706 B
TypeScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { frameSummary } from '../src/scene/frameSummary.ts';
|
|
|
|
test('frame summary uses nearest-rank p95 and retains long foreground stalls', () => {
|
|
const values = [...Array(94).fill(16), ...Array(5).fill(40), 500];
|
|
const result = frameSummary(values);
|
|
assert.equal(result.p95Ms, 40);
|
|
assert.equal(result.meanMs, 22.04);
|
|
assert.equal(result.over50Ms, 1);
|
|
assert.equal(result.overBudget, 6);
|
|
assert.ok(Math.abs(result.fps! - 1000 / 22.04) < 1e-10);
|
|
});
|
|
|
|
test('empty render sample cannot be reported as passing FPS', () => {
|
|
assert.equal(frameSummary([]).fps, null);
|
|
assert.equal(frameSummary([]).p95Ms, null);
|
|
});
|