@@ -476,6 +476,73 @@ test.describe('$Window Component', () => {
476
476
} ) ;
477
477
} ) ;
478
478
479
+ test . describe ( 'setTitlebarIconSize()' , ( ) => {
480
+ test ( 'should pick the icon size used in the titlebar' , async ( { page } ) => {
481
+ const h$window = await page . evaluateHandle ( ( ) => {
482
+ const $window = $Window ( {
483
+ title : 'Test Window' ,
484
+ icons : {
485
+ 16 : new Text ( '16x16 placeholder' ) ,
486
+ 32 : new Text ( '32x32 placeholder' ) ,
487
+ any : new Text ( 'any size placeholder' ) ,
488
+ } ,
489
+ } ) ;
490
+ return $window ;
491
+ } ) ;
492
+ await expect ( page . locator ( '.window' ) . getByText ( / 1 6 x 1 6 p l a c e h o l d e r / ) ) . toBeVisible ( ) ;
493
+ await h$window . evaluate ( ( $window ) => {
494
+ $window . setTitlebarIconSize ( 32 ) ;
495
+ } ) ;
496
+ await expect ( page . locator ( '.window' ) . getByText ( / 3 2 x 3 2 p l a c e h o l d e r / ) ) . toBeVisible ( ) ;
497
+ await h$window . evaluate ( ( $window ) => {
498
+ $window . setTitlebarIconSize ( 128 ) ;
499
+ } ) ;
500
+ await expect ( page . locator ( '.window' ) . getByText ( / a n y s i z e p l a c e h o l d e r / ) ) . toBeVisible ( ) ;
501
+ } ) ;
502
+ test ( 'should dispatch icon-change event' , async ( { page } ) => {
503
+ let logs : ConsoleMessage [ ] = [ ] ;
504
+ page . on ( 'console' , msg => {
505
+ logs . push ( msg ) ;
506
+ } ) ;
507
+
508
+ const iconChangeEvents = await page . evaluate ( async ( ) => {
509
+ const $window = $Window ( {
510
+ title : 'Test Window' ,
511
+ icons : {
512
+ 16 : new Text ( '16x16 placeholder' ) ,
513
+ 32 : new Text ( '32x32 placeholder' ) ,
514
+ any : new Text ( 'any size placeholder' ) ,
515
+ } ,
516
+ } ) ;
517
+ let a = 0 , b = 0 , c = 0 , d = 0 ;
518
+ // legacy jQuery event
519
+ $ ( $window . element ) . on ( 'icon-change' , ( ) => {
520
+ a ++ ;
521
+ } ) ;
522
+ // legacy jQuery event with deprecated jQuery inheritance
523
+ // @ts -ignore
524
+ $window . on ( 'icon-change' , ( ) => {
525
+ b ++ ;
526
+ } ) ;
527
+ // native browser event (not supported)
528
+ $window . element . addEventListener ( 'icon-change' , ( ) => {
529
+ c ++ ;
530
+ } ) ;
531
+ // new minimalist event system (TODO)
532
+ // $window.onIconChanged(() => {
533
+ // d++;
534
+ // });
535
+ $window . setTitlebarIconSize ( 16 ) ;
536
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 50 ) ) ;
537
+ return { a, b, c, d } ;
538
+ } ) ;
539
+ expect ( iconChangeEvents ) . toEqual ( { a : 1 , b : 1 , c : 0 , d : 0 } ) ;
540
+ expect ( logs ) . toHaveLength ( 1 ) ;
541
+ expect ( logs [ 0 ] . text ( ) ) . toBe ( "DEPRECATED: use $($window.element).on instead of $window.on directly. Eventually jQuery will be removed from the library." ) ;
542
+ expect ( logs [ 0 ] . type ( ) ) . toBe ( 'trace' ) ;
543
+ } ) ;
544
+ } ) ;
545
+
479
546
test . describe ( 'setMenuBar()' , ( ) => {
480
547
test ( 'should add menu bar, which is hidden when minimized' , async ( { page } ) => {
481
548
const h$window = await page . evaluateHandle ( ( ) => {
0 commit comments