Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / utils / logs.iframe.test.ts
blobd20aecc30f68f73e0a82638c69f33e1453217822
1 import { Logger } from './logs';
3 describe('Logger Iframe', () => {
4     let logger: Logger;
6     beforeEach(() => {
7         Object.defineProperty(window, 'top', { value: {} });
8         logger = new Logger('test-logger-iframe');
9         console.error = jest.fn();
10         console.log = jest.fn();
11     });
13     afterEach(() => {
14         jest.clearAllMocks();
15     });
17     test('should post message to parent frame on Ctrl+Shift+H in child frame', () => {
18         const spyPostMessage = jest.spyOn(window.parent, 'postMessage');
19         logger.debug('test');
20         const event = new KeyboardEvent('keydown', {
21             key: 'H',
22             ctrlKey: true,
23             shiftKey: true,
24         });
25         window.dispatchEvent(event);
26         expect(window.self === window.top).toEqual(false);
27         expect(spyPostMessage).toHaveBeenCalledWith({ type: '@proton/utils/logs:downloadLogs' }, '*');
28     });
30     test('should post message to parent frame on .error() within child frame', () => {
31         const spyPostMessage = jest.spyOn(window.parent, 'postMessage');
32         const err = new Error('test');
33         logger.error(err);
34         expect(window.self === window.top).toEqual(false);
35         expect(spyPostMessage).toHaveBeenCalledWith(
36             { type: '@proton/utils/logs:report', tag: 'test-logger-iframe', args: [err] },
37             '*'
38         );
39     });
40 });