Skip to content

Commit 68dcbd5

Browse files
committed
[meta] Test setTitlebarIconSize()
1 parent c5073a5 commit 68dcbd5

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

tests/windows.spec.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,73 @@ test.describe('$Window Component', () => {
476476
});
477477
});
478478

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(/16x16 placeholder/)).toBeVisible();
493+
await h$window.evaluate(($window) => {
494+
$window.setTitlebarIconSize(32);
495+
});
496+
await expect(page.locator('.window').getByText(/32x32 placeholder/)).toBeVisible();
497+
await h$window.evaluate(($window) => {
498+
$window.setTitlebarIconSize(128);
499+
});
500+
await expect(page.locator('.window').getByText(/any size placeholder/)).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+
479546
test.describe('setMenuBar()', () => {
480547
test('should add menu bar, which is hidden when minimized', async ({ page }) => {
481548
const h$window = await page.evaluateHandle(() => {

0 commit comments

Comments
 (0)