@quake2ts/test-utils 0.0.776 → 0.0.778
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +9555 -5949
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +108 -35
- package/dist/index.d.ts +108 -35
- package/dist/index.js +9557 -5935
- package/dist/index.js.map +1 -1
- package/package.json +14 -12
- package/src/engine/helpers/webgl-playwright.ts +206 -0
- package/src/engine/helpers/webgl-renderer-injector.ts +91 -0
- package/src/index.ts +7 -0
- package/src/visual/animation-snapshots.ts +191 -0
package/dist/index.d.cts
CHANGED
|
@@ -9,8 +9,8 @@ export { ConfigStringEntry, Cvar, DLight, DynamicLightManager, IndexBuffer, Part
|
|
|
9
9
|
import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, GameSaveFile, LevelState, MonsterMove, DamageMod, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, PlayerClient } from '@quake2ts/game';
|
|
10
10
|
import { NetworkTransport, Server, ServerStatic, Client, ClientState as ClientState$1, ClientFrame } from '@quake2ts/server';
|
|
11
11
|
import { ImageData, Canvas } from '@napi-rs/canvas';
|
|
12
|
+
import { Browser, BrowserContext, Page } from 'playwright';
|
|
12
13
|
import { vec3 } from 'gl-matrix';
|
|
13
|
-
import { Page } from 'playwright';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Interface for the BinaryWriter mock.
|
|
@@ -1759,6 +1759,104 @@ declare function createWebGLRenderTestSetup(width?: number, height?: number): Pr
|
|
|
1759
1759
|
*/
|
|
1760
1760
|
declare function renderAndCaptureWebGL(setup: WebGLRenderTestSetup, renderFn: (gl: WebGL2RenderingContext) => void): Promise<Uint8ClampedArray>;
|
|
1761
1761
|
|
|
1762
|
+
interface CaptureOptions {
|
|
1763
|
+
width: number;
|
|
1764
|
+
height: number;
|
|
1765
|
+
format?: GPUTextureFormat;
|
|
1766
|
+
}
|
|
1767
|
+
declare function captureFramebufferAsPNG(device: GPUDevice, texture: GPUTexture, options: CaptureOptions): Promise<Buffer>;
|
|
1768
|
+
declare function savePNG(pixels: Uint8ClampedArray, width: number, height: number, filepath: string): Promise<void>;
|
|
1769
|
+
declare function loadPNG(filepath: string): Promise<{
|
|
1770
|
+
data: Uint8ClampedArray;
|
|
1771
|
+
width: number;
|
|
1772
|
+
height: number;
|
|
1773
|
+
}>;
|
|
1774
|
+
interface ComparisonResult {
|
|
1775
|
+
pixelsDifferent: number;
|
|
1776
|
+
totalPixels: number;
|
|
1777
|
+
percentDifferent: number;
|
|
1778
|
+
passed: boolean;
|
|
1779
|
+
diffImage?: Uint8ClampedArray;
|
|
1780
|
+
}
|
|
1781
|
+
interface ComparisonOptions {
|
|
1782
|
+
threshold?: number;
|
|
1783
|
+
includeAA?: boolean;
|
|
1784
|
+
diffColor?: [number, number, number];
|
|
1785
|
+
maxDifferencePercent?: number;
|
|
1786
|
+
}
|
|
1787
|
+
declare function compareSnapshots(actual: Uint8ClampedArray, expected: Uint8ClampedArray, width: number, height: number, options?: ComparisonOptions): Promise<ComparisonResult>;
|
|
1788
|
+
interface SnapshotTestOptions extends ComparisonOptions {
|
|
1789
|
+
name: string;
|
|
1790
|
+
description?: string;
|
|
1791
|
+
width?: number;
|
|
1792
|
+
height?: number;
|
|
1793
|
+
updateBaseline?: boolean;
|
|
1794
|
+
snapshotDir?: string;
|
|
1795
|
+
}
|
|
1796
|
+
declare function getSnapshotPath(name: string, type: 'baseline' | 'actual' | 'diff', snapshotDir?: string): string;
|
|
1797
|
+
declare function expectSnapshot(pixels: Uint8ClampedArray, options: SnapshotTestOptions): Promise<void>;
|
|
1798
|
+
declare function renderAndExpectSnapshot(setup: RenderTestSetup, renderFn: (pass: GPURenderPassEncoder) => void, options: Omit<SnapshotTestOptions, 'width' | 'height'>): Promise<void>;
|
|
1799
|
+
|
|
1800
|
+
/**
|
|
1801
|
+
* Playwright-based WebGL testing utilities for quake2ts renderer
|
|
1802
|
+
*
|
|
1803
|
+
* Provides helpers for running WebGL visual tests in a real browser using Playwright.
|
|
1804
|
+
* Loads the actual built renderer code via a static server, similar to e2e-tests.
|
|
1805
|
+
*/
|
|
1806
|
+
|
|
1807
|
+
interface WebGLPlaywrightSetup {
|
|
1808
|
+
browser: Browser;
|
|
1809
|
+
context: BrowserContext;
|
|
1810
|
+
page: Page;
|
|
1811
|
+
width: number;
|
|
1812
|
+
height: number;
|
|
1813
|
+
server?: any;
|
|
1814
|
+
cleanup: () => Promise<void>;
|
|
1815
|
+
}
|
|
1816
|
+
interface WebGLPlaywrightOptions {
|
|
1817
|
+
width?: number;
|
|
1818
|
+
height?: number;
|
|
1819
|
+
headless?: boolean;
|
|
1820
|
+
}
|
|
1821
|
+
/**
|
|
1822
|
+
* Creates a Playwright-based WebGL test setup with the actual quake2ts renderer.
|
|
1823
|
+
* Starts a static server, loads the built renderer bundle, and provides a clean testing environment.
|
|
1824
|
+
*/
|
|
1825
|
+
declare function createWebGLPlaywrightSetup(options?: WebGLPlaywrightOptions): Promise<WebGLPlaywrightSetup>;
|
|
1826
|
+
/**
|
|
1827
|
+
* Executes a rendering function using the actual quake2ts renderer and captures the result.
|
|
1828
|
+
* This must happen in a single page.evaluate() call to preserve WebGL state.
|
|
1829
|
+
*
|
|
1830
|
+
* @param page - Playwright page
|
|
1831
|
+
* @param renderFn - Function code as string that uses window.testRenderer
|
|
1832
|
+
* @returns Captured pixel data
|
|
1833
|
+
*/
|
|
1834
|
+
declare function renderAndCaptureWebGLPlaywright(page: Page, renderFn: string): Promise<Uint8ClampedArray>;
|
|
1835
|
+
/**
|
|
1836
|
+
* Runs a WebGL visual test with the actual quake2ts renderer.
|
|
1837
|
+
*
|
|
1838
|
+
* Usage:
|
|
1839
|
+
* ```ts
|
|
1840
|
+
* await testWebGLRenderer(`
|
|
1841
|
+
* // Clear background
|
|
1842
|
+
* gl.clearColor(0, 0, 0, 1);
|
|
1843
|
+
* gl.clear(gl.COLOR_BUFFER_BIT);
|
|
1844
|
+
*
|
|
1845
|
+
* // Use renderer API
|
|
1846
|
+
* renderer.begin2D();
|
|
1847
|
+
* renderer.drawfillRect(64, 64, 128, 128, [0, 0, 1, 1]);
|
|
1848
|
+
* renderer.end2D();
|
|
1849
|
+
* `, {
|
|
1850
|
+
* name: 'blue-rect',
|
|
1851
|
+
* description: 'Blue rectangle test',
|
|
1852
|
+
* width: 256,
|
|
1853
|
+
* height: 256,
|
|
1854
|
+
* snapshotDir: __dirname
|
|
1855
|
+
* });
|
|
1856
|
+
* ```
|
|
1857
|
+
*/
|
|
1858
|
+
declare function testWebGLRenderer(renderCode: string, options: SnapshotTestOptions & WebGLPlaywrightOptions): Promise<void>;
|
|
1859
|
+
|
|
1762
1860
|
interface GeometryBuffers {
|
|
1763
1861
|
vertexBuffer: GPUBuffer;
|
|
1764
1862
|
indexBuffer?: GPUBuffer;
|
|
@@ -2089,43 +2187,18 @@ declare const simulateClientPrediction: (state: ClientState, input: UserCommand,
|
|
|
2089
2187
|
declare const createInterpolationTestData: (startState: EntityState, endState: EntityState, steps?: number) => EntityState[];
|
|
2090
2188
|
declare const verifySmoothing: (states: EntityState[]) => SmoothingAnalysis;
|
|
2091
2189
|
|
|
2092
|
-
interface
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
format?: GPUTextureFormat;
|
|
2190
|
+
interface AnimationSnapshotOptions extends SnapshotTestOptions {
|
|
2191
|
+
frameCount: number;
|
|
2192
|
+
fps?: number;
|
|
2096
2193
|
}
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
declare function loadPNG(filepath: string): Promise<{
|
|
2100
|
-
data: Uint8ClampedArray;
|
|
2101
|
-
width: number;
|
|
2102
|
-
height: number;
|
|
2103
|
-
}>;
|
|
2104
|
-
interface ComparisonResult {
|
|
2105
|
-
pixelsDifferent: number;
|
|
2194
|
+
interface AnimationSnapshotResult {
|
|
2195
|
+
passed: boolean;
|
|
2106
2196
|
totalPixels: number;
|
|
2197
|
+
totalDiffPixels: number;
|
|
2107
2198
|
percentDifferent: number;
|
|
2108
|
-
|
|
2109
|
-
diffImage?: Uint8ClampedArray;
|
|
2110
|
-
}
|
|
2111
|
-
interface ComparisonOptions {
|
|
2112
|
-
threshold?: number;
|
|
2113
|
-
includeAA?: boolean;
|
|
2114
|
-
diffColor?: [number, number, number];
|
|
2115
|
-
maxDifferencePercent?: number;
|
|
2199
|
+
frameStats: ComparisonResult[];
|
|
2116
2200
|
}
|
|
2117
|
-
declare function
|
|
2118
|
-
interface SnapshotTestOptions extends ComparisonOptions {
|
|
2119
|
-
name: string;
|
|
2120
|
-
description?: string;
|
|
2121
|
-
width?: number;
|
|
2122
|
-
height?: number;
|
|
2123
|
-
updateBaseline?: boolean;
|
|
2124
|
-
snapshotDir?: string;
|
|
2125
|
-
}
|
|
2126
|
-
declare function getSnapshotPath(name: string, type: 'baseline' | 'actual' | 'diff', snapshotDir?: string): string;
|
|
2127
|
-
declare function expectSnapshot(pixels: Uint8ClampedArray, options: SnapshotTestOptions): Promise<void>;
|
|
2128
|
-
declare function renderAndExpectSnapshot(setup: RenderTestSetup, renderFn: (pass: GPURenderPassEncoder) => void, options: Omit<SnapshotTestOptions, 'width' | 'height'>): Promise<void>;
|
|
2201
|
+
declare function expectAnimationSnapshot(renderAndCaptureFrame: (frameIndex: number) => Promise<Uint8ClampedArray>, options: AnimationSnapshotOptions): Promise<void>;
|
|
2129
2202
|
|
|
2130
2203
|
interface PlaywrightOptions {
|
|
2131
2204
|
headless?: boolean;
|
|
@@ -2208,4 +2281,4 @@ declare function compareScreenshots(baseline: Buffer, current: Buffer, threshold
|
|
|
2208
2281
|
*/
|
|
2209
2282
|
declare function createVisualTestScenario(sceneName: string): VisualScenario;
|
|
2210
2283
|
|
|
2211
|
-
export { type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLRenderTestSetup, type WebGPUContextState, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPredictionTestScenario, createProjectileEntityFactory, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLRenderTestSetup, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
|
|
2284
|
+
export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLPlaywrightOptions, type WebGLPlaywrightSetup, type WebGLRenderTestSetup, type WebGPUContextState, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPredictionTestScenario, createProjectileEntityFactory, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
|
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export { ConfigStringEntry, Cvar, DLight, DynamicLightManager, IndexBuffer, Part
|
|
|
9
9
|
import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, GameSaveFile, LevelState, MonsterMove, DamageMod, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, PlayerClient } from '@quake2ts/game';
|
|
10
10
|
import { NetworkTransport, Server, ServerStatic, Client, ClientState as ClientState$1, ClientFrame } from '@quake2ts/server';
|
|
11
11
|
import { ImageData, Canvas } from '@napi-rs/canvas';
|
|
12
|
+
import { Browser, BrowserContext, Page } from 'playwright';
|
|
12
13
|
import { vec3 } from 'gl-matrix';
|
|
13
|
-
import { Page } from 'playwright';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Interface for the BinaryWriter mock.
|
|
@@ -1759,6 +1759,104 @@ declare function createWebGLRenderTestSetup(width?: number, height?: number): Pr
|
|
|
1759
1759
|
*/
|
|
1760
1760
|
declare function renderAndCaptureWebGL(setup: WebGLRenderTestSetup, renderFn: (gl: WebGL2RenderingContext) => void): Promise<Uint8ClampedArray>;
|
|
1761
1761
|
|
|
1762
|
+
interface CaptureOptions {
|
|
1763
|
+
width: number;
|
|
1764
|
+
height: number;
|
|
1765
|
+
format?: GPUTextureFormat;
|
|
1766
|
+
}
|
|
1767
|
+
declare function captureFramebufferAsPNG(device: GPUDevice, texture: GPUTexture, options: CaptureOptions): Promise<Buffer>;
|
|
1768
|
+
declare function savePNG(pixels: Uint8ClampedArray, width: number, height: number, filepath: string): Promise<void>;
|
|
1769
|
+
declare function loadPNG(filepath: string): Promise<{
|
|
1770
|
+
data: Uint8ClampedArray;
|
|
1771
|
+
width: number;
|
|
1772
|
+
height: number;
|
|
1773
|
+
}>;
|
|
1774
|
+
interface ComparisonResult {
|
|
1775
|
+
pixelsDifferent: number;
|
|
1776
|
+
totalPixels: number;
|
|
1777
|
+
percentDifferent: number;
|
|
1778
|
+
passed: boolean;
|
|
1779
|
+
diffImage?: Uint8ClampedArray;
|
|
1780
|
+
}
|
|
1781
|
+
interface ComparisonOptions {
|
|
1782
|
+
threshold?: number;
|
|
1783
|
+
includeAA?: boolean;
|
|
1784
|
+
diffColor?: [number, number, number];
|
|
1785
|
+
maxDifferencePercent?: number;
|
|
1786
|
+
}
|
|
1787
|
+
declare function compareSnapshots(actual: Uint8ClampedArray, expected: Uint8ClampedArray, width: number, height: number, options?: ComparisonOptions): Promise<ComparisonResult>;
|
|
1788
|
+
interface SnapshotTestOptions extends ComparisonOptions {
|
|
1789
|
+
name: string;
|
|
1790
|
+
description?: string;
|
|
1791
|
+
width?: number;
|
|
1792
|
+
height?: number;
|
|
1793
|
+
updateBaseline?: boolean;
|
|
1794
|
+
snapshotDir?: string;
|
|
1795
|
+
}
|
|
1796
|
+
declare function getSnapshotPath(name: string, type: 'baseline' | 'actual' | 'diff', snapshotDir?: string): string;
|
|
1797
|
+
declare function expectSnapshot(pixels: Uint8ClampedArray, options: SnapshotTestOptions): Promise<void>;
|
|
1798
|
+
declare function renderAndExpectSnapshot(setup: RenderTestSetup, renderFn: (pass: GPURenderPassEncoder) => void, options: Omit<SnapshotTestOptions, 'width' | 'height'>): Promise<void>;
|
|
1799
|
+
|
|
1800
|
+
/**
|
|
1801
|
+
* Playwright-based WebGL testing utilities for quake2ts renderer
|
|
1802
|
+
*
|
|
1803
|
+
* Provides helpers for running WebGL visual tests in a real browser using Playwright.
|
|
1804
|
+
* Loads the actual built renderer code via a static server, similar to e2e-tests.
|
|
1805
|
+
*/
|
|
1806
|
+
|
|
1807
|
+
interface WebGLPlaywrightSetup {
|
|
1808
|
+
browser: Browser;
|
|
1809
|
+
context: BrowserContext;
|
|
1810
|
+
page: Page;
|
|
1811
|
+
width: number;
|
|
1812
|
+
height: number;
|
|
1813
|
+
server?: any;
|
|
1814
|
+
cleanup: () => Promise<void>;
|
|
1815
|
+
}
|
|
1816
|
+
interface WebGLPlaywrightOptions {
|
|
1817
|
+
width?: number;
|
|
1818
|
+
height?: number;
|
|
1819
|
+
headless?: boolean;
|
|
1820
|
+
}
|
|
1821
|
+
/**
|
|
1822
|
+
* Creates a Playwright-based WebGL test setup with the actual quake2ts renderer.
|
|
1823
|
+
* Starts a static server, loads the built renderer bundle, and provides a clean testing environment.
|
|
1824
|
+
*/
|
|
1825
|
+
declare function createWebGLPlaywrightSetup(options?: WebGLPlaywrightOptions): Promise<WebGLPlaywrightSetup>;
|
|
1826
|
+
/**
|
|
1827
|
+
* Executes a rendering function using the actual quake2ts renderer and captures the result.
|
|
1828
|
+
* This must happen in a single page.evaluate() call to preserve WebGL state.
|
|
1829
|
+
*
|
|
1830
|
+
* @param page - Playwright page
|
|
1831
|
+
* @param renderFn - Function code as string that uses window.testRenderer
|
|
1832
|
+
* @returns Captured pixel data
|
|
1833
|
+
*/
|
|
1834
|
+
declare function renderAndCaptureWebGLPlaywright(page: Page, renderFn: string): Promise<Uint8ClampedArray>;
|
|
1835
|
+
/**
|
|
1836
|
+
* Runs a WebGL visual test with the actual quake2ts renderer.
|
|
1837
|
+
*
|
|
1838
|
+
* Usage:
|
|
1839
|
+
* ```ts
|
|
1840
|
+
* await testWebGLRenderer(`
|
|
1841
|
+
* // Clear background
|
|
1842
|
+
* gl.clearColor(0, 0, 0, 1);
|
|
1843
|
+
* gl.clear(gl.COLOR_BUFFER_BIT);
|
|
1844
|
+
*
|
|
1845
|
+
* // Use renderer API
|
|
1846
|
+
* renderer.begin2D();
|
|
1847
|
+
* renderer.drawfillRect(64, 64, 128, 128, [0, 0, 1, 1]);
|
|
1848
|
+
* renderer.end2D();
|
|
1849
|
+
* `, {
|
|
1850
|
+
* name: 'blue-rect',
|
|
1851
|
+
* description: 'Blue rectangle test',
|
|
1852
|
+
* width: 256,
|
|
1853
|
+
* height: 256,
|
|
1854
|
+
* snapshotDir: __dirname
|
|
1855
|
+
* });
|
|
1856
|
+
* ```
|
|
1857
|
+
*/
|
|
1858
|
+
declare function testWebGLRenderer(renderCode: string, options: SnapshotTestOptions & WebGLPlaywrightOptions): Promise<void>;
|
|
1859
|
+
|
|
1762
1860
|
interface GeometryBuffers {
|
|
1763
1861
|
vertexBuffer: GPUBuffer;
|
|
1764
1862
|
indexBuffer?: GPUBuffer;
|
|
@@ -2089,43 +2187,18 @@ declare const simulateClientPrediction: (state: ClientState, input: UserCommand,
|
|
|
2089
2187
|
declare const createInterpolationTestData: (startState: EntityState, endState: EntityState, steps?: number) => EntityState[];
|
|
2090
2188
|
declare const verifySmoothing: (states: EntityState[]) => SmoothingAnalysis;
|
|
2091
2189
|
|
|
2092
|
-
interface
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
format?: GPUTextureFormat;
|
|
2190
|
+
interface AnimationSnapshotOptions extends SnapshotTestOptions {
|
|
2191
|
+
frameCount: number;
|
|
2192
|
+
fps?: number;
|
|
2096
2193
|
}
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
declare function loadPNG(filepath: string): Promise<{
|
|
2100
|
-
data: Uint8ClampedArray;
|
|
2101
|
-
width: number;
|
|
2102
|
-
height: number;
|
|
2103
|
-
}>;
|
|
2104
|
-
interface ComparisonResult {
|
|
2105
|
-
pixelsDifferent: number;
|
|
2194
|
+
interface AnimationSnapshotResult {
|
|
2195
|
+
passed: boolean;
|
|
2106
2196
|
totalPixels: number;
|
|
2197
|
+
totalDiffPixels: number;
|
|
2107
2198
|
percentDifferent: number;
|
|
2108
|
-
|
|
2109
|
-
diffImage?: Uint8ClampedArray;
|
|
2110
|
-
}
|
|
2111
|
-
interface ComparisonOptions {
|
|
2112
|
-
threshold?: number;
|
|
2113
|
-
includeAA?: boolean;
|
|
2114
|
-
diffColor?: [number, number, number];
|
|
2115
|
-
maxDifferencePercent?: number;
|
|
2199
|
+
frameStats: ComparisonResult[];
|
|
2116
2200
|
}
|
|
2117
|
-
declare function
|
|
2118
|
-
interface SnapshotTestOptions extends ComparisonOptions {
|
|
2119
|
-
name: string;
|
|
2120
|
-
description?: string;
|
|
2121
|
-
width?: number;
|
|
2122
|
-
height?: number;
|
|
2123
|
-
updateBaseline?: boolean;
|
|
2124
|
-
snapshotDir?: string;
|
|
2125
|
-
}
|
|
2126
|
-
declare function getSnapshotPath(name: string, type: 'baseline' | 'actual' | 'diff', snapshotDir?: string): string;
|
|
2127
|
-
declare function expectSnapshot(pixels: Uint8ClampedArray, options: SnapshotTestOptions): Promise<void>;
|
|
2128
|
-
declare function renderAndExpectSnapshot(setup: RenderTestSetup, renderFn: (pass: GPURenderPassEncoder) => void, options: Omit<SnapshotTestOptions, 'width' | 'height'>): Promise<void>;
|
|
2201
|
+
declare function expectAnimationSnapshot(renderAndCaptureFrame: (frameIndex: number) => Promise<Uint8ClampedArray>, options: AnimationSnapshotOptions): Promise<void>;
|
|
2129
2202
|
|
|
2130
2203
|
interface PlaywrightOptions {
|
|
2131
2204
|
headless?: boolean;
|
|
@@ -2208,4 +2281,4 @@ declare function compareScreenshots(baseline: Buffer, current: Buffer, threshold
|
|
|
2208
2281
|
*/
|
|
2209
2282
|
declare function createVisualTestScenario(sceneName: string): VisualScenario;
|
|
2210
2283
|
|
|
2211
|
-
export { type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLRenderTestSetup, type WebGPUContextState, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPredictionTestScenario, createProjectileEntityFactory, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLRenderTestSetup, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
|
|
2284
|
+
export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLPlaywrightOptions, type WebGLPlaywrightSetup, type WebGLRenderTestSetup, type WebGPUContextState, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPredictionTestScenario, createProjectileEntityFactory, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
|