mattermost-desktop/test/specs/app_test.js
Devin Binnie 66a2c3f7b1
[MM-19327] Remove Finder from desktop app (#1515)
* [MM-19327] Remove Finder from desktop app

* Lint fix

* Commenting out flaky test

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2021-03-24 10:19:41 -04:00

152 lines
5.6 KiB
JavaScript

// Copyright (c) 2015-2016 Yuya Ochiai
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
'use strict';
const fs = require('fs');
const env = require('../modules/environment');
describe('application', function desc() {
this.timeout(30000);
beforeEach(() => {
env.createTestUserDataDir();
env.cleanTestConfig();
this.app = env.getSpectronApp();
return this.app.start();
});
afterEach(async () => {
if (this.app && this.app.isRunning()) {
await this.app.stop();
}
});
// it('should show two windows if there is no config file', async () => {
// await this.app.client.waitUntilWindowLoaded();
// const count = await this.app.client.getWindowCount();
// count.should.equal(2);
// const opened = await this.app.browserWindow.isDevToolsOpened();
// opened.should.be.false;
// const visible = await this.app.browserWindow.isVisible();
// visible.should.be.true;
// });
if (process.platform === 'darwin') {
it.skip('should show closed window with cmd+tab', async () => {
// Unable to utilize Command key press due to: https://bugs.chromium.org/p/chromedriver/issues/detail?id=3023#c2
await this.app.client.waitUntilWindowLoaded();
await this.app.client.keys(['Meta', 'w']);
let visible = await this.app.browserWindow.isVisible();
visible.should.be.false;
this.app.client.keys(['Meta', 'Tab']);
visible = await this.app.browserWindow.isVisible();
visible.should.be.true;
});
}
it.skip('should restore window bounds', async () => {
// bounds seems to be incorrectly calculated in some environments
// - Windows 10: OK
// - CircleCI: NG
const expectedBounds = {x: 100, y: 200, width: 300, height: 400};
fs.writeFileSync(env.boundsInfoPath, JSON.stringify(expectedBounds));
await this.app.restart();
const bounds = await this.app.browserWindow.getBounds();
bounds.should.deep.equal(expectedBounds);
});
it('should NOT restore window bounds if the origin is located on outside of viewarea', async () => {
// bounds seems to be incorrectly calculated in some environments (e.g. CircleCI)
// - Windows 10: OK
// - CircleCI: NG
fs.writeFileSync(env.boundsInfoPath, JSON.stringify({x: -100000, y: 200, width: 300, height: 400}));
await this.app.restart();
let bounds = await this.app.browserWindow.getBounds();
bounds.x.should.satisfy((x) => (x > -10000));
fs.writeFileSync(env.boundsInfoPath, JSON.stringify({x: 100, y: 200000, width: 300, height: 400}));
await this.app.restart();
bounds = await this.app.browserWindow.getBounds();
bounds.y.should.satisfy((y) => (y < 10000));
});
// it('should show settings.html when there is no config file', async () => {
// await this.app.client.waitUntilWindowLoaded();
// await this.app.client.pause(1000);
// const url = await this.app.client.getUrl();
// url.should.match(/\/settings.html$/);
// const existing = await this.app.client.isExisting('#newServerModal');
// existing.should.equal(true);
// });
// it('should show index.html when there is config file', async () => {
// const config = {
// version: 2,
// teams: [{
// name: 'example',
// url: env.mattermostURL,
// order: 0,
// }, {
// name: 'github',
// url: 'https://github.com/',
// order: 1,
// }],
// showTrayIcon: false,
// trayIconTheme: 'light',
// minimizeToTray: false,
// notifications: {
// flashWindow: 0,
// bounceIcon: false,
// bounceIconType: 'informational',
// },
// showUnreadBadge: true,
// useSpellChecker: true,
// enableHardwareAcceleration: true,
// autostart: true,
// darkMode: false,
// };
// fs.writeFileSync(env.configFilePath, JSON.stringify(config));
// await this.app.restart();
// const url = await this.app.client.getUrl();
// url.should.match(/\/index.html$/);
// });
// it('should upgrade v0 config file', async () => {
// const Config = require('../../src/common/config').default;
// const newConfig = new Config(env.configFilePath);
// const oldConfig = {
// url: env.mattermostURL,
// };
// fs.writeFileSync(env.configFilePath, JSON.stringify(oldConfig));
// await this.app.restart();
// const url = await this.app.client.getUrl();
// url.should.match(/\/index.html$/);
// const str = fs.readFileSync(env.configFilePath, 'utf8');
// const upgradedConfig = JSON.parse(str);
// upgradedConfig.version.should.equal(newConfig.defaultData.version);
// });
// it.skip('should be stopped when the app instance already exists', (done) => {
// const secondApp = env.getSpectronApp();
// // In the correct case, 'start().then' is not called.
// // So need to use setTimeout in order to finish this test.
// const timer = setTimeout(() => {
// done();
// }, 3000);
// secondApp.start().then(() => {
// clearTimeout(timer);
// return secondApp.stop();
// }).then(() => {
// done(new Error('Second app instance exists'));
// });
});