mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-24 05:05:39 +00:00
* style: enhance button layout and input styles across multiple components for improved UI consistency * style: update RequestsNotLoaded component with new warning styles and enhance theme color definitions for status indicators * refactor: update theme usage across components for consistency - Changed color references from theme.brand to theme.primary.text in various StyledWrapper components. - Added hover effects to enhance UI interactivity in CollectionSettings and FolderSettings. - Removed unnecessary margin and padding adjustments in several components for cleaner layout. - Improved accessibility by ensuring aria attributes are correctly set in MenuDropdown. - Standardized styling for method indicators in RequestPane components. These changes aim to create a more cohesive look and feel across the application while adhering to the updated theme guidelines. * refactor: clean up method selector styling in NewRequest component * chore: temp playwright test fixes * refactor: update modal sizes across various components for consistency - Changed modal size from "sm" to "md" in RenameWorkspace, CreateApiSpec, CloneCollection, DeleteCollectionItem, and RenameCollection components. - Improved styling in HttpMethodSelector by adding padding for better layout. - Updated theme color references in multiple theme files to use a new palette structure for consistency and maintainability. * refactor: enhance styling and theme integration in TimelineItem components - Updated HttpMethodSelector to clarify padding calculation in comments. - Integrated theme colors for OAuth2 indicator and timestamp in TimelineItem for better visual consistency. - Adjusted Method component to use uppercase styling for method display. - Modified RelativeTime component to apply muted text color for improved readability. - Updated INFO color in dark and light themes for better contrast and accessibility. * refactor: remove duplicate import statements in theme files - Cleaned up import statements in vscode.js and light-pastel.js by removing redundant lines for improved code clarity and maintainability. * refactor: improve styling and theme integration in various components - Added accent color and cursor style for checkbox inputs in Modal's StyledWrapper. - Updated border-radius values in HttpMethodSelector and NewRequest StyledWrapper components to use theme variables for consistency. - Introduced a new textbox class in NewRequest StyledWrapper for better styling control. - Changed modal size from "sm" to "md" in CreateEnvironment for improved layout. --------- Co-authored-by: Bijin A B <bijin@usebruno.com>
75 lines
3.7 KiB
TypeScript
75 lines
3.7 KiB
TypeScript
import { test, expect } from '../../../playwright';
|
|
import { createCollection, openCollection } from '../../utils/page';
|
|
import { getTableCell } from '../../utils/page/locators';
|
|
|
|
test('should persist request with newlines across app restarts', async ({ createTmpDir, launchElectronApp }) => {
|
|
const userDataPath = await createTmpDir('newlines-persistence-userdata');
|
|
const collectionPath = await createTmpDir('newlines-persistence-collection');
|
|
|
|
// Create collection and request
|
|
const app1 = await launchElectronApp({ userDataPath });
|
|
const page = await app1.firstWindow();
|
|
|
|
await createCollection(page, 'newlines-persistence', collectionPath);
|
|
|
|
const collection = page.getByTestId('collections').locator('.collection-name').filter({ hasText: 'newlines-persistence' });
|
|
await collection.hover();
|
|
await collection.locator('.collection-actions .icon').click();
|
|
await page.locator('.dropdown-item').filter({ hasText: 'New Request' }).click();
|
|
await page.getByPlaceholder('Request Name').fill('persistence-test');
|
|
await page.locator('#new-request-url').locator('.CodeMirror').click();
|
|
await page.locator('#new-request-url').locator('textarea').fill('https://httpbin.org/get');
|
|
await page.locator('.bruno-modal').getByRole('button', { name: 'Create', exact: true }).click();
|
|
|
|
await openCollection(page, 'newlines-persistence');
|
|
|
|
await page.locator('.collection-item-name').filter({ hasText: 'persistence-test' }).dblclick();
|
|
|
|
await page.getByRole('tab', { name: 'Params' }).click();
|
|
const paramRow = page.locator('table tbody tr').first();
|
|
await getTableCell(paramRow, 0).getByRole('textbox').fill('queryParamKey');
|
|
|
|
await page.getByRole('tab', { name: 'Headers' }).click();
|
|
const headerRow = page.locator('table tbody tr').first();
|
|
await getTableCell(headerRow, 0).locator('.CodeMirror').click();
|
|
await getTableCell(headerRow, 0).locator('textarea').fill('headerKey');
|
|
await getTableCell(headerRow, 1).locator('.CodeMirror').click();
|
|
await getTableCell(headerRow, 1).locator('textarea').fill('header\nValue');
|
|
|
|
await page.getByRole('tab', { name: 'Vars' }).click();
|
|
const preReqRow = page.locator('table').first().locator('tbody tr').first();
|
|
await getTableCell(preReqRow, 0).getByRole('textbox').fill('preRequestVar');
|
|
await getTableCell(preReqRow, 1).locator('.CodeMirror').click();
|
|
await getTableCell(preReqRow, 1).locator('textarea').fill('pre\nRequest\nValue');
|
|
|
|
const postResRow = page.locator('table').nth(1).locator('tbody tr').first();
|
|
await getTableCell(postResRow, 0).getByRole('textbox').fill('postResponseVar');
|
|
await getTableCell(postResRow, 1).locator('.CodeMirror').click();
|
|
await getTableCell(postResRow, 1).locator('textarea').fill('post\nResponse\nValue');
|
|
|
|
await page.keyboard.press('Meta+s');
|
|
await app1.close();
|
|
|
|
// Verify persistence after restart
|
|
const app2 = await launchElectronApp({ userDataPath });
|
|
const page2 = await app2.firstWindow();
|
|
|
|
await page2.getByTestId('collections').locator('.collection-name').filter({ hasText: 'newlines-persistence' }).click();
|
|
await page2.locator('.collection-item-name').filter({ hasText: 'persistence-test' }).dblclick();
|
|
|
|
// Verify params persisted
|
|
await page2.getByRole('tab', { name: 'Params' }).click();
|
|
await expect(page2.locator('table tbody tr')).toHaveCount(2);
|
|
|
|
// Verify headers persisted
|
|
await page2.getByRole('tab', { name: 'Headers' }).click();
|
|
await expect(page2.locator('table tbody tr')).toHaveCount(2);
|
|
|
|
// Verify vars persisted
|
|
await page2.getByRole('tab', { name: 'Vars' }).click();
|
|
await expect(page2.locator('table').first().locator('tbody tr')).toHaveCount(2);
|
|
await expect(page2.locator('table').nth(1).locator('tbody tr')).toHaveCount(2);
|
|
|
|
await app2.close();
|
|
});
|