У меня есть многооконное электронное приложение, а именно оно состоит из окна запуска и главного окна.
Основной процесс отвечает за первое отображение модуля запуска, а после того, как все инициализируется, он получает событие через ipc и показывает главное окно, скрывающее модуль запуска.
Я использую on('close')
в главном окне, чтобы определить, когда пользователь закрывает главное окно, чтобы снова показать панель запуска и выполнить некоторую логику удаления, после того как приложение будет завершено.
this.mainWindow = new BrowserWindow({width: 1024, height: 768, webPreferences: {nodeIntegration: true}});
this.mainWindow.setMenu(null);
this.mainWindow.on('close', () => {
this.logger.debug('"close" received');
this.mainWindow.hide();
this.launcherWindow.show();
this.sendShutdown();
});
Это работает довольно хорошо, теперь я хочу провести интеграционное тестирование этого поведения со Spectron. У меня проблема с отправкой сигнала закрытия в окно, эмулируя нажатие кнопки закрытия.
it('should start shutting down the services gracefully if the user clicks on the close button', async () => {
await app.client.windowByIndex(1);
await app.client.close();
//..... expectations that verify the launcher window is visible now
});
Я проверил, что окно с индексом 1 является основным окном. Когда я вызываю app.client.close();
, главное окно закрывается, но я вижу в журналах, что событие on('close', )
главного окна не вызывается, поэтому оно не возвращается к панели запуска.
Есть ли что-то, что я пропускаю / неправильно понимаю?