diff --git a/package.json b/package.json index bfa169212..f1325ce00 100644 --- a/package.json +++ b/package.json @@ -100,8 +100,9 @@ "start": "cross-env NODE_ENV=development node scripts/start-dev-server.js", "build": "yarn rm-dist && cross-env NODE_ENV=production node scripts/build-release.js $@", "fix": "eslint . --fix", - "test": "jest --testPathPattern=node\\.js$", - "test-electron": "jest --testPathPattern=electron\\.js$ --testEnvironment=@jest-runner/electron/environment --runner=@jest-runner/electron", + "test": "jest --testPathPattern=node\\.js$ --no-cache", + "test-electron": "jest --testPathPattern=electron\\.js$ --testEnvironment=@jest-runner/electron/environment --runner=@jest-runner/electron --no-cache", + "test-with-device": "USE_ELECTRON_STUBS=1 jest --testPathPattern=device\\.js$ --detectOpenHandles --no-cache", "lint": "eslint . && flow check" }, "optionalDependencies": { diff --git a/src/__tests__/server.device.js b/src/__tests__/server.device.js new file mode 100644 index 000000000..6d5a94e51 --- /dev/null +++ b/src/__tests__/server.device.js @@ -0,0 +1,53 @@ +/** + * Copyright 2018-present Facebook. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * @format + */ + +import Server from '../server.js'; +import LogManager from '../fb-stubs/Logger'; +import reducers from '../reducers/index.js'; +import configureStore from 'redux-mock-store'; +import path from 'path'; +import os from 'os'; +import fs from 'fs'; + +let server; +const mockStore = configureStore([])(reducers(undefined, {type: 'INIT'})); + +beforeAll(() => { + // create config directory, which is usually created by static/index.js + const flipperDir = path.join(os.homedir(), '.flipper'); + if (!fs.existsSync(flipperDir)) { + fs.mkdirSync(flipperDir); + } + + server = new Server(new LogManager(), mockStore); + return server.init(); +}); + +test.skip( + 'Device can connect successfully', + done => { + var testFinished = false; + server.addListener('new-client', (client: Client) => { + console.debug('new-client ' + new Date().toString()); + setTimeout(() => { + testFinished = true; + done(); + }, 5000); + }); + server.addListener('removed-client', (id: string) => { + console.debug('removed-client ' + new Date().toString()); + if (!testFinished) { + done.fail('client disconnected too early'); + } + }); + }, + 20000, +); + +afterAll(() => { + return server.close(); +}); diff --git a/src/__tests__/server.electron.js b/src/__tests__/server.electron.js index ba8a54387..871517d1a 100644 --- a/src/__tests__/server.electron.js +++ b/src/__tests__/server.electron.js @@ -45,16 +45,6 @@ test('servers starting at ports', done => { }); }); -test.skip( - 'Layout plugin is connecting', - done => { - server.addListener('new-client', (client: Client) => { - done(); - }); - }, - 10000, -); - afterAll(() => { - server.close(); + return server.close(); }); diff --git a/static/electron-stubs.notjs b/static/electron-stubs.notjs index 57d46bbf3..c622b6505 100644 --- a/static/electron-stubs.notjs +++ b/static/electron-stubs.notjs @@ -8,5 +8,8 @@ isFocused: function() {return true;} }; }, + app: { + getVersion: function() {return '1';} + } }, }