@@ -195,4 +195,133 @@ test.describe("oc-client : events", () => {
195195 expect ( result . eventObject ) . toEqual ( { type : "null:event" } ) ;
196196 expect ( result . data ) . toBeNull ( ) ;
197197 } ) ;
198+
199+ test ( "should have debug configuration that defaults to false" , async ( {
200+ page,
201+ } ) => {
202+ const result = await page . evaluate ( ( ) => {
203+ return {
204+ hasDebugProperty : "debug" in oc . conf ,
205+ debugDefaultValue : oc . conf . debug ,
206+ canSetDebug : ( ( ) => {
207+ oc . conf . debug = true ;
208+ const canSet = oc . conf . debug === true ;
209+ oc . conf . debug = false ;
210+ return canSet ;
211+ } ) ( ) ,
212+ } ;
213+ } ) ;
214+
215+ expect ( result . hasDebugProperty ) . toBe ( false ) ;
216+ expect ( result . debugDefaultValue ) . toBeUndefined ( ) ;
217+ expect ( result . canSetDebug ) . toBe ( true ) ;
218+ } ) ;
219+
220+ test ( "should log events when debug is enabled" , async ( { page } ) => {
221+ const result = await page . evaluate ( ( ) => {
222+ return new Promise ( ( resolve ) => {
223+ const logCalls = [ ] ;
224+ const originalConsoleLog = console . log ;
225+ console . log = ( ...args ) => {
226+ logCalls . push ( args ) ;
227+ } ;
228+
229+ oc . conf . debug = true ;
230+
231+ oc . events . fire ( "trace:test1" , { message : "hello" } ) ;
232+ oc . events . fire ( "trace:test2" , { count : 42 } ) ;
233+ oc . events . fire ( "trace:test3" ) ;
234+
235+ // Restore console.log
236+ console . log = originalConsoleLog ;
237+
238+ oc . conf . debug = false ;
239+
240+ setTimeout ( ( ) => {
241+ resolve ( {
242+ logCallCount : logCalls . length ,
243+ logCalls : logCalls ,
244+ } ) ;
245+ } , 10 ) ;
246+ } ) ;
247+ } ) ;
248+
249+ expect ( result . logCallCount ) . toBe ( 3 ) ;
250+
251+ expect ( result . logCalls [ 0 ] [ 0 ] ) . toBe (
252+ 'OC event fired: "trace:test1" with data: {"message":"hello"}' ,
253+ ) ;
254+
255+ expect ( result . logCalls [ 1 ] [ 0 ] ) . toBe (
256+ 'OC event fired: "trace:test2" with data: {"count":42}' ,
257+ ) ;
258+
259+ expect ( result . logCalls [ 2 ] [ 0 ] ) . toBe ( 'OC event fired: "trace:test3"' ) ;
260+ } ) ;
261+
262+ test ( "should not log events when debug is disabled" , async ( { page } ) => {
263+ const result = await page . evaluate ( ( ) => {
264+ return new Promise ( ( resolve ) => {
265+ const logCalls = [ ] ;
266+ const originalConsoleLog = console . log ;
267+ console . log = ( ...args ) => {
268+ logCalls . push ( args ) ;
269+ } ;
270+
271+ oc . conf . debug = false ;
272+
273+ oc . events . fire ( "notrace:test1" , { message : "hello" } ) ;
274+ oc . events . fire ( "notrace:test2" , { count : 42 } ) ;
275+
276+ // Restore console.log
277+ console . log = originalConsoleLog ;
278+
279+ setTimeout ( ( ) => {
280+ resolve ( {
281+ logCallCount : logCalls . length ,
282+ logCalls : logCalls ,
283+ } ) ;
284+ } , 10 ) ;
285+ } ) ;
286+ } ) ;
287+
288+ expect ( result . logCallCount ) . toBe ( 0 ) ;
289+ } ) ;
290+
291+ test ( "should not interfere with normal event handling when debug is enabled" , async ( {
292+ page,
293+ } ) => {
294+ const result = await page . evaluate ( ( ) => {
295+ return new Promise ( ( resolve ) => {
296+ // Track event data
297+ window . eventData = [ ] ;
298+
299+ // Set up event listener
300+ oc . events . on ( "normal:event" , ( event , data ) => {
301+ window . eventData . push ( {
302+ eventType : event . type ,
303+ data : data ,
304+ } ) ;
305+ } ) ;
306+
307+ oc . conf . debug = true ;
308+
309+ // Fire event
310+ oc . events . fire ( "normal:event" , { test : "data" } ) ;
311+
312+ oc . conf . debug = false ;
313+
314+ setTimeout ( ( ) => {
315+ resolve ( {
316+ eventCount : window . eventData . length ,
317+ eventData : window . eventData [ 0 ] ,
318+ } ) ;
319+ } , 10 ) ;
320+ } ) ;
321+ } ) ;
322+
323+ expect ( result . eventCount ) . toBe ( 1 ) ;
324+ expect ( result . eventData . eventType ) . toBe ( "normal:event" ) ;
325+ expect ( result . eventData . data ) . toEqual ( { test : "data" } ) ;
326+ } ) ;
198327} ) ;
0 commit comments