Skip to content

Commit

Permalink
Merge branch 'development' of github.com:epam/ai-dial-chat into e2e/l…
Browse files Browse the repository at this point in the history
…ong_names_truncate_sidebar_search_tests

# Conflicts:
#	e2e/src/testData/expectedMessages.ts
#	e2e/src/tests/compareMode.test.ts
#	e2e/src/tests/workWithModels.test.ts
#	e2e/src/ui/domData/styles.ts
  • Loading branch information
irinakartun committed Dec 11, 2023
2 parents 685c681 + e81f3c9 commit f5ab47c
Show file tree
Hide file tree
Showing 18 changed files with 139 additions and 86 deletions.
1 change: 1 addition & 0 deletions e2e/src/testData/expectedMessages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ export enum ExpectedMessages {
sendMessageButtonEnabled = 'Send message button is enabled',
tooltipContentIsValid = 'Tooltip content is valid',
headerTitleCorrespondRequest = 'Chat header title correspond sent request',
headerTitleIsValid = 'Chat header title is valid',
headerTitleIsFullyVisible = 'Chat header title is fully visible on tooltip',
headerIconsCountIsValid = 'Chat header icons number is valid',
headerCleanConversationIconVisible = 'Chat header Clean Conversation icon is visible',
Expand Down
34 changes: 26 additions & 8 deletions e2e/src/tests/compareMode.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,14 @@ test('Compare mode button creates two new chats and opens them in compare mode',

const todayConversations = await conversations.getTodayConversations();
expect
.soft(todayConversations, ExpectedMessages.conversationOfToday)
.toEqual([
ExpectedConstants.newConversationTitle,
ExpectedConstants.newConversationTitle,
ExpectedConstants.newConversationTitle,
]);
.soft(todayConversations.length, ExpectedMessages.conversationOfToday)
.toBe(3);

todayConversations.forEach((value) =>
expect
.soft(value, ExpectedMessages.conversationOfToday)
.toContain(ExpectedConstants.newConversationTitle),
);
});
});

Expand Down Expand Up @@ -235,6 +237,7 @@ test(
localStorageManager,
compare,
rightChatHeader,
leftChatHeader,
}) => {
setTestIds('EPMRTC-544', 'EPMRTC-545');
let firstConversation: Conversation;
Expand All @@ -257,11 +260,26 @@ test(
await test.step('Remove 1st conversation from compare mode using Close btn in the header', async () => {
await dialHomePage.openHomePage();
await dialHomePage.waitForPageLoaded();
await rightChatHeader.removeConversationFromComparison.click();
const randomSide = GeneratorUtil.randomArrayElement(Object.values(Side));
let activeChat;
if (randomSide === Side.right) {
await rightChatHeader.removeConversationFromComparison.click();
activeChat = firstConversation.name;
} else {
await leftChatHeader.removeConversationFromComparison.click();
activeChat = secondConversation.name;
}

const isCompareModeOn = await compare.isVisible();
expect
.soft(isCompareModeOn, ExpectedMessages.compareModeClosed)
.toBeFalsy();

const activeChatHeader =
await leftChatHeader.chatTitle.getElementContent();
expect
.soft(activeChatHeader, ExpectedMessages.headerTitleIsValid)
.toBe(activeChat);
});
},
);
Expand Down Expand Up @@ -407,7 +425,7 @@ test(
await dialHomePage.waitForPageLoaded();
await compare.waitForComparedConversationsLoaded();
const requestsData = await chat.sendRequestInCompareMode(
'test message',
'how are you?',
{
rightEntity: firstConversation.model.id,
leftEntity: secondConversation.model.id,
Expand Down
4 changes: 3 additions & 1 deletion e2e/src/tests/defaultModelSettings.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ test(
for (const todayConversation of todayConversations) {
expect
.soft(todayConversation, ExpectedMessages.conversationOfToday)
.toBe(ExpectedConstants.newConversationTitle);
.toEqual(
expect.stringContaining(ExpectedConstants.newConversationTitle),
);
}
});

Expand Down
2 changes: 2 additions & 0 deletions e2e/src/ui/selectors/sideBarSelectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ export const SideBarSelectors = {
dotsMenu: '[aria-haspopup="menu"]',
renameInput: (value: string) =>
`${Tags.input}[${Attributes.value}="${value}"]`,
renameDefaultNameInput: (value: string) =>
`${Tags.input}[${Attributes.value}^="${value}"]`,
dropdownMenu: '[data-qa="dropdown-menu"]',
import: '[data-qa="import"]',
draggableArea: '[data-qa="draggable-area"]',
Expand Down
4 changes: 4 additions & 0 deletions e2e/src/ui/webElements/chatMessages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ export class ChatMessages extends BaseElement {
return this.getChatMessage(message).locator(ChatSelectors.rate(rate));
}

public getChatMessageRate(message: string, rate: Rate) {
return this.getChatMessage(message).locator(ChatSelectors.rate(rate));
}

public async getGeneratedChatContent(messagesCount: number) {
const chatContent = await this.chatMessages.getElementsInnerContent();
return chatContent.slice(0, messagesCount - 1).join('\n');
Expand Down
6 changes: 3 additions & 3 deletions e2e/src/ui/webElements/conversations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ export class Conversations extends BaseElement {
if (!this.conversationInput) {
this.conversationInput = new Input(
this.page,
`${ChatBarSelectors.conversation} >> ${SideBarSelectors.renameInput(
name,
)}`,
`${
ChatBarSelectors.conversation
} >> ${SideBarSelectors.renameDefaultNameInput(name)}`,
);
}
return this.conversationInput;
Expand Down
31 changes: 9 additions & 22 deletions src/components/Chatbar/components/ChatbarSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ export const ChatbarSettings = () => {

const dispatch = useAppDispatch();

const conversations = useAppSelector(
ConversationsSelectors.selectConversations,
);
const isStreaming = useAppSelector(
ConversationsSelectors.selectIsConversationsStreaming,
);
Expand All @@ -65,12 +62,11 @@ export const ChatbarSettings = () => {
const menuItems: DisplayMenuItemProps[] = useMemo(
() => [
{
name: t('Delete all conversations'),
display: conversations.length > 0,
dataQa: 'delete-conversations',
Icon: IconTrashX,
name: t('Create new folder'),
dataQa: 'create-folder',
Icon: FolderPlus,
onClick: () => {
setIsClearModalOpen(true);
dispatch(ConversationsActions.createFolder());
},
},
{
Expand All @@ -93,13 +89,11 @@ export const ChatbarSettings = () => {
},
},
{
name: t('Create new folder'),
dataQa: 'create-folder',
Icon: FolderPlus,
name: t('Delete all conversations'),
dataQa: 'delete-conversations',
Icon: IconTrashX,
onClick: () => {
dispatch(
ConversationsActions.createFolder({ name: t('New folder') }),
);
setIsClearModalOpen(true);
},
},
{
Expand All @@ -122,14 +116,7 @@ export const ChatbarSettings = () => {
},
},
],
[
conversations,
dispatch,
enabledFeatures,
handleToggleCompare,
isStreaming,
t,
],
[dispatch, enabledFeatures, handleToggleCompare, isStreaming, t],
);

return (
Expand Down
7 changes: 1 addition & 6 deletions src/components/Chatbar/components/Conversation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,11 @@ import {
useState,
} from 'react';

import { useTranslation } from 'next-i18next';

import classNames from 'classnames';

import { Conversation } from '@/src/types/chat';
import { FeatureType, HighlightColor } from '@/src/types/common';
import { Feature } from '@/src/types/features';
import { Translation } from '@/src/types/translation';

import {
ConversationsActions,
Expand Down Expand Up @@ -97,7 +94,6 @@ interface Props {
}

export const ConversationComponent = ({ item: conversation, level }: Props) => {
const { t } = useTranslation(Translation.Chat);
const dispatch = useAppDispatch();

const modelsMap = useAppSelector(ModelsSelectors.selectModelsMap);
Expand Down Expand Up @@ -299,7 +295,6 @@ export const ConversationComponent = ({ item: conversation, level }: Props) => {
localFolderId = uuidv4();
dispatch(
ConversationsActions.createFolder({
name: t('New folder'),
folderId: localFolderId,
}),
);
Expand All @@ -311,7 +306,7 @@ export const ConversationComponent = ({ item: conversation, level }: Props) => {
}),
);
},
[conversation.id, dispatch, t],
[conversation.id, dispatch],
);

const handleContextMenuOpen = (e: MouseEvent) => {
Expand Down
7 changes: 1 addition & 6 deletions src/components/Promptbar/components/Prompt.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ import {
useState,
} from 'react';

import { useTranslation } from 'next-i18next';

import classNames from 'classnames';

import { FeatureType, HighlightColor } from '@/src/types/common';
import { Feature } from '@/src/types/features';
import { Prompt } from '@/src/types/prompt';
import { Translation } from '@/src/types/translation';

import { useAppDispatch, useAppSelector } from '@/src/store/hooks';
import {
Expand Down Expand Up @@ -47,7 +44,6 @@ export interface PromptMoveToFolderProps {
}

export const PromptComponent = ({ item: prompt, level }: Props) => {
const { t } = useTranslation(Translation.Chat);
const dispatch = useAppDispatch();

const folders = useAppSelector(PromptsSelectors.selectFolders);
Expand Down Expand Up @@ -187,7 +183,6 @@ export const PromptComponent = ({ item: prompt, level }: Props) => {
localFolderId = uuidv4();
dispatch(
PromptsActions.createFolder({
name: t('New folder'),
folderId: localFolderId,
}),
);
Expand All @@ -200,7 +195,7 @@ export const PromptComponent = ({ item: prompt, level }: Props) => {
);
setIsContextMenu(false);
},
[dispatch, prompt.id, t],
[dispatch, prompt.id],
);

const handleClose = useCallback(() => {
Expand Down
37 changes: 19 additions & 18 deletions src/components/Promptbar/components/PromptbarSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ import { Prompt } from '@/src/types/prompt';
import { Translation } from '@/src/types/translation';

import { useAppDispatch, useAppSelector } from '@/src/store/hooks';
import { PromptsActions } from '@/src/store/prompts/prompts.reducers';
import { SettingsSelectors } from '@/src/store/settings/settings.reducers';
import {
PromptsActions,
PromptsSelectors,
} from '@/src/store/prompts/prompts.reducers';

import { ConfirmDialog } from '@/src/components/Common/ConfirmDialog';
import SidebarMenu from '@/src/components/Common/SidebarMenu';
Expand All @@ -30,20 +32,17 @@ export const PromptbarSettings: FC<PromptbarSettingsProps> = ({
}) => {
const { t } = useTranslation(Translation.PromptBar);
const dispatch = useAppDispatch();
const [isOpen, setIsOpen] = useState(false);
const enabledFeatures = useAppSelector(
SettingsSelectors.selectEnabledFeatures,
);
const [isClearModalOpen, setIsClearModalOpen] = useState(false);
const folders = useAppSelector(PromptsSelectors.selectFolders);

const menuItems: DisplayMenuItemProps[] = useMemo(
() => [
{
name: t('Delete all prompts'),
display: allPrompts.length > 0,
dataQa: 'delete-prompts',
Icon: IconTrashX,
name: t('Create new folder'),
dataQa: 'create-prompt-folder',
Icon: FolderPlus,
onClick: () => {
setIsOpen(true);
dispatch(PromptsActions.createFolder());
},
},
{
Expand All @@ -58,6 +57,7 @@ export const PromptbarSettings: FC<PromptbarSettingsProps> = ({
CustomTriggerRenderer: Import,
},
{
display: allPrompts.length > 0 || folders.length > 0,
name: t('Export prompts'),
dataQa: 'export-prompts',
Icon: IconFileArrowRight,
Expand All @@ -66,15 +66,16 @@ export const PromptbarSettings: FC<PromptbarSettingsProps> = ({
},
},
{
name: t('Create new folder'),
dataQa: 'create-prompt-folder',
Icon: FolderPlus,
name: t('Delete all'),
display: allPrompts.length > 0 || folders.length > 0,
dataQa: 'delete-prompts',
Icon: IconTrashX,
onClick: () => {
dispatch(PromptsActions.createFolder({ name: t('New folder') }));
setIsClearModalOpen(true);
},
},
],
[allPrompts, dispatch, enabledFeatures, t],
[allPrompts.length, dispatch, folders.length, t],
);

return (
Expand All @@ -85,15 +86,15 @@ export const PromptbarSettings: FC<PromptbarSettingsProps> = ({
/>

<ConfirmDialog
isOpen={isOpen}
isOpen={isClearModalOpen}
heading={t('Confirm clearing all prompts')}
description={
t('Are you sure that you want to delete all prompts?') || ''
}
confirmLabel={t('Clear')}
cancelLabel={t('Cancel')}
onClose={(result) => {
setIsOpen(false);
setIsClearModalOpen(false);
if (result) {
dispatch(PromptsActions.clearPrompts());
}
Expand Down
Loading

0 comments on commit f5ab47c

Please sign in to comment.