mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-24 21:25:45 +00:00
102 lines
4.5 KiB
TypeScript
102 lines
4.5 KiB
TypeScript
import { Page } from '../../../playwright';
|
|
|
|
export const buildCommonLocators = (page: Page) => ({
|
|
runner: () => page.getByTestId('run-button'),
|
|
saveButton: () => page
|
|
.locator('.infotip')
|
|
.filter({ hasText: /^Save/ }),
|
|
sidebar: {
|
|
collection: (name: string) => page.locator('#sidebar-collection-name').filter({ hasText: name }),
|
|
folder: (name: string) => page.locator('.collection-item-name').filter({ hasText: name }),
|
|
request: (name: string) => page.locator('.collection-item-name').filter({ hasText: name }),
|
|
folderRequest: (folderName: string, requestName: string) => {
|
|
// Find the folder's collection-item-name, then navigate to its parent wrapper container (StyledWrapper),
|
|
// and search for the request within that container's descendants.
|
|
// Using .locator('..') gets the parent element of the folder's collection-item-name div.
|
|
const folderWrapper = page.locator('.collection-item-name').filter({ hasText: folderName }).locator('..');
|
|
return folderWrapper.locator('.collection-item-name').filter({ hasText: requestName });
|
|
}
|
|
},
|
|
actions: {
|
|
collectionActions: (collectionName: string) =>
|
|
page.locator('.collection-name')
|
|
.filter({ hasText: collectionName })
|
|
.locator('.collection-actions .icon'),
|
|
collectionItemActions: (itemName: string) =>
|
|
page.locator('.collection-item-name')
|
|
.filter({ hasText: itemName })
|
|
.locator('.menu-icon')
|
|
|
|
},
|
|
dropdown: {
|
|
item: (text: string) => page.locator('.dropdown-item').filter({ hasText: text })
|
|
},
|
|
tabs: {
|
|
requestTab: (requestName: string) => page.locator('.request-tab .tab-label').filter({ hasText: requestName }),
|
|
activeRequestTab: () => page.locator('.request-tab.active')
|
|
},
|
|
folder: {
|
|
chevron: (folderName: string) => page.locator('.collection-item-name').filter({ hasText: folderName }).getByTestId('folder-chevron')
|
|
},
|
|
modal: {
|
|
title: (title: string) => page.locator('.bruno-modal-header-title').filter({ hasText: title }),
|
|
button: (name: string) => page.getByRole('button', { name: name, exact: true })
|
|
},
|
|
environment: {
|
|
selector: () => page.getByTestId('environment-selector-trigger'),
|
|
collectionTab: () => page.getByTestId('env-tab-collection'),
|
|
globalTab: () => page.getByTestId('env-tab-global'),
|
|
envOption: (name: string) => page.locator('.dropdown-item').getByText(name, { exact: true })
|
|
}
|
|
});
|
|
|
|
export const buildWebsocketCommonLocators = (page: Page) => ({
|
|
...buildCommonLocators(page),
|
|
connectionControls: {
|
|
connect: () =>
|
|
page
|
|
.locator('div.connection-controls')
|
|
.locator('.infotip')
|
|
.filter({ hasText: /^Connect$/ }),
|
|
disconnect: () =>
|
|
page
|
|
.locator('div.connection-controls')
|
|
.locator('.infotip')
|
|
.filter({ hasText: /^Close Connection$/ })
|
|
},
|
|
messages: () => page.locator('.ws-message'),
|
|
toolbar: {
|
|
latestFirst: () => page.getByRole('button', { name: 'Latest First' }),
|
|
latestLast: () => page.getByRole('button', { name: 'Latest Last' }),
|
|
clearResponse: () => page.getByRole('button', { name: 'Clear Response' })
|
|
}
|
|
});
|
|
|
|
export const buildGrpcCommonLocators = (page: Page) => ({
|
|
...buildCommonLocators(page),
|
|
method: {
|
|
dropdownTrigger: () => page.getByTestId('grpc-method-dropdown-trigger'),
|
|
indicator: () => page.getByTestId('grpc-method-indicator')
|
|
},
|
|
request: {
|
|
queryUrlContainer: () => page.getByTestId('grpc-query-url-container'),
|
|
sendButton: () => page.getByTestId('grpc-send-request-button'),
|
|
messagesContainer: () => page.getByTestId('grpc-messages-container'),
|
|
addMessageButton: () => page.getByTestId('grpc-add-message-button'),
|
|
sendMessage: (index: number) => page.getByTestId(`grpc-send-message-${index}`),
|
|
endConnectionButton: () => page.getByTestId('grpc-end-connection-button'),
|
|
cancelConnectionButton: () => page.getByTestId('grpc-cancel-connection-button')
|
|
},
|
|
response: {
|
|
statusCode: () => page.getByTestId('grpc-response-status-code'),
|
|
statusText: () => page.getByTestId('grpc-response-status-text'),
|
|
content: () => page.getByTestId('grpc-response-content'),
|
|
container: () => page.getByTestId('grpc-responses-container'),
|
|
singleResponse: () => page.getByTestId('grpc-single-response'),
|
|
accordion: () => page.getByTestId('grpc-responses-accordion'),
|
|
responseItem: (index: number) => page.getByTestId(`grpc-response-item-${index}`),
|
|
responseItems: () => page.locator('[data-testid^="grpc-response-item-"]'),
|
|
tabCount: () => page.getByTestId('tab-response-count')
|
|
}
|
|
});
|