perf: enforce journey budgets and reference traces
This commit is contained in:
41
tests/performance/budgets.test.ts
Normal file
41
tests/performance/budgets.test.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { classifyArtifact, evaluateBudgetTotals, PERFORMANCE_BUDGETS } from '../../scripts/lib/bundle-budgets.mjs';
|
||||
|
||||
describe('release budgets', () => {
|
||||
it('pins every exact section 14 threshold', () => {
|
||||
expect(PERFORMANCE_BUDGETS).toMatchObject({
|
||||
initialHtmlCriticalCss: 100 * 1024,
|
||||
initialApplicationJs: 120 * 1024,
|
||||
heroPoster: 220 * 1024,
|
||||
initialFonts: 120 * 1024,
|
||||
firstLiveScene: 650 * 1024,
|
||||
projectVideo: 2.5 * 1024 * 1024,
|
||||
projectVideoDurationSeconds: 10,
|
||||
projectVideoWidth: 1280,
|
||||
projectVideoHeight: 720,
|
||||
projectStill: 400 * 1024,
|
||||
chart: 100 * 1024,
|
||||
deferredProjectVisuals: 2.5 * 1024 * 1024,
|
||||
highTierExtras: 750 * 1024,
|
||||
deferredNonVideo: 3.5 * 1024 * 1024,
|
||||
imageSceneConcurrency: 2,
|
||||
videoConcurrency: 1,
|
||||
mobileTextureDimension: 2048,
|
||||
lowTierGpuEstimate: 96 * 1024 * 1024,
|
||||
highTierGpuEstimate: 192 * 1024 * 1024,
|
||||
});
|
||||
});
|
||||
|
||||
it('classifies every artifact once and keeps the scene chunk deferred', () => {
|
||||
expect(classifyArtifact('index.html', '<script src="/assets/index-a.js"></script>')).toBe('initial-html');
|
||||
expect(classifyArtifact('assets/index-a.css', '')).toBe('critical-css');
|
||||
expect(classifyArtifact('assets/index-a.js', 'import("./environment-b.js")')).toBe('initial-application-js');
|
||||
expect(classifyArtifact('assets/environment-b.js', 'three scene')).toBe('first-live-scene');
|
||||
expect(() => classifyArtifact('assets/mystery.bin', '')).toThrow(/unclassified/u);
|
||||
});
|
||||
|
||||
it('fails exact byte boundaries and accepts equality', () => {
|
||||
expect(evaluateBudgetTotals({ initialHtmlCriticalCss: 100 * 1024 }).violations).toEqual([]);
|
||||
expect(evaluateBudgetTotals({ initialHtmlCriticalCss: 100 * 1024 + 1 }).violations).toContainEqual(expect.objectContaining({ budget: 'initialHtmlCriticalCss' }));
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user