Skip to content

Commit c85a1ec

Browse files
authored
chore: refactor few flaky tests (usebruno#5958)
1 parent 68cbb7d commit c85a1ec

6 files changed

Lines changed: 42 additions & 59 deletions

File tree

tests/collection/create-requests/graphql-requests.spec.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ test.describe('Create GraphQL Requests', () => {
1616
await locators.modal.button('Delete').click();
1717

1818
// Clean up Folder GraphQL Request
19-
await locators.sidebar.folder('folder1').click();
2019
await locators.sidebar.request('Folder GraphQL Request').click({ button: 'right' });
2120
await locators.dropdown.item('Delete').click();
2221
await locators.modal.button('Delete').click();
@@ -73,15 +72,11 @@ test.describe('Create GraphQL Requests', () => {
7372
await test.step('Verify GraphQL request was created within folder1', async () => {
7473
// Open collection and verify request is not in collection root
7574
await locators.sidebar.collection('create-requests').click();
76-
const requestItem = locators.sidebar.request('Folder GraphQL Request');
77-
await expect(requestItem).not.toBeVisible();
78-
79-
// Open folder1 and verify request is present in folder1
80-
await locators.sidebar.folder('folder1').click();
81-
await expect(requestItem).toBeVisible();
75+
const folderRequestItem = locators.sidebar.folderRequest('folder1', 'Folder GraphQL Request');
76+
await expect(folderRequestItem).toBeVisible();
8277

8378
// Open request and verify it is the active request
84-
await requestItem.click();
79+
await folderRequestItem.click();
8580
await expect(locators.tabs.activeRequestTab()).toContainText('Folder GraphQL Request');
8681
});
8782
});

tests/collection/create-requests/grpc-requests.spec.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ test.describe('Create gRPC Requests', () => {
1818
await locators.modal.button('Delete').click();
1919

2020
// Clean up Folder gRPC Request
21-
await locators.sidebar.folder('folder1').click();
2221
await locators.sidebar.request('Folder gRPC Request').click({ button: 'right' });
2322
await locators.dropdown.item('Delete').click();
2423
await locators.modal.button('Delete').click();
@@ -58,7 +57,6 @@ test.describe('Create gRPC Requests', () => {
5857
await locators.sidebar.folder('folder1').click();
5958
const folderRequestItem = locators.sidebar.folderRequest('folder1', 'Root gRPC Request');
6059
await expect(folderRequestItem).not.toBeVisible();
61-
await locators.folder.chevron('folder1').click(); // close folder1
6260
});
6361

6462
await test.step('Create gRPC request via folder1 three dots menu', async () => {
@@ -76,15 +74,11 @@ test.describe('Create gRPC Requests', () => {
7674
await test.step('Verify gRPC request was created within folder1', async () => {
7775
// Open collection and verify request is not in collection root
7876
await locators.sidebar.collection('create-requests').click();
79-
const requestItem = locators.sidebar.request('Folder gRPC Request');
80-
await expect(requestItem).not.toBeVisible();
81-
82-
// Open folder1 and verify request is present in folder1
83-
await locators.sidebar.folder('folder1').click();
84-
await expect(requestItem).toBeVisible();
77+
const folderRequestItem = locators.sidebar.folderRequest('folder1', 'Folder gRPC Request');
78+
await expect(folderRequestItem).toBeVisible();
8579

8680
// Open request and verify it is the active request
87-
await requestItem.click();
81+
await folderRequestItem.click();
8882
await expect(locators.tabs.activeRequestTab()).toContainText('Folder gRPC Request');
8983
});
9084
});

tests/collection/create-requests/http-requests.spec.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ test.describe('Create HTTP Requests', () => {
1818
await locators.modal.button('Delete').click();
1919

2020
// Clean up Folder HTTP Request
21-
await locators.sidebar.folder('folder1').click();
2221
await locators.sidebar.request('Folder HTTP Request').click({ button: 'right' });
2322
await locators.dropdown.item('Delete').click();
2423
await locators.modal.button('Delete').click();
@@ -73,15 +72,11 @@ test.describe('Create HTTP Requests', () => {
7372
await test.step('Verify HTTP request was created within folder1', async () => {
7473
// Open collection and verify request is not in collection root
7574
await locators.sidebar.collection('create-requests').click();
76-
const requestItem = locators.sidebar.request('Folder HTTP Request');
77-
await expect(requestItem).not.toBeVisible();
78-
79-
// Open folder1 and verify request is present in folder1
80-
await locators.sidebar.folder('folder1').click();
81-
await expect(requestItem).toBeVisible();
75+
const folderRequestItem = locators.sidebar.folderRequest('folder1', 'Folder HTTP Request');
76+
await expect(folderRequestItem).toBeVisible();
8277

8378
// Open request and verify it is the active request
84-
await requestItem.click();
79+
await folderRequestItem.click();
8580
await expect(locators.tabs.activeRequestTab()).toContainText('Folder HTTP Request');
8681
});
8782
});

tests/collection/create-requests/ws-requests.spec.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ test.describe('Create WebSocket Requests', () => {
1313
const locators = buildCommonLocators(page);
1414

1515
// Clean up Folder WebSocket Request
16-
await locators.sidebar.folder('folder1').click();
1716
await locators.sidebar.request('Folder WebSocket Request').click({ button: 'right' });
1817
await locators.dropdown.item('Delete').click();
1918
await locators.modal.button('Delete').click();
@@ -75,15 +74,11 @@ test.describe('Create WebSocket Requests', () => {
7574
await test.step('Verify WebSocket request was created within folder1', async () => {
7675
// Open collection and verify request is not in collection root
7776
await locators.sidebar.collection('create-requests').click();
78-
const requestItem = locators.sidebar.request('Folder WebSocket Request');
79-
await expect(requestItem).not.toBeVisible();
80-
81-
// Open folder1 and verify request is present in folder1
82-
await locators.sidebar.folder('folder1').click();
83-
await expect(requestItem).toBeVisible();
77+
const folderRequestItem = locators.sidebar.folderRequest('folder1', 'Folder WebSocket Request');
78+
await expect(folderRequestItem).toBeVisible();
8479

8580
// Open request and verify it is the active request
86-
await requestItem.click();
81+
await folderRequestItem.click();
8782
await expect(locators.tabs.activeRequestTab()).toContainText('Folder WebSocket Request');
8883
});
8984
});
Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
import { test, expect } from '../../playwright';
2+
import { closeAllCollections, createCollection } from '../utils/page/actions';
3+
4+
test.describe('Large Response Crash/High Memory Usage Prevention', () => {
5+
test.afterAll(async ({ page }) => {
6+
// cleanup: close all collections
7+
await closeAllCollections(page);
8+
});
9+
10+
test('Show appropriate warning for responses over 10MB', async ({ page, createTmpDir }) => {
11+
const collectionName = 'size-warning-test';
212

3-
test.describe('Large Response Crash Prevention', () => {
4-
test('should show appropriate warning for responses over 10MB', async ({ page, createTmpDir }) => {
513
// Create collection
6-
await page.getByLabel('Create Collection').click();
7-
await page.getByLabel('Name').fill('size-warning-test');
8-
await page.getByLabel('Name').press('Tab');
9-
await page.getByLabel('Location').fill(await createTmpDir('size-warning-test'));
10-
await page.getByRole('button', { name: 'Create', exact: true }).click();
11-
await page.getByText('size-warning-test').click();
12-
await page.getByLabel('Safe Mode').check();
13-
await page.getByRole('button', { name: 'Save' }).click();
14+
await createCollection(page, collectionName, createTmpDir);
1415

1516
// Create request
1617
await page.locator('#create-new-tab').getByRole('img').click();
17-
await page.getByPlaceholder('Request Name').fill('size-check');
18-
await page.locator('#new-request-url .CodeMirror').click();
19-
await page.locator('textarea').fill('https://samples.json-format.com/employees/json/employees_50MB.json');
20-
await page.getByRole('button', { name: 'Create' }).click();
18+
19+
const createRequestModal = page.locator('.bruno-modal-card').filter({ hasText: 'New Request' });
20+
await createRequestModal.getByPlaceholder('Request Name').fill('size-check');
21+
await createRequestModal.locator('#new-request-url .CodeMirror').click();
22+
await createRequestModal.locator('textarea').fill('https://samples.json-format.com/employees/json/employees_50MB.json');
23+
await createRequestModal.getByRole('button', { name: 'Create' }).click();
2124

2225
// Send request
23-
const sendButton = page.locator('#send-request').getByRole('img').nth(2);
26+
const sendButton = page.getByTestId('send-arrow-icon');
2427
await sendButton.click();
2528

2629
// Verify warning appears
@@ -32,7 +35,5 @@ test.describe('Large Response Crash Prevention', () => {
3235

3336
// Verify action button
3437
await expect(page.getByRole('button', { name: 'View' })).toBeVisible();
35-
36-
console.log('Large response warning displayed correctly');
3738
});
3839
});

tests/utils/page/actions.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,18 @@ const openCollectionAndAcceptSandbox = async (page, collectionName: string, sand
4646
};
4747

4848
const createCollection = async (page, collectionName: string, createDir: (tag?: string | undefined) => Promise<string>) => {
49-
await page.locator('.dropdown-icon').click();
50-
await page.locator('.dropdown-item').filter({ hasText: 'Create Collection' }).click();
51-
await page.getByLabel('Name').fill(collectionName);
52-
await page.getByLabel('Location').fill(await createDir(collectionName));
53-
await page.getByRole('button', { name: 'Create', exact: true }).click();
54-
await expect(page.locator('#sidebar-collection-name').filter({ hasText: collectionName })).toBeVisible();
55-
await page.locator('#sidebar-collection-name').filter({ hasText: collectionName }).click();
56-
await page.getByLabel('Safe Mode').check();
57-
await page.getByRole('button', { name: 'Save' }).click();
49+
test.step(`Create collection "${collectionName}" and accept sandbox "safe" mode`, async () => {
50+
await page.locator('.collection-dropdown .dropdown-icon').click();
51+
await page.locator('.tippy-box .dropdown-item').filter({ hasText: 'Create Collection' }).click();
52+
53+
const createCollectionModal = page.locator('.bruno-modal-card').filter({ hasText: 'Create Collection' });
54+
55+
await createCollectionModal.getByLabel('Name').fill(collectionName);
56+
await createCollectionModal.getByLabel('Location').fill(await createDir(collectionName));
57+
await createCollectionModal.getByRole('button', { name: 'Create', exact: true }).click();
58+
59+
await openCollectionAndAcceptSandbox(page, collectionName, 'safe');
60+
});
5861
};
5962

6063
export { closeAllCollections, openCollectionAndAcceptSandbox, createCollection };

0 commit comments

Comments
 (0)