Integration test: simplify offline mode
This commit is contained in:
@@ -145,26 +145,6 @@ function init () {
|
|||||||
|
|
||||||
ipc.on('quitExternalPlayer', () => externalPlayer.kill())
|
ipc.on('quitExternalPlayer', () => externalPlayer.kill())
|
||||||
|
|
||||||
/**
|
|
||||||
* Test
|
|
||||||
*/
|
|
||||||
|
|
||||||
ipc.on('testOffline', function (e, isOffline) {
|
|
||||||
log('Testing, network ' + (isOffline ? 'OFFLINE' : 'ONLINE'))
|
|
||||||
windows.webtorrent.send('wt-test-offline')
|
|
||||||
|
|
||||||
// TODO: this easy way to disable networking doesn't work due to a Chrome bug.
|
|
||||||
// WebRTC is unaffected by DevTools throttling:
|
|
||||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=490143
|
|
||||||
// Also doesn't work due to an Electron bug. Node networking APIs are unaffected, only
|
|
||||||
// Chrome networking (external resources, XHRs, etc) are affected.
|
|
||||||
// const wins = [windows.main.win, windows.webtorrent.win]
|
|
||||||
// wins.forEach(function (win) {
|
|
||||||
// if (isOffline) win.webContents.session.enableNetworkEmulation({ offline: true })
|
|
||||||
// else win.webContents.session.disableNetworkEmulation()
|
|
||||||
// !})
|
|
||||||
})
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Message passing
|
* Message passing
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -95,20 +95,6 @@ function init () {
|
|||||||
ipc.on('wt-select-files', (e, infoHash, selections) =>
|
ipc.on('wt-select-files', (e, infoHash, selections) =>
|
||||||
selectFiles(infoHash, selections))
|
selectFiles(infoHash, selections))
|
||||||
|
|
||||||
// TODO: remove this once the following bugs are fixed:
|
|
||||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=490143
|
|
||||||
// https://github.com/electron/electron/issues/7212
|
|
||||||
ipc.on('wt-test-offline', () => {
|
|
||||||
console.log('Test, going OFFLINE')
|
|
||||||
client = window.client = new WebTorrent({
|
|
||||||
peerId: PEER_ID,
|
|
||||||
tracker: false,
|
|
||||||
dht: false,
|
|
||||||
webSeeds: false
|
|
||||||
})
|
|
||||||
listenToClientEvents()
|
|
||||||
})
|
|
||||||
|
|
||||||
ipc.send('ipcReadyWebTorrent')
|
ipc.send('ipcReadyWebTorrent')
|
||||||
|
|
||||||
window.addEventListener('error', (e) =>
|
window.addEventListener('error', (e) =>
|
||||||
@@ -418,3 +404,17 @@ function getTorrent (torrentKey) {
|
|||||||
function onError (err) {
|
function onError (err) {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: remove this once the following bugs are fixed:
|
||||||
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=490143
|
||||||
|
// https://github.com/electron/electron/issues/7212
|
||||||
|
window.testOfflineMode = function () {
|
||||||
|
console.log('Test, going OFFLINE')
|
||||||
|
client = window.client = new WebTorrent({
|
||||||
|
peerId: PEER_ID,
|
||||||
|
tracker: false,
|
||||||
|
dht: false,
|
||||||
|
webSeeds: false
|
||||||
|
})
|
||||||
|
listenToClientEvents()
|
||||||
|
}
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 704 KiB After Width: | Height: | Size: 701 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
@@ -35,17 +35,13 @@ function waitForLoad (app, t, opts) {
|
|||||||
return app.start().then(function () {
|
return app.start().then(function () {
|
||||||
return app.client.waitUntilWindowLoaded()
|
return app.client.waitUntilWindowLoaded()
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
// Offline mode? Disable internet in the webtorrent window
|
// Offline mode
|
||||||
// TODO. For now, just run integration tests with internet turned off.
|
if (opts.offline) app.webContents.executeJavaScript('testOfflineMode()')
|
||||||
// Spectron is poorly documented, and contrary to the docs, webContents.session is missing
|
|
||||||
// That is the correct API (in theory) to put the app in offline mode
|
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
// Switch to the main window. Index 0 is apparently the hidden webtorrent window...
|
// Switch to the main window. Index 0 is apparently the hidden webtorrent window...
|
||||||
return app.client.windowByIndex(1)
|
return app.client.windowByIndex(1)
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return app.client.waitUntilWindowLoaded()
|
return app.client.waitUntilWindowLoaded()
|
||||||
}).then(function () {
|
|
||||||
if (!opts.online) app.electron.ipcRenderer.send('testOffline', true)
|
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return app.webContents.getTitle()
|
return app.webContents.getTitle()
|
||||||
}).then(function (title) {
|
}).then(function (title) {
|
||||||
|
|||||||
@@ -36,8 +36,7 @@ test('torrent-list: start, stop, and delete torrents', function (t) {
|
|||||||
.then(() => setup.screenshotCreateOrCompare(app, t, 'torrent-list-hover'))
|
.then(() => setup.screenshotCreateOrCompare(app, t, 'torrent-list-hover'))
|
||||||
// Click download on the first torrent, start downloading
|
// Click download on the first torrent, start downloading
|
||||||
.then(() => app.client.click('.icon.download'))
|
.then(() => app.client.click('.icon.download'))
|
||||||
.then(() => app.client.waitUntilTextExists('.torrent-list', 'peer'))
|
.then(() => app.client.waitUntilTextExists('.torrent-list', '0%'))
|
||||||
.then(() => setup.wait(100e3))
|
|
||||||
.then(() => setup.screenshotCreateOrCompare(app, t, 'torrent-list-start-download'))
|
.then(() => setup.screenshotCreateOrCompare(app, t, 'torrent-list-start-download'))
|
||||||
// Click download on the first torrent again, stop downloading
|
// Click download on the first torrent again, stop downloading
|
||||||
.then(() => app.client.click('.icon.download'))
|
.then(() => app.client.click('.icon.download'))
|
||||||
|
|||||||
Reference in New Issue
Block a user