@@ -50,6 +50,7 @@ vi.mock('../../../../Extension/src/background/api', () => ({
5050 } ,
5151 TelemetryApi : {
5252 sendEvent : vi . fn ( ) ,
53+ sendSessionStart : vi . fn ( ) . mockResolvedValue ( { versions : { } } ) ,
5354 } ,
5455} ) ) ;
5556
@@ -99,6 +100,13 @@ describe('Telemetry', () => {
99100 } ,
100101 } ) ;
101102
103+ // Reset session start state so each test starts fresh
104+ // @ts -ignore - accessing private field for testing
105+ Telemetry . isSessionStartSent = false ;
106+ // @ts -ignore - accessing private field for testing
107+ Telemetry . isSessionStartInProgress = false ;
108+ vi . mocked ( TelemetryApi . sendSessionStart ) . mockResolvedValue ( { versions : { } } ) ;
109+
102110 await Telemetry . init ( ) ;
103111 } ) ;
104112
@@ -200,6 +208,37 @@ describe('Telemetry', () => {
200208 } ) ;
201209 } ) ;
202210
211+ describe ( 'session_start' , ( ) => {
212+ test ( 'sends session_start during init when telemetry is enabled' , async ( ) => {
213+ // beforeEach calls init() with telemetry enabled
214+ expect ( TelemetryApi . sendSessionStart ) . toHaveBeenCalledTimes ( 1 ) ;
215+ } ) ;
216+
217+ test ( 'does not send session_start again on re-init' , async ( ) => {
218+ vi . clearAllMocks ( ) ;
219+ await Telemetry . init ( ) ;
220+
221+ expect ( TelemetryApi . sendSessionStart ) . not . toHaveBeenCalled ( ) ;
222+ } ) ;
223+
224+ test ( 'does not send session_start when telemetry is disabled' , async ( ) => {
225+ // @ts -ignore - accessing private field for testing
226+ Telemetry . isSessionStartSent = false ;
227+ // @ts -ignore - accessing private field for testing
228+ Telemetry . isSessionStartInProgress = false ;
229+ vi . clearAllMocks ( ) ;
230+ vi . mocked ( SettingsApi . getSetting ) . mockImplementation ( ( key ) => {
231+ if ( key === SettingOption . AllowAnonymizedUsageData ) {
232+ return false ;
233+ }
234+ return undefined ;
235+ } ) ;
236+ await Telemetry . init ( ) ;
237+
238+ expect ( TelemetryApi . sendSessionStart ) . not . toHaveBeenCalled ( ) ;
239+ } ) ;
240+ } ) ;
241+
203242 describe ( 'experiment props' , ( ) => {
204243 test ( 'does not include empty experiment fields in telemetry events' , async ( ) => {
205244 vi . spyOn ( ABTestManager , 'getVariantsForProps' ) . mockResolvedValue ( { } ) ;
0 commit comments