Skip to content

Commit 5d34051

Browse files
committed
add test
1 parent 23f9ccf commit 5d34051

3 files changed

Lines changed: 33 additions & 2 deletions

File tree

packages/insomnia-smoke-test/tests/smoke/pre-request-script.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,35 @@ test('can cancel pre-request script', async ({ app, page }) => {
2727
await page.getByRole('button', { name: 'Cancel Request' }).click();
2828
await page.click('text=Request was cancelled');
2929
});
30+
31+
test('handle hidden browser window getting closed', async ({ app, page }) => {
32+
test.slow(process.platform === 'darwin' || process.platform === 'win32', 'Slow app start on these platforms');
33+
34+
const text = await loadFixture('pre-request-collection.yaml');
35+
await app.evaluate(async ({ clipboard }, text) => clipboard.writeText(text), text);
36+
37+
await page.getByRole('button', { name: 'Create in project' }).click();
38+
await page.getByRole('menuitemradio', { name: 'Import' }).click();
39+
await page.locator('[data-test-id="import-from-clipboard"]').click();
40+
await page.getByRole('button', { name: 'Scan' }).click();
41+
await page.getByRole('dialog').getByRole('button', { name: 'Import' }).click();
42+
43+
await page.getByText('Pre-request Scripts').click();
44+
45+
await page.getByLabel('Request Collection').getByTestId('Long running task').press('Enter');
46+
await page.getByTestId('request-pane').getByRole('button', { name: 'Send' }).click();
47+
48+
await page.getByTestId('settings-button').click();
49+
await page.getByLabel('Request timeout (ms)').fill('1');
50+
await page.getByRole('button', { name: '' }).click();
51+
await page.getByRole('button', { name: 'Send' }).click();
52+
53+
await page.getByText('Timeout: Pre-request script took too long').click();
54+
await page.getByRole('tab', { name: 'Timeline' }).click();
55+
await page.getByRole('tab', { name: 'Preview ' }).click();
56+
const windows = await app.windows();
57+
const hiddenWindow = windows[1];
58+
hiddenWindow.close();
59+
await page.getByRole('button', { name: 'Send' }).click();
60+
await page.getByText('Timeout: Hidden browser window is not responding').click();
61+
});

packages/insomnia/src/hidden-window.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ window.bridge.onmessage(async (data, callback) => {
1010
const timeout = data.context.timeout || 5000;
1111
const timeoutPromise = new Promise(resolve => {
1212
setTimeout(() => {
13-
resolve({ error: 'Timeout: Operation took too long' });
13+
resolve({ error: 'Timeout: Pre-request script took too long' });
1414
}, timeout);
1515
});
1616
const result = await Promise.race([timeoutPromise, runPreRequestScript(data)]);

packages/insomnia/src/network/network.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ export const tryToExecutePreRequestScript = async (
9494
const timeout = settings.timeout || 5000;
9595
const timeoutPromise = new Promise((_, reject) => {
9696
setTimeout(() => {
97-
cancelRequestById(request._id);
9897
reject(new Error('Timeout: Hidden browser window is not responding'));
9998
// Add one extra second to ensure the hidden browser window has had a chance to return its timeout
10099
// TODO: restart the hidden browser window

0 commit comments

Comments
 (0)