import { globalTestConfig } from '../../framework/test_config.js'; import { Logger } from '../../internal/logging/logger.js'; import { TestQueryWithExpectation } from '../../internal/query/query.js'; import { setDefaultRequestAdapterOptions } from '../../util/navigator_gpu.js'; import { CTSOptions } from './options.js'; export interface WorkerTestRunRequest { query: string; expectations: TestQueryWithExpectation[]; ctsOptions: CTSOptions; } /** * Set config environment for workers with ctsOptions and return a Logger. */ export function setupWorkerEnvironment(ctsOptions: CTSOptions): Logger { const { powerPreference, compatibility } = ctsOptions; globalTestConfig.enableDebugLogs = ctsOptions.debug; globalTestConfig.unrollConstEvalLoops = ctsOptions.unrollConstEvalLoops; globalTestConfig.compatibility = compatibility; globalTestConfig.enforceDefaultLimits = ctsOptions.enforceDefaultLimits; globalTestConfig.blockAllFeatures = ctsOptions.blockAllFeatures; if (ctsOptions.subcasesBetweenAttemptingGC) { globalTestConfig.subcasesBetweenAttemptingGC = Number(ctsOptions.subcasesBetweenAttemptingGC); } if (ctsOptions.casesBetweenReplacingDevice) { globalTestConfig.casesBetweenReplacingDevice = Number(ctsOptions.casesBetweenReplacingDevice); } globalTestConfig.logToWebSocket = ctsOptions.logToWebSocket; const log = new Logger(); if (powerPreference || compatibility) { setDefaultRequestAdapterOptions({ ...(powerPreference && { powerPreference }), ...(compatibility && { featureLevel: 'compatibility' }), }); } return log; }