schildi-web/test/test-utils.js
Richard van der Hoff 238afde00a Increase the timeout for clearing indexeddbs
Chrome seems to take ages (like, 1500ms regularly) to clear out the indexeddbs,
and that's causing test timeouts. Bump the timeout to hack around it.

Also: clear both dbs in parallel (can't hurt, right?) and improve diagnostics
on the process.
2017-07-20 11:01:27 +01:00

61 lines
1.8 KiB
JavaScript

"use strict";
import Promise from 'bluebird';
/**
* Perform common actions before each test case, e.g. printing the test case
* name to stdout.
* @param {Mocha.Context} context The test context
*/
export function beforeEach(context) {
var desc = context.currentTest.fullTitle();
console.log();
console.log(desc);
console.log(new Array(1 + desc.length).join("="));
// some tests store things in localstorage. Improve independence of tests
// by making sure that they don't inherit any old state.
window.localStorage.clear();
}
/**
* returns true if the current environment supports webrtc
*/
export function browserSupportsWebRTC() {
var n = global.window.navigator;
return n.getUserMedia || n.webkitGetUserMedia ||
n.mozGetUserMedia;
}
export function deleteIndexedDB(dbName) {
return new Promise((resolve, reject) => {
if (!window.indexedDB) {
resolve();
return;
}
const startTime = Date.now();
console.log(`${startTime}: Removing indexeddb instance: ${dbName}`);
const req = window.indexedDB.deleteDatabase(dbName);
req.onblocked = () => {
console.log(`${Date.now()}: can't yet delete indexeddb ${dbName} because it is open elsewhere`);
};
req.onerror = (ev) => {
reject(new Error(
`${Date.now()}: unable to delete indexeddb ${dbName}: ${ev.target.error}`,
));
};
req.onsuccess = () => {
const now = Date.now();
console.log(`${now}: Removed indexeddb instance: ${dbName} in ${now-startTime} ms`);
resolve();
};
}).catch((e) => {
console.error(`${Date.now()}: Error removing indexeddb instance ${dbName}: ${e}`);
throw e;
});
}