@@ -166,15 +166,23 @@ describe("request tracing", function () {
166166
167167 afterEach(() => {
168168 // Restore the original values after each test
169- (global as any).navigator = originalNavigator;
169+ // global.navigator was added in node 21, https://nodejs.org/api/globals.html#navigator_1
170+ // global.navigator only has a getter, so we have to use Object.defineProperty to modify it
171+ Object.defineProperty(global, "navigator", {
172+ value: originalNavigator,
173+ configurable: true
174+ });
170175 (global as any).WorkerNavigator = originalWorkerNavigator;
171176 (global as any).WorkerGlobalScope = originalWorkerGlobalScope;
172177 (global as any).importScripts = originalImportScripts;
173178 });
174179
175180 it("should identify WebWorker environment", async () => {
176181 (global as any).WorkerNavigator = function WorkerNavigator() { };
177- (global as any).navigator = new (global as any).WorkerNavigator();
182+ Object.defineProperty(global, "navigator", {
183+ value: new (global as any).WorkerNavigator(),
184+ configurable: true
185+ });
178186 (global as any).WorkerGlobalScope = function WorkerGlobalScope() { };
179187 (global as any).importScripts = function importScripts() { };
180188
@@ -188,7 +196,10 @@ describe("request tracing", function () {
188196 });
189197
190198 it("is not WebWorker when WorkerNavigator is undefined", async () => {
191- (global as any).navigator = { userAgent: "node.js" } as any; // Mock navigator
199+ Object.defineProperty(global, "navigator", {
200+ value: { userAgent: "node.js" } as any, // Mock navigator
201+ configurable: true
202+ });
192203 (global as any).WorkerNavigator = undefined;
193204 (global as any).WorkerGlobalScope = function WorkerGlobalScope() { };
194205 (global as any).importScripts = function importScripts() { };
@@ -203,7 +214,10 @@ describe("request tracing", function () {
203214 });
204215
205216 it("is not WebWorker when navigator is not an instance of WorkerNavigator", async () => {
206- (global as any).navigator = { userAgent: "node.js" } as any; // Mock navigator but not an instance of WorkerNavigator
217+ Object.defineProperty(global, "navigator", {
218+ value: { userAgent: "node.js" } as any, // Mock navigator but not an instance of WorkerNavigator
219+ configurable: true
220+ });
207221 (global as any).WorkerNavigator = function WorkerNavigator() { };
208222 (global as any).WorkerGlobalScope = function WorkerGlobalScope() { };
209223 (global as any).importScripts = function importScripts() { };
@@ -219,7 +233,10 @@ describe("request tracing", function () {
219233
220234 it("is not WebWorker when WorkerGlobalScope is undefined", async () => {
221235 (global as any).WorkerNavigator = function WorkerNavigator() { };
222- (global as any).navigator = new (global as any).WorkerNavigator();
236+ Object.defineProperty(global, "navigator", {
237+ value: new (global as any).WorkerNavigator(),
238+ configurable: true
239+ });
223240 (global as any).WorkerGlobalScope = undefined;
224241 (global as any).importScripts = function importScripts() { };
225242
@@ -234,7 +251,10 @@ describe("request tracing", function () {
234251
235252 it("is not WebWorker when importScripts is undefined", async () => {
236253 (global as any).WorkerNavigator = function WorkerNavigator() { };
237- (global as any).navigator = new (global as any).WorkerNavigator();
254+ Object.defineProperty(global, "navigator", {
255+ value: new (global as any).WorkerNavigator(),
256+ configurable: true
257+ });
238258 (global as any).WorkerGlobalScope = function WorkerGlobalScope() { };
239259 (global as any).importScripts = undefined;
240260
@@ -345,4 +365,4 @@ describe("request tracing", function () {
345365 expect(correlationContext.includes("Host=Web")).eq(false);
346366 });
347367 });
348- });
368+ });
0 commit comments