mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-15 11:51:30 +00:00
109 lines
4.9 KiB
TypeScript
109 lines
4.9 KiB
TypeScript
import { test, expect } from '../../../playwright';
|
|
import { closeAllCollections } from '../../utils/page';
|
|
|
|
test.describe('Code Generation URL Encoding', () => {
|
|
test.afterEach(async ({ page }) => {
|
|
try {
|
|
const modalCloseButton = page.locator('[data-test-id="modal-close-button"]');
|
|
if (await modalCloseButton.isVisible()) {
|
|
await modalCloseButton.click();
|
|
await modalCloseButton.waitFor({ state: 'hidden' });
|
|
}
|
|
} catch (e) {}
|
|
|
|
await closeAllCollections(page);
|
|
});
|
|
|
|
test('Should generate code with proper URL encoding for unencoded input', async ({
|
|
page,
|
|
createTmpDir
|
|
}) => {
|
|
// Use plus icon button in new workspace UI
|
|
await page.locator('.plus-icon-button').click();
|
|
await page.locator('.tippy-box .dropdown-item').filter({ hasText: 'Create collection' }).click();
|
|
await page.getByLabel('Name').fill('unencoded-test-collection');
|
|
const locationInput = page.getByLabel('Location');
|
|
if (await locationInput.isVisible()) {
|
|
await locationInput.fill(await createTmpDir('unencoded-test-collection'));
|
|
}
|
|
await page.locator('.bruno-modal').getByRole('button', { name: 'Create', exact: true }).click();
|
|
|
|
await expect(page.locator('#sidebar-collection-name').filter({ hasText: 'unencoded-test-collection' })).toBeVisible();
|
|
await page.locator('#sidebar-collection-name').filter({ hasText: 'unencoded-test-collection' }).click();
|
|
await page.getByLabel('Safe Mode').check();
|
|
await page.getByRole('button', { name: 'Save' }).click();
|
|
|
|
await page.locator('#create-new-tab').getByRole('img').click();
|
|
await page.getByPlaceholder('Request Name').fill('unencoded-request');
|
|
await page.locator('#new-request-url .CodeMirror').click();
|
|
await page.locator('textarea').fill('http://base.source?name=John Doe');
|
|
await page.getByRole('button', { name: 'Create' }).click();
|
|
|
|
await expect(page.locator('.collection-item-name').filter({ hasText: 'unencoded-request' })).toBeVisible();
|
|
|
|
await page.locator('.collection-item-name').filter({ hasText: 'unencoded-request' }).click();
|
|
|
|
await page.locator('#send-request .infotip').first().click();
|
|
|
|
await expect(page.getByRole('dialog')).toBeVisible();
|
|
await expect(page.getByRole('dialog').locator('.bruno-modal-header-title')).toContainText('Generate Code');
|
|
|
|
const codeEditor = page.locator('.editor-content .CodeMirror').first();
|
|
await expect(codeEditor).toBeVisible();
|
|
|
|
const generatedCode = await codeEditor.textContent();
|
|
|
|
expect(generatedCode).toContain('http://base.source/?name=John%20Doe');
|
|
|
|
await page.locator('[data-test-id="modal-close-button"]').click();
|
|
|
|
await page.locator('[data-test-id="modal-close-button"]').waitFor({ state: 'hidden' });
|
|
});
|
|
|
|
test('Should generate code with proper URL encoding for encoded input', async ({
|
|
page,
|
|
createTmpDir
|
|
}) => {
|
|
// Use plus icon button in new workspace UI
|
|
await page.locator('.plus-icon-button').click();
|
|
await page.locator('.tippy-box .dropdown-item').filter({ hasText: 'Create collection' }).click();
|
|
await page.getByLabel('Name').fill('encoded-test-collection');
|
|
const locationInput = page.getByLabel('Location');
|
|
if (await locationInput.isVisible()) {
|
|
await locationInput.fill(await createTmpDir('encoded-test-collection'));
|
|
}
|
|
await page.locator('.bruno-modal').getByRole('button', { name: 'Create', exact: true }).click();
|
|
|
|
await expect(page.locator('#sidebar-collection-name').filter({ hasText: 'encoded-test-collection' })).toBeVisible();
|
|
await page.locator('#sidebar-collection-name').filter({ hasText: 'encoded-test-collection' }).click();
|
|
await page.getByLabel('Safe Mode').check();
|
|
await page.getByRole('button', { name: 'Save' }).click();
|
|
|
|
await page.locator('#create-new-tab').getByRole('img').click();
|
|
await page.getByPlaceholder('Request Name').fill('encoded-request');
|
|
await page.locator('#new-request-url .CodeMirror').click();
|
|
await page.locator('textarea').fill('http://base.source?name=John%20Doe');
|
|
await page.getByRole('button', { name: 'Create' }).click();
|
|
|
|
await expect(page.locator('.collection-item-name').filter({ hasText: 'encoded-request' })).toBeVisible();
|
|
|
|
await page.locator('.collection-item-name').filter({ hasText: 'encoded-request' }).click();
|
|
|
|
await page.locator('#send-request .infotip').first().click();
|
|
|
|
await expect(page.getByRole('dialog')).toBeVisible();
|
|
await expect(page.getByRole('dialog').locator('.bruno-modal-header-title')).toContainText('Generate Code');
|
|
|
|
const codeEditor = page.locator('.editor-content .CodeMirror').first();
|
|
await expect(codeEditor).toBeVisible();
|
|
|
|
const generatedCode = await codeEditor.textContent();
|
|
|
|
expect(generatedCode).toContain('http://base.source/?name=John%20Doe');
|
|
|
|
await page.locator('[data-test-id="modal-close-button"]').click();
|
|
|
|
await page.locator('[data-test-id="modal-close-button"]').waitFor({ state: 'hidden' });
|
|
});
|
|
});
|