diff --git a/tests/backend/specs/api/api.js b/tests/backend/specs/api/api.js index e91cd9b34..f4a2a9650 100644 --- a/tests/backend/specs/api/api.js +++ b/tests/backend/specs/api/api.js @@ -37,7 +37,7 @@ describe(__filename, function () { describe('OpenAPI definition', function () { it('generates valid openapi definition document', function (done) { - this.timeout(150); + this.timeout(5000); api .get('/api/openapi.json') .expect((res) => { diff --git a/tests/backend/specs/api/characterEncoding.js b/tests/backend/specs/api/characterEncoding.js index f8b78ca04..72c5bdec3 100644 --- a/tests/backend/specs/api/characterEncoding.js +++ b/tests/backend/specs/api/characterEncoding.js @@ -64,7 +64,7 @@ describe(__filename, function () { describe('setHTML', function () { it('Sets the HTML of a Pad attempting to weird utf8 encoded content', function (done) { - this.timeout(150); + this.timeout(600); fs.readFile('../tests/backend/specs/api/emojis.html', 'utf8', (err, html) => { api.post(endPoint('setHTML')) .send({ @@ -82,7 +82,7 @@ describe(__filename, function () { describe('getHTML', function () { it('get the HTML of Pad with emojis', function (done) { - this.timeout(150); + this.timeout(400); api.get(`${endPoint('getHTML')}&padID=${testPadId}`) .expect((res) => { if (res.body.data.html.indexOf('🇼') === -1) { diff --git a/tests/backend/specs/api/chat.js b/tests/backend/specs/api/chat.js index c926ee8d1..9c70f690f 100644 --- a/tests/backend/specs/api/chat.js +++ b/tests/backend/specs/api/chat.js @@ -39,7 +39,7 @@ describe(__filename, function () { */ describe('createPad', function () { - this.timeout(40); + this.timeout(250); it('creates a new Pad', function (done) { api.get(`${endPoint('createPad')}&padID=${padID}`) .expect((res) => { @@ -51,7 +51,7 @@ describe(__filename, function () { }); describe('createAuthor', function () { - this.timeout(30); + this.timeout(100); it('Creates an author with a name set', function (done) { api.get(endPoint('createAuthor')) .expect((res) => { @@ -66,7 +66,7 @@ describe(__filename, function () { }); describe('appendChatMessage', function () { - this.timeout(30); + this.timeout(100); it('Adds a chat message to the pad', function (done) { api.get(`${endPoint('appendChatMessage')}&padID=${padID}&text=blalblalbha&authorID=${authorID}&time=${timestamp}`) .expect((res) => { @@ -93,7 +93,7 @@ describe(__filename, function () { }); describe('getChatHistory', function () { - this.timeout(20); + this.timeout(40); it('Gets Chat History of a Pad', function (done) { api.get(`${endPoint('getChatHistory')}&padID=${padID}`) .expect((res) => { diff --git a/tests/backend/specs/api/importexport.js b/tests/backend/specs/api/importexport.js index 43c895ae0..541dd822e 100644 --- a/tests/backend/specs/api/importexport.js +++ b/tests/backend/specs/api/importexport.js @@ -246,7 +246,7 @@ describe(__filename, function () { }); it('setHTML', function (done) { - this.timeout(100); + this.timeout(150); api.get(`${endPoint('setHTML')}&padID=${testPadId}&html=${encodeURIComponent(test.input)}`) .expect((res) => { if (res.body.code !== 0) throw new Error(`Error:${testName}`); @@ -256,7 +256,7 @@ describe(__filename, function () { }); it('getHTML', function (done) { - this.timeout(100); + this.timeout(150); api.get(`${endPoint('getHTML')}&padID=${testPadId}`) .expect((res) => { const gotHtml = res.body.data.html; diff --git a/tests/backend/specs/api/importexportGetPost.js b/tests/backend/specs/api/importexportGetPost.js index 095ff78ff..3fef95aaf 100644 --- a/tests/backend/specs/api/importexportGetPost.js +++ b/tests/backend/specs/api/importexportGetPost.js @@ -40,7 +40,7 @@ describe(__filename, function () { describe('API Versioning', function () { it('finds the version tag', async function () { - this.timeout(100); + this.timeout; await agent.get('/api/') .expect(200) .expect((res) => assert(res.body.currentVersion)); diff --git a/tests/backend/specs/caching_middleware.js b/tests/backend/specs/caching_middleware.js index bc98c601a..769a21476 100644 --- a/tests/backend/specs/caching_middleware.js +++ b/tests/backend/specs/caching_middleware.js @@ -71,7 +71,7 @@ describe(__filename, function () { settings.minify = false; }); it('gets packages uncompressed without Accept-Encoding gzip', async function () { - this.timeout(1500); + this.timeout(2500); await Promise.all(packages.map(async (resource) => agent.get(resource) .set('Accept-Encoding', fantasyEncoding) .use(disableAutoDeflate) diff --git a/tests/backend/specs/contentcollector.js b/tests/backend/specs/contentcollector.js index 157440cd1..13a1cf116 100644 --- a/tests/backend/specs/contentcollector.js +++ b/tests/backend/specs/contentcollector.js @@ -285,7 +285,7 @@ describe(__filename, function () { } it(testObj.description, async function () { - this.timeout(150); + this.timeout(250); const $ = cheerio.load(testObj.html); // Load HTML into Cheerio const doc = $('body')[0]; // Creates a dom-like representation of HTML // Create an empty attribute pool diff --git a/tests/backend/specs/hooks.js b/tests/backend/specs/hooks.js index b985aa250..21fb41bb5 100644 --- a/tests/backend/specs/hooks.js +++ b/tests/backend/specs/hooks.js @@ -95,13 +95,13 @@ describe(__filename, function () { describe('basic behavior', function () { it('passes hook name', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn) => { assert.equal(hn, hookName); }; callHookFnSync(hook); }); it('passes context', async function () { - this.timeout(10); + this.timeout(30); for (const val of ['value', null, undefined]) { hook.hook_fn = (hn, ctx) => { assert.equal(ctx, val); }; callHookFnSync(hook, val); @@ -109,7 +109,7 @@ describe(__filename, function () { }); it('returns the value provided to the callback', async function () { - this.timeout(10); + this.timeout(30); for (const val of ['value', null, undefined]) { hook.hook_fn = (hn, ctx, cb) => { cb(ctx); }; assert.equal(callHookFnSync(hook, val), val); @@ -117,7 +117,7 @@ describe(__filename, function () { }); it('returns the value returned by the hook function', async function () { - this.timeout(10); + this.timeout(30); for (const val of ['value', null, undefined]) { // Must not have the cb parameter otherwise returning undefined will error. hook.hook_fn = (hn, ctx) => ctx; @@ -126,19 +126,19 @@ describe(__filename, function () { }); it('does not catch exceptions', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = () => { throw new Error('test exception'); }; assert.throws(() => callHookFnSync(hook), {message: 'test exception'}); }); it('callback returns undefined', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn, ctx, cb) => { assert.equal(cb('foo'), undefined); }; callHookFnSync(hook); }); it('checks for deprecation', async function () { - this.timeout(10); + this.timeout(30); sinon.stub(console, 'warn'); hooks.deprecationNotices[hookName] = 'test deprecation'; callHookFnSync(hook); @@ -149,7 +149,7 @@ describe(__filename, function () { }); describe('supported hook function styles', function () { - this.timeout(10); + this.timeout(30); for (const tc of supportedSyncHookFunctions) { it(tc.name, async function () { sinon.stub(console, 'warn'); @@ -168,7 +168,7 @@ describe(__filename, function () { }); describe('bad hook function behavior (other than double settle)', function () { - this.timeout(10); + this.timeout(30); const promise1 = Promise.resolve('val1'); const promise2 = Promise.resolve('val2'); @@ -248,7 +248,7 @@ describe(__filename, function () { if (step1.async && step2.async) continue; it(`${step1.name} then ${step2.name} (diff. outcomes) -> log+throw`, async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn, ctx, cb) => { step1.fn(cb, new Error(ctx.ret1), ctx.ret1); return step2.fn(cb, new Error(ctx.ret2), ctx.ret2); @@ -312,7 +312,7 @@ describe(__filename, function () { if (step1.rejects !== step2.rejects) continue; it(`${step1.name} then ${step2.name} (same outcome) -> only log`, async function () { - this.timeout(10); + this.timeout(30); const err = new Error('val'); hook.hook_fn = (hn, ctx, cb) => { step1.fn(cb, err, 'val'); @@ -338,32 +338,32 @@ describe(__filename, function () { describe('hooks.callAll', function () { describe('basic behavior', function () { it('calls all in order', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(1), makeHook(2), makeHook(3)); assert.deepEqual(hooks.callAll(hookName), [1, 2, 3]); }); it('passes hook name', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn) => { assert.equal(hn, hookName); }; hooks.callAll(hookName); }); it('undefined context -> {}', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn, ctx) => { assert.deepEqual(ctx, {}); }; hooks.callAll(hookName); }); it('null context -> {}', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn, ctx) => { assert.deepEqual(ctx, {}); }; hooks.callAll(hookName, null); }); it('context unmodified', async function () { - this.timeout(10); + this.timeout(30); const wantContext = {}; hook.hook_fn = (hn, ctx) => { assert.equal(ctx, wantContext); }; hooks.callAll(hookName, wantContext); @@ -372,40 +372,40 @@ describe(__filename, function () { describe('result processing', function () { it('no registered hooks (undefined) -> []', async function () { - this.timeout(10); + this.timeout(30); delete plugins.hooks.testHook; assert.deepEqual(hooks.callAll(hookName), []); }); it('no registered hooks (empty list) -> []', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; assert.deepEqual(hooks.callAll(hookName), []); }); it('flattens one level', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(1), makeHook([2]), makeHook([[3]])); assert.deepEqual(hooks.callAll(hookName), [1, 2, [3]]); }); it('filters out undefined', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(), makeHook([2]), makeHook([[3]])); assert.deepEqual(hooks.callAll(hookName), [2, [3]]); }); it('preserves null', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(null), makeHook([2]), makeHook([[3]])); assert.deepEqual(hooks.callAll(hookName), [null, 2, [3]]); }); it('all undefined -> []', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(), makeHook()); assert.deepEqual(hooks.callAll(hookName), []); @@ -418,13 +418,13 @@ describe(__filename, function () { describe('basic behavior', function () { it('passes hook name', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn) => { assert.equal(hn, hookName); }; await callHookFnAsync(hook); }); it('passes context', async function () { - this.timeout(10); + this.timeout(30); for (const val of ['value', null, undefined]) { hook.hook_fn = (hn, ctx) => { assert.equal(ctx, val); }; await callHookFnAsync(hook, val); @@ -432,7 +432,7 @@ describe(__filename, function () { }); it('returns the value provided to the callback', async function () { - this.timeout(10); + this.timeout(30); for (const val of ['value', null, undefined]) { hook.hook_fn = (hn, ctx, cb) => { cb(ctx); }; assert.equal(await callHookFnAsync(hook, val), val); @@ -441,7 +441,7 @@ describe(__filename, function () { }); it('returns the value returned by the hook function', async function () { - this.timeout(10); + this.timeout(30); for (const val of ['value', null, undefined]) { // Must not have the cb parameter otherwise returning undefined will never resolve. hook.hook_fn = (hn, ctx) => ctx; @@ -451,31 +451,31 @@ describe(__filename, function () { }); it('rejects if it throws an exception', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = () => { throw new Error('test exception'); }; await assert.rejects(callHookFnAsync(hook), {message: 'test exception'}); }); it('rejects if rejected Promise passed to callback', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn, ctx, cb) => cb(Promise.reject(new Error('test exception'))); await assert.rejects(callHookFnAsync(hook), {message: 'test exception'}); }); it('rejects if rejected Promise returned', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn, ctx, cb) => Promise.reject(new Error('test exception')); await assert.rejects(callHookFnAsync(hook), {message: 'test exception'}); }); it('callback returns undefined', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn, ctx, cb) => { assert.equal(cb('foo'), undefined); }; await callHookFnAsync(hook); }); it('checks for deprecation', async function () { - this.timeout(10); + this.timeout(30); sinon.stub(console, 'warn'); hooks.deprecationNotices[hookName] = 'test deprecation'; await callHookFnAsync(hook); @@ -568,7 +568,7 @@ describe(__filename, function () { for (const tc of supportedSyncHookFunctions.concat(supportedHookFunctions)) { it(tc.name, async function () { - this.timeout(10); + this.timeout(30); sinon.stub(console, 'warn'); sinon.stub(console, 'error'); hook.hook_fn = tc.fn; @@ -716,7 +716,7 @@ describe(__filename, function () { if (step1.name.startsWith('return ') || step1.name === 'throw') continue; for (const step2 of behaviors) { it(`${step1.name} then ${step2.name} (diff. outcomes) -> log+throw`, async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = (hn, ctx, cb) => { step1.fn(cb, new Error(ctx.ret1), ctx.ret1); return step2.fn(cb, new Error(ctx.ret2), ctx.ret2); @@ -770,7 +770,7 @@ describe(__filename, function () { if (step1.rejects !== step2.rejects) continue; it(`${step1.name} then ${step2.name} (same outcome) -> only log`, async function () { - this.timeout(10); + this.timeout(30); const err = new Error('val'); hook.hook_fn = (hn, ctx, cb) => { step1.fn(cb, err, 'val'); @@ -796,7 +796,7 @@ describe(__filename, function () { describe('hooks.aCallAll', function () { describe('basic behavior', function () { it('calls all asynchronously, returns values in order', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; // Delete the boilerplate hook -- this test doesn't use it. let nextIndex = 0; const hookPromises = []; @@ -831,25 +831,25 @@ describe(__filename, function () { }); it('passes hook name', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = async (hn) => { assert.equal(hn, hookName); }; await hooks.aCallAll(hookName); }); it('undefined context -> {}', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = async (hn, ctx) => { assert.deepEqual(ctx, {}); }; await hooks.aCallAll(hookName); }); it('null context -> {}', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = async (hn, ctx) => { assert.deepEqual(ctx, {}); }; await hooks.aCallAll(hookName, null); }); it('context unmodified', async function () { - this.timeout(10); + this.timeout(30); const wantContext = {}; hook.hook_fn = async (hn, ctx) => { assert.equal(ctx, wantContext); }; await hooks.aCallAll(hookName, wantContext); @@ -858,13 +858,13 @@ describe(__filename, function () { describe('aCallAll callback', function () { it('exception in callback rejects', async function () { - this.timeout(10); + this.timeout(30); const p = hooks.aCallAll(hookName, {}, () => { throw new Error('test exception'); }); await assert.rejects(p, {message: 'test exception'}); }); it('propagates error on exception', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = () => { throw new Error('test exception'); }; await hooks.aCallAll(hookName, {}, (err) => { assert(err instanceof Error); @@ -873,14 +873,14 @@ describe(__filename, function () { }); it('propagages null error on success', async function () { - this.timeout(10); + this.timeout(30); await hooks.aCallAll(hookName, {}, (err) => { assert(err == null, `got non-null error: ${err}`); }); }); it('propagages results on success', async function () { - this.timeout(10); + this.timeout(30); hook.hook_fn = () => 'val'; await hooks.aCallAll(hookName, {}, (err, results) => { assert.deepEqual(results, ['val']); @@ -888,47 +888,47 @@ describe(__filename, function () { }); it('returns callback return value', async function () { - this.timeout(10); + this.timeout(30); assert.equal(await hooks.aCallAll(hookName, {}, () => 'val'), 'val'); }); }); describe('result processing', function () { it('no registered hooks (undefined) -> []', async function () { - this.timeout(10); + this.timeout(30); delete plugins.hooks[hookName]; assert.deepEqual(await hooks.aCallAll(hookName), []); }); it('no registered hooks (empty list) -> []', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; assert.deepEqual(await hooks.aCallAll(hookName), []); }); it('flattens one level', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(1), makeHook([2]), makeHook([[3]])); assert.deepEqual(await hooks.aCallAll(hookName), [1, 2, [3]]); }); it('filters out undefined', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(), makeHook([2]), makeHook([[3]]), makeHook(Promise.resolve())); assert.deepEqual(await hooks.aCallAll(hookName), [2, [3]]); }); it('preserves null', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(null), makeHook([2]), makeHook(Promise.resolve(null))); assert.deepEqual(await hooks.aCallAll(hookName), [null, 2, null]); }); it('all undefined -> []', async function () { - this.timeout(10); + this.timeout(30); testHooks.length = 0; testHooks.push(makeHook(), makeHook(Promise.resolve())); assert.deepEqual(await hooks.aCallAll(hookName), []);