'use strict'; const { WPTRunner } = require('../common/wpt'); const runner = new WPTRunner('streams'); // Set a script that will be executed in the worker before running the tests. runner.pretendGlobalThisAs('Window'); runner.setInitScript(` // Simulate global postMessage for enqueue-with-detached-buffer.window.js function postMessage(value, origin, transferList) { const mc = new MessageChannel(); mc.port1.postMessage(value, transferList); mc.port2.close(); } // TODO(@jasnell): This is a bit of a hack to get the idl harness test // working. Later we should investigate a better approach. // See: https://github.com/nodejs/node/pull/39062#discussion_r659383373 Object.defineProperties(global, { DedicatedWorkerGlobalScope: { get() { // Pretend that we're a DedicatedWorker, but *only* for the // IDL harness. For everything else, keep the JavaScript shell // environment. if (new Error().stack.includes('idlharness.js')) return global.constructor; else return function() {}; } } }); `); runner.runJsTests();