Skip to content

Commit 7512bd5

Browse files
committed
refactor: wip
1 parent 920b233 commit 7512bd5

File tree

7 files changed

+73
-116
lines changed

7 files changed

+73
-116
lines changed

packages/utils/mocks/omit-trace-json.unit.test.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ describe('normalizeAndFormatEvents', () => {
7878
ph: 'i',
7979
name: 'plugin-eslint:run-eslint:start',
8080
pid: 10_001,
81-
tid: 1,
81+
tid: 0,
8282
ts: 1_700_000_005_000_000,
8383
args: {
8484
data: {
@@ -119,7 +119,7 @@ describe('normalizeAndFormatEvents', () => {
119119
ph: 'b',
120120
name: 'plugin-eslint:run-eslint',
121121
pid: 10_001,
122-
tid: 1,
122+
tid: 0,
123123
ts: 1_700_000_005_000_000,
124124
id2: { local: '0x1' },
125125
args: {
@@ -167,16 +167,16 @@ describe('normalizeAndFormatEvents', () => {
167167
ph: 'i',
168168
name: 'TracingStartedInBrowser',
169169
pid: 10_001,
170-
tid: 1,
170+
tid: 0,
171171
ts: 1_700_000_005_000_000,
172172
args: {
173173
data: {
174-
frameTreeNodeId: 1_000_101, // 10001 + '0' + 1
174+
frameTreeNodeId: 805_700,
175175
frames: [
176176
{
177-
frame: 'FRAME0P10001T1',
177+
frame: 'FRAME0P8057T0',
178178
isInPrimaryMainFrame: true,
179-
processId: 10_001,
179+
processId: 8057,
180180
url: 'trace.json',
181181
},
182182
],
@@ -270,7 +270,7 @@ describe('normalizeAndFormatEvents', () => {
270270
ph: 'i',
271271
name: 'test',
272272
pid: 10_001,
273-
tid: 1,
273+
tid: 0,
274274
ts: 1_700_000_005_000_000,
275275
args: {
276276
detail: { type: 'mark' },
@@ -309,13 +309,13 @@ describe('loadAndOmitTraceJsonl', () => {
309309
await expect(loadAndOmitTraceJsonl('trace.jsonl')).resolves.toStrictEqual([
310310
{
311311
pid: 10_001,
312-
tid: 1,
312+
tid: 0,
313313
ts: 1_700_000_005_000_000,
314314
args: { data: { detail: { devtools: { dataType: 'track-entry' } } } },
315315
},
316316
{
317317
pid: 10_001,
318-
tid: 1,
318+
tid: 0,
319319
ts: 1_700_000_005_000_100,
320320
args: { detail: { devtools: { dataType: 'track-entry' } } },
321321
},
@@ -353,7 +353,7 @@ describe('loadAndOmitTraceJson', () => {
353353

354354
await expect(loadAndOmitTraceJson('trace.json')).resolves.toStrictEqual({
355355
traceEvents: [
356-
{ pid: 10_001, tid: 1, ts: 1_700_000_005_000_000, name: 'test' },
356+
{ pid: 10_001, tid: 0, ts: 1_700_000_005_000_000, name: 'test' },
357357
],
358358
});
359359
});

packages/utils/src/lib/performance-observer.unit.test.ts

Lines changed: 35 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ describe('PerformanceObserverSink', () => {
6969
sink,
7070
encodePerfEntry,
7171
flushThreshold: 1,
72+
debug: false,
7273
};
7374

7475
performance.clearMarks();
@@ -86,6 +87,7 @@ describe('PerformanceObserverSink', () => {
8687
new PerformanceObserverSink({
8788
sink,
8889
encodePerfEntry,
90+
debug: false,
8991
}),
9092
).not.toThrow();
9193
expect(MockPerformanceObserver.instances).toHaveLength(0);
@@ -98,6 +100,7 @@ describe('PerformanceObserverSink', () => {
98100
...options,
99101
captureBufferedEntries: true,
100102
flushThreshold: 10,
103+
debug: false,
101104
}),
102105
).not.toThrow();
103106
expect(MockPerformanceObserver.instances).toHaveLength(0);
@@ -272,6 +275,7 @@ describe('PerformanceObserverSink', () => {
272275
const observer = new PerformanceObserverSink({
273276
sink,
274277
encodePerfEntry,
278+
debug: false,
275279
});
276280

277281
expect(() => observer.flush()).not.toThrow();
@@ -284,6 +288,7 @@ describe('PerformanceObserverSink', () => {
284288
sink,
285289
encodePerfEntry,
286290
flushThreshold: 10,
291+
debug: false,
287292
});
288293
sink.open();
289294
observer.subscribe();
@@ -324,6 +329,7 @@ describe('PerformanceObserverSink', () => {
324329
sink,
325330
encodePerfEntry: failingEncode,
326331
flushThreshold: 10,
332+
debug: false,
327333
});
328334

329335
observer.subscribe();
@@ -337,35 +343,8 @@ describe('PerformanceObserverSink', () => {
337343
expect(stats.queued).toBe(0);
338344
});
339345

340-
describe('debug mode with env var', () => {
341-
const originalEnv = process.env.CP_PROFILER_DEBUG;
342-
343-
beforeEach(() => {
344-
// Restore original env before each test
345-
if (originalEnv === undefined) {
346-
// eslint-disable-next-line functional/immutable-data
347-
delete process.env.DEBUG;
348-
} else {
349-
// eslint-disable-next-line functional/immutable-data
350-
process.env.DEBUG = originalEnv;
351-
}
352-
});
353-
354-
afterEach(() => {
355-
// Restore original env after each test
356-
if (originalEnv === undefined) {
357-
// eslint-disable-next-line functional/immutable-data
358-
delete process.env.DEBUG;
359-
} else {
360-
// eslint-disable-next-line functional/immutable-data
361-
process.env.DEBUG = originalEnv;
362-
}
363-
});
364-
365-
it('creates performance mark when encode fails and debug mode is enabled via env var', () => {
366-
// eslint-disable-next-line functional/immutable-data
367-
process.env.DEBUG = 'true';
368-
346+
describe('debug mode', () => {
347+
it('creates performance mark when encode fails and debug mode is enabled', () => {
369348
const failingEncode = vi.fn(() => {
370349
throw new Error('EncodeError');
371350
});
@@ -374,6 +353,7 @@ describe('PerformanceObserverSink', () => {
374353
sink,
375354
encodePerfEntry: failingEncode,
376355
flushThreshold: 10,
356+
debug: true,
377357
});
378358

379359
observer.subscribe();
@@ -394,9 +374,6 @@ describe('PerformanceObserverSink', () => {
394374
});
395375

396376
it('does not create performance mark when encode fails and debug mode is disabled', () => {
397-
// eslint-disable-next-line functional/immutable-data
398-
delete process.env.DEBUG;
399-
400377
const failingEncode = vi.fn(() => {
401378
throw new Error('EncodeError');
402379
});
@@ -405,6 +382,7 @@ describe('PerformanceObserverSink', () => {
405382
sink,
406383
encodePerfEntry: failingEncode,
407384
flushThreshold: 10,
385+
debug: false,
408386
});
409387

410388
performance.clearMarks();
@@ -425,9 +403,6 @@ describe('PerformanceObserverSink', () => {
425403
});
426404

427405
it('handles encode errors for unnamed entries correctly', () => {
428-
// eslint-disable-next-line functional/immutable-data
429-
process.env.DEBUG = 'true';
430-
431406
const failingEncode = vi.fn(() => {
432407
throw new Error('EncodeError');
433408
});
@@ -436,6 +411,7 @@ describe('PerformanceObserverSink', () => {
436411
sink,
437412
encodePerfEntry: failingEncode,
438413
flushThreshold: 10,
414+
debug: true,
439415
});
440416

441417
observer.subscribe();
@@ -453,9 +429,6 @@ describe('PerformanceObserverSink', () => {
453429
});
454430

455431
it('handles non-Error objects thrown from encode function', () => {
456-
// eslint-disable-next-line functional/immutable-data
457-
process.env.DEBUG = 'true';
458-
459432
const failingEncode = vi.fn(() => {
460433
throw 'String error';
461434
});
@@ -464,6 +437,7 @@ describe('PerformanceObserverSink', () => {
464437
sink,
465438
encodePerfEntry: failingEncode,
466439
flushThreshold: 10,
440+
debug: true,
467441
});
468442

469443
observer.subscribe();
@@ -498,6 +472,7 @@ describe('PerformanceObserverSink', () => {
498472
sink,
499473
encodePerfEntry: failingEncode,
500474
flushThreshold: 10,
475+
debug: false,
501476
});
502477

503478
observer.subscribe();
@@ -527,6 +502,7 @@ describe('PerformanceObserverSink', () => {
527502
sink: failingSink as any,
528503
encodePerfEntry,
529504
flushThreshold: 10,
505+
debug: false,
530506
});
531507

532508
observer.subscribe();
@@ -553,6 +529,7 @@ describe('PerformanceObserverSink', () => {
553529
encodePerfEntry,
554530
maxQueueSize: 20,
555531
flushThreshold: 10,
532+
debug: false,
556533
});
557534

558535
expect(observer.getStats()).toStrictEqual(
@@ -568,6 +545,7 @@ describe('PerformanceObserverSink', () => {
568545
sink,
569546
encodePerfEntry,
570547
flushThreshold: 10,
548+
debug: false,
571549
});
572550

573551
observer.subscribe();
@@ -589,6 +567,7 @@ describe('PerformanceObserverSink', () => {
589567
encodePerfEntry,
590568
maxQueueSize: smallQueueSize,
591569
flushThreshold: smallQueueSize,
570+
debug: false,
592571
});
593572

594573
const flushSpy = vi.spyOn(observer, 'flush').mockImplementation(() => {});
@@ -617,6 +596,7 @@ describe('PerformanceObserverSink', () => {
617596
sink,
618597
encodePerfEntry,
619598
flushThreshold: 2,
599+
debug: false,
620600
});
621601

622602
observer.subscribe();
@@ -653,6 +633,7 @@ describe('PerformanceObserverSink', () => {
653633
encodePerfEntry: (entry: PerformanceEntry) => [
654634
`${entry.name}:${entry.duration}`,
655635
],
636+
debug: false,
656637
});
657638

658639
observer.subscribe();
@@ -671,6 +652,7 @@ describe('PerformanceObserverSink', () => {
671652
sink,
672653
encodePerfEntry,
673654
flushThreshold: 10,
655+
debug: false,
674656
});
675657

676658
expect(observer.getStats().addedSinceLastFlush).toBe(0);
@@ -706,52 +688,29 @@ describe('PerformanceObserverSink', () => {
706688
});
707689

708690
describe('debug getter', () => {
709-
const originalEnv = process.env.CP_PROFILER_DEBUG;
710-
711-
beforeEach(() => {
712-
// eslint-disable-next-line functional/immutable-data
713-
delete process.env.DEBUG;
714-
});
715-
716-
afterEach(() => {
717-
if (originalEnv === undefined) {
718-
// eslint-disable-next-line functional/immutable-data
719-
delete process.env.DEBUG;
720-
} else {
721-
// eslint-disable-next-line functional/immutable-data
722-
process.env.DEBUG = originalEnv;
723-
}
724-
});
725-
726-
it('returns false when debug env var is not set', () => {
727-
const observer = new PerformanceObserverSink(options);
691+
it('returns false when debug is disabled', () => {
692+
const observer = new PerformanceObserverSink({
693+
...options,
694+
debug: false,
695+
});
728696

729697
expect(observer.debug).toBeFalse();
730698
});
731699

732-
it('returns true when debug env var is set to "true"', () => {
733-
// eslint-disable-next-line functional/immutable-data
734-
process.env.DEBUG = 'true';
735-
736-
const observer = new PerformanceObserverSink(options);
700+
it('returns true when debug is enabled', () => {
701+
const observer = new PerformanceObserverSink({
702+
...options,
703+
debug: true,
704+
});
737705

738706
expect(observer.debug).toBeTrue();
739707
});
740708

741-
it('returns false when debug env var is set to a value other than "true"', () => {
742-
// eslint-disable-next-line functional/immutable-data
743-
process.env.DEBUG = 'false';
744-
745-
const observer = new PerformanceObserverSink(options);
746-
747-
expect(observer.debug).toBeFalse();
748-
});
749-
750-
it('returns false when debug env var is set to empty string', () => {
751-
// eslint-disable-next-line functional/immutable-data
752-
process.env.DEBUG = '';
753-
754-
const observer = new PerformanceObserverSink(options);
709+
it('returns false when debug is disabled via options', () => {
710+
const observer = new PerformanceObserverSink({
711+
...options,
712+
debug: false,
713+
});
755714

756715
expect(observer.debug).toBeFalse();
757716
});
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"traceEvents":[{"cat":"devtools.timeline","ph":"i","name":"TracingStartedInBrowser","pid":10001,"tid":1,"ts":1700000005000000,"args":{"data":{"frameTreeNodeId":1000101,"frames":[{"frame":"FRAME0P10001T1","isInPrimaryMainFrame":true,"isOutermostMainFrame":true,"name":"","processId":10001,"url":"generated-trace"}],"persistentIds":true}}},{"cat":"devtools.timeline","pid":10001,"tid":1,"ts":1700000005000000,"ph":"X","name":"[trace padding start]","dur":20000,"args":{}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000100,"name":"debug:transition","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"dataType\":\"marker\",\"color\":\"warning\",\"tooltipText\":\"Profiler transition: idle -> running\",\"properties\":[[\"From\",\"idle\"],[\"To\",\"running\"],[\"Reason\",\"enable\"],[\"prefix\",\"\"],[\"enabled\",true],[\"debug\",true],[\"tracks\",null],[\"trackDefaults\",{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}],[\"profilerState\",\"idle\"],[\"sharderState\",\"active\"],[\"groupId\",\"debugMode-test\"],[\"shardCount\",0],[\"isFinalized\",false],[\"isCleaned\",false],[\"finalFilePath\",\"/Users/michael_hladky/WebstormProjects/cli/tmp/int/utils/debugMode-test/trace.debugMode-test.json\"],[\"shardFileCount\",0],[\"shardFiles\",[]],[\"isCoordinator\",true],[\"shardOpen\",false],[\"shardPath\",\"/Users/michael_hladky/WebstormProjects/cli/tmp/int/utils/debugMode-test/trace.20260201-160235-016.99588.1.7.jsonl\"],[\"isSubscribed\",false],[\"queued\",0],[\"dropped\",0],[\"written\",0],[\"maxQueueSize\",10000],[\"flushThreshold\",20],[\"addedSinceLastFlush\",0],[\"buffered\",true]]}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000200,"name":"PID:99588: Enable profiler","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"dataType\":\"marker\",\"tooltipText\":\"set enable to true\"}}"}}},{"cat":"devtools.timeline","pid":10001,"tid":1,"ts":1700000005000300,"ph":"X","name":"[trace padding end]","dur":20000,"args":{}}],"metadata":{"source":"DevTools","startTime":"2026-01-28T14:29:27.995Z","hardwareConcurrency":1,"dataOrigin":"TraceEvents"}}
1+
{"traceEvents":[{"cat":"devtools.timeline","ph":"i","name":"TracingStartedInBrowser","pid":10001,"tid":1,"ts":1700000005000000,"args":{"data":{"frameTreeNodeId":1000101,"frames":[{"frame":"FRAME0P10001T1","isInPrimaryMainFrame":true,"isOutermostMainFrame":true,"name":"","processId":10001,"url":"generated-trace"}],"persistentIds":true}}},{"cat":"devtools.timeline","pid":10001,"tid":1,"ts":1700000005000000,"ph":"X","name":"[trace padding start]","dur":20000,"args":{}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000100,"name":"Enable profiler","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"dataType\":\"marker\",\"tooltipText\":\"set enable to true\"}}"}}},{"cat":"devtools.timeline","pid":10001,"tid":1,"ts":1700000005000200,"ph":"X","name":"[trace padding end]","dur":20000,"args":{}}],"metadata":{"source":"DevTools","startTime":"2026-01-28T14:29:27.995Z","hardwareConcurrency":1,"dataOrigin":"TraceEvents"}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"traceEvents":[{"cat":"devtools.timeline","ph":"i","name":"TracingStartedInBrowser","pid":10001,"tid":1,"ts":1700000005000000,"args":{"data":{"frameTreeNodeId":1000101,"frames":[{"frame":"FRAME0P10001T1","isInPrimaryMainFrame":true,"isOutermostMainFrame":true,"name":"","processId":10001,"url":"generated-trace"}],"persistentIds":true}}},{"cat":"devtools.timeline","pid":10001,"tid":1,"ts":1700000005000000,"ph":"X","name":"[trace padding start]","dur":20000,"args":{}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000100,"name":"PID:99588: Enable profiler","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"dataType\":\"marker\",\"tooltipText\":\"set enable to true\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000200,"name":"write-j-jl:PID:99588 sync-measure:start","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000300,"name":"write-j-jl:PID:99588 sync-measure","ph":"b","id2":{"local":"0x1"},"args":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000400,"name":"write-j-jl:PID:99588 sync-measure","ph":"e","id2":{"local":"0x1"},"args":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000500,"name":"write-j-jl:PID:99588 sync-measure:end","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000600,"name":"write-j-jl:PID:99588 async-measure:start","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000700,"name":"write-j-jl:PID:99588 async-measure","ph":"b","id2":{"local":"0x2"},"args":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000800,"name":"write-j-jl:PID:99588 async-measure","ph":"e","id2":{"local":"0x2"},"args":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000900,"name":"write-j-jl:PID:99588 async-measure:end","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005001000,"name":"PID:99588: Disable profiler","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"dataType\":\"marker\",\"tooltipText\":\"set enable to false\"}}"}}},{"cat":"devtools.timeline","pid":10001,"tid":1,"ts":1700000005001100,"ph":"X","name":"[trace padding end]","dur":20000,"args":{}}],"metadata":{"source":"DevTools","startTime":"2026-01-28T14:29:27.995Z","hardwareConcurrency":1,"dataOrigin":"TraceEvents"}}
1+
{"traceEvents":[{"cat":"devtools.timeline","ph":"i","name":"TracingStartedInBrowser","pid":10001,"tid":1,"ts":1700000005000000,"args":{"data":{"frameTreeNodeId":1000101,"frames":[{"frame":"FRAME0P10001T1","isInPrimaryMainFrame":true,"isOutermostMainFrame":true,"name":"","processId":10001,"url":"generated-trace"}],"persistentIds":true}}},{"cat":"devtools.timeline","pid":10001,"tid":1,"ts":1700000005000000,"ph":"X","name":"[trace padding start]","dur":20000,"args":{}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000100,"name":"Enable profiler","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"dataType\":\"marker\",\"tooltipText\":\"set enable to true\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000200,"name":"write-j-jl:sync-measure:start","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000300,"name":"write-j-jl:sync-measure","ph":"b","id2":{"local":"0x1"},"args":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000400,"name":"write-j-jl:sync-measure","ph":"e","id2":{"local":"0x1"},"args":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000500,"name":"write-j-jl:sync-measure:end","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000600,"name":"write-j-jl:async-measure:start","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000700,"name":"write-j-jl:async-measure","ph":"b","id2":{"local":"0x2"},"args":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000800,"name":"write-j-jl:async-measure","ph":"e","id2":{"local":"0x2"},"args":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005000900,"name":"write-j-jl:async-measure:end","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"track\":\"int-test-track\",\"dataType\":\"track-entry\"}}"}}},{"cat":"blink.user_timing","pid":10001,"tid":1,"ts":1700000005001000,"name":"Disable profiler","ph":"I","args":{"data":{"detail":"{\"devtools\":{\"dataType\":\"marker\",\"tooltipText\":\"set enable to false\"}}"}}},{"cat":"devtools.timeline","pid":10001,"tid":1,"ts":1700000005001100,"ph":"X","name":"[trace padding end]","dur":20000,"args":{}}],"metadata":{"source":"DevTools","startTime":"2026-01-28T14:29:27.995Z","hardwareConcurrency":1,"dataOrigin":"TraceEvents"}}

0 commit comments

Comments
 (0)