tweak webhook overflow test (#590)

This test appears to fail if toasts aren't issued fast enough
(perhaps because an empty toast list may count as truthy?).
I might be missing something since I don't understand the
purpose of waitForOverflownMessageToDisappear apart from
lengthening a timeout.
This commit is contained in:
Paul Fitzpatrick 2023-07-26 11:20:20 +01:00 committed by GitHub
parent a77e82388b
commit bc599916f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,7 +16,6 @@ describe('WebhookOverflow', function () {
before(async function () { before(async function () {
oldEnv = new EnvironmentSnapshot(); oldEnv = new EnvironmentSnapshot();
//host = new URL(server.getHost()).host;
process.env.ALLOWED_WEBHOOK_DOMAINS = '*'; process.env.ALLOWED_WEBHOOK_DOMAINS = '*';
process.env.GRIST_MAX_QUEUE_SIZE = '2'; process.env.GRIST_MAX_QUEUE_SIZE = '2';
await server.restart(); await server.restart();
@ -50,45 +49,31 @@ describe('WebhookOverflow', function () {
await driver.sendKeys(...keys); await driver.sendKeys(...keys);
} }
it('should show a message when overflown', async function () { it('should show a message when overflowed', async function () {
await gu.openPage('Table2'); await gu.openPage('Table2');
await gu.getCell('A', 1).click(); await gu.getCell('A', 1).click();
await gu.enterCell('123'); await gu.enterCell('123');
await gu.getCell('B', 1).click(); await gu.getCell('B', 1).click();
await enterCellWithoutWaitingOnServer('124'); await enterCellWithoutWaitingOnServer('124');
const toast = await driver.wait(() => gu.getToasts(), 10000); await gu.waitToPass(async () => {
const toast = await gu.getToasts();
assert.include(toast, 'New changes are temporarily suspended. Webhooks queue overflowed.' + assert.include(toast, 'New changes are temporarily suspended. Webhooks queue overflowed.' +
' Please check webhooks settings, remove invalid webhooks, and clean the queue.\ngo to webhook settings'); ' Please check webhooks settings, remove invalid webhooks, and clean the queue.\ngo to webhook settings');
}, 4000);
}); });
it('message should disappear after clearing queue', async function () { it('message should disappear after clearing queue', async function () {
await openWebhookPageWithoutWaitForServer(); await openWebhookPageWithoutWaitForServer();
await driver.findContent('button', /Clear Queue/).click(); await driver.findContent('button', /Clear Queue/).click();
await gu.waitForServer(); await gu.waitForServer();
await waitForOverflownMessageToDisappear(); await gu.waitToPass(async () => {
const toast = await driver.wait(() => gu.getToasts()); const toast = await gu.getToasts();
assert.notInclude(toast, 'New changes are temporarily suspended. Webhooks queue overflowed.' + assert.notInclude(toast, 'New changes are temporarily suspended. Webhooks queue overflowed.' +
' Please check webhooks settings, remove invalid webhooks, and clean the queue.\ngo to webhook settings'); ' Please check webhooks settings, remove invalid webhooks, and clean the queue.\ngo to webhook settings');
}, 12500);
}); });
}); });
async function waitForOverflownMessageToDisappear(maxWait = 12500) {
await driver.wait(async () => {
try {
for (;;) {
const toasts = await gu.getToasts();
const filteredToasts = toasts.find(t => t=='New changes are temporarily suspended. Webhooks queue overflowed.' +
' Please check webhooks settings, remove invalid webhooks, and clean the queue.\ngo to webhook settings');
if (!filteredToasts) {
return true;
}
}
} catch (e) {
return false;
}
}, maxWait, 'Overflown message did not disappear');
}
async function openWebhookPageWithoutWaitForServer() { async function openWebhookPageWithoutWaitForServer() {
await openDocumentSettings(); await openDocumentSettings();
const button = await driver.findContentWait('a', /Manage Webhooks/, 3000); const button = await driver.findContentWait('a', /Manage Webhooks/, 3000);