@servicetitan/titan-chatbot-ui-cypress 3.0.1 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/mocks/chatbot-api-client.mock.d.ts +0 -1
  7. package/dist/mocks/chatbot-api-client.mock.d.ts.map +1 -1
  8. package/dist/mocks/chatbot-api-client.mock.js +0 -6
  9. package/dist/mocks/chatbot-api-client.mock.js.map +1 -1
  10. package/dist/tests/index.d.ts +30 -0
  11. package/dist/tests/index.d.ts.map +1 -0
  12. package/dist/tests/index.js +30 -0
  13. package/dist/tests/index.js.map +1 -0
  14. package/dist/tests/titan-chat-ui/chat-error.shared-tests.d.ts +3 -0
  15. package/dist/tests/titan-chat-ui/chat-error.shared-tests.d.ts.map +1 -0
  16. package/dist/tests/titan-chat-ui/chat-error.shared-tests.js +138 -0
  17. package/dist/tests/titan-chat-ui/chat-error.shared-tests.js.map +1 -0
  18. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.d.ts +7 -0
  19. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.d.ts.map +1 -0
  20. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.js +123 -0
  21. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.js.map +1 -0
  22. package/dist/tests/titan-chat-ui/chat-input.shared-tests.d.ts +3 -0
  23. package/dist/tests/titan-chat-ui/chat-input.shared-tests.d.ts.map +1 -0
  24. package/dist/tests/titan-chat-ui/chat-input.shared-tests.js +71 -0
  25. package/dist/tests/titan-chat-ui/chat-input.shared-tests.js.map +1 -0
  26. package/dist/tests/titan-chat-ui/chat-log.shared-tests.d.ts +9 -0
  27. package/dist/tests/titan-chat-ui/chat-log.shared-tests.d.ts.map +1 -0
  28. package/dist/tests/titan-chat-ui/chat-log.shared-tests.js +73 -0
  29. package/dist/tests/titan-chat-ui/chat-log.shared-tests.js.map +1 -0
  30. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.d.ts +8 -0
  31. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.d.ts.map +1 -0
  32. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.js +118 -0
  33. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.js.map +1 -0
  34. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.d.ts +3 -0
  35. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.d.ts.map +1 -0
  36. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.js +110 -0
  37. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.js.map +1 -0
  38. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.d.ts +3 -0
  39. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.d.ts.map +1 -0
  40. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.js +76 -0
  41. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.js.map +1 -0
  42. package/dist/tests/titan-chat-ui/chat.shared-tests.d.ts +9 -0
  43. package/dist/tests/titan-chat-ui/chat.shared-tests.d.ts.map +1 -0
  44. package/dist/tests/titan-chat-ui/chat.shared-tests.js +111 -0
  45. package/dist/tests/titan-chat-ui/chat.shared-tests.js.map +1 -0
  46. package/dist/tests/titan-chat-ui/message-agent.shared-tests.d.ts +27 -0
  47. package/dist/tests/titan-chat-ui/message-agent.shared-tests.d.ts.map +1 -0
  48. package/dist/tests/titan-chat-ui/message-agent.shared-tests.js +67 -0
  49. package/dist/tests/titan-chat-ui/message-agent.shared-tests.js.map +1 -0
  50. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.d.ts +10 -0
  51. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.d.ts.map +1 -0
  52. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.js +88 -0
  53. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.js.map +1 -0
  54. package/dist/tests/titan-chat-ui/message-system.shared-tests.d.ts +16 -0
  55. package/dist/tests/titan-chat-ui/message-system.shared-tests.d.ts.map +1 -0
  56. package/dist/tests/titan-chat-ui/message-system.shared-tests.js +65 -0
  57. package/dist/tests/titan-chat-ui/message-system.shared-tests.js.map +1 -0
  58. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.d.ts +8 -0
  59. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.d.ts.map +1 -0
  60. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.js +63 -0
  61. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.js.map +1 -0
  62. package/dist/tests/titan-chat-ui/message-typing.shared-tests.d.ts +12 -0
  63. package/dist/tests/titan-chat-ui/message-typing.shared-tests.d.ts.map +1 -0
  64. package/dist/tests/titan-chat-ui/message-typing.shared-tests.js +46 -0
  65. package/dist/tests/titan-chat-ui/message-typing.shared-tests.js.map +1 -0
  66. package/dist/tests/titan-chat-ui/message-user.shared-tests.d.ts +10 -0
  67. package/dist/tests/titan-chat-ui/message-user.shared-tests.d.ts.map +1 -0
  68. package/dist/tests/titan-chat-ui/message-user.shared-tests.js +64 -0
  69. package/dist/tests/titan-chat-ui/message-user.shared-tests.js.map +1 -0
  70. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.d.ts +7 -0
  71. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.d.ts.map +1 -0
  72. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.js +118 -0
  73. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.js.map +1 -0
  74. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.d.ts +9 -0
  75. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.d.ts.map +1 -0
  76. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.js +162 -0
  77. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.js.map +1 -0
  78. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.d.ts +15 -0
  79. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.d.ts.map +1 -0
  80. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.js +123 -0
  81. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.js.map +1 -0
  82. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.d.ts +9 -0
  83. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.d.ts.map +1 -0
  84. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.js +84 -0
  85. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.js.map +1 -0
  86. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.d.ts +8 -0
  87. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.d.ts.map +1 -0
  88. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.js +142 -0
  89. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.js.map +1 -0
  90. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.d.ts +8 -0
  91. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.d.ts.map +1 -0
  92. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.js +105 -0
  93. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.js.map +1 -0
  94. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.d.ts +3 -0
  95. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.d.ts.map +1 -0
  96. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.js +86 -0
  97. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.js.map +1 -0
  98. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.d.ts +3 -0
  99. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.d.ts.map +1 -0
  100. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.js +143 -0
  101. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.js.map +1 -0
  102. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.d.ts +8 -0
  103. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.d.ts.map +1 -0
  104. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.js +200 -0
  105. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.js.map +1 -0
  106. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.d.ts +11 -0
  107. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.d.ts.map +1 -0
  108. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.js +81 -0
  109. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.js.map +1 -0
  110. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.d.ts +8 -0
  111. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.d.ts.map +1 -0
  112. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.js +60 -0
  113. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.js.map +1 -0
  114. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.d.ts +8 -0
  115. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.d.ts.map +1 -0
  116. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.js +77 -0
  117. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.js.map +1 -0
  118. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.d.ts +7 -0
  119. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.d.ts.map +1 -0
  120. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.js +130 -0
  121. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.js.map +1 -0
  122. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.d.ts +9 -0
  123. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.d.ts.map +1 -0
  124. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.js +157 -0
  125. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.js.map +1 -0
  126. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.d.ts +9 -0
  127. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.d.ts.map +1 -0
  128. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.js +114 -0
  129. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.js.map +1 -0
  130. package/dist/utils/chat-ui-selectors.d.ts +12 -0
  131. package/dist/utils/chat-ui-selectors.d.ts.map +1 -1
  132. package/dist/utils/chat-ui-selectors.js +24 -0
  133. package/dist/utils/chat-ui-selectors.js.map +1 -1
  134. package/dist/utils/test-utils-chatbot.d.ts +5 -0
  135. package/dist/utils/test-utils-chatbot.d.ts.map +1 -0
  136. package/dist/utils/test-utils-chatbot.js +55 -0
  137. package/dist/utils/test-utils-chatbot.js.map +1 -0
  138. package/dist/utils/test-utils.d.ts +6 -0
  139. package/dist/utils/test-utils.d.ts.map +1 -0
  140. package/dist/utils/test-utils.js +38 -0
  141. package/dist/utils/test-utils.js.map +1 -0
  142. package/package.json +10 -5
  143. package/src/index.ts +3 -0
  144. package/src/mocks/chatbot-api-client.mock.ts +0 -1
  145. package/src/tests/index.ts +30 -0
  146. package/src/tests/titan-chat-ui/chat-error.shared-tests.tsx +185 -0
  147. package/src/tests/titan-chat-ui/chat-input-file.shared-tests.tsx +182 -0
  148. package/src/tests/titan-chat-ui/chat-input.shared-tests.tsx +99 -0
  149. package/src/tests/titan-chat-ui/chat-log.shared-tests.tsx +117 -0
  150. package/src/tests/titan-chat-ui/chat-messages.shared-tests.tsx +156 -0
  151. package/src/tests/titan-chat-ui/chat-notifications.shared-tests.tsx +153 -0
  152. package/src/tests/titan-chat-ui/chat-timer.shared-tests.tsx +106 -0
  153. package/src/tests/titan-chat-ui/chat.shared-tests.tsx +158 -0
  154. package/src/tests/titan-chat-ui/message-agent.shared-tests.tsx +170 -0
  155. package/src/tests/titan-chat-ui/message-content-file.shared-tests.tsx +139 -0
  156. package/src/tests/titan-chat-ui/message-system.shared-tests.tsx +147 -0
  157. package/src/tests/titan-chat-ui/message-timeout.shared-tests.tsx +117 -0
  158. package/src/tests/titan-chat-ui/message-typing.shared-tests.tsx +92 -0
  159. package/src/tests/titan-chat-ui/message-user.shared-tests.tsx +138 -0
  160. package/src/tests/titan-chatbot-ui/chatbot-filters.shared-tests.tsx +164 -0
  161. package/src/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.tsx +225 -0
  162. package/src/tests/titan-chatbot-ui/chatbot-links.shared-tests.tsx +189 -0
  163. package/src/tests/titan-chatbot-ui/chatbot-live.shared-tests.tsx +127 -0
  164. package/src/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.tsx +187 -0
  165. package/src/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.tsx +144 -0
  166. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.tsx +127 -0
  167. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.tsx +198 -0
  168. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.tsx +285 -0
  169. package/src/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.tsx +112 -0
  170. package/src/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.tsx +91 -0
  171. package/src/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.tsx +116 -0
  172. package/src/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.tsx +182 -0
  173. package/src/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.tsx +221 -0
  174. package/src/tests/titan-chatbot-ui/chatbot.shared-tests.tsx +158 -0
  175. package/src/utils/chat-ui-selectors.ts +24 -0
  176. package/src/utils/test-utils-chatbot.tsx +73 -0
  177. package/src/utils/test-utils.tsx +52 -0
  178. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,200 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CHATBOT_API_CLIENT, CHATBOT_UI_STORE_TOKEN, MessageFeedbackGuardrailStore, MessageFeedbackStore, ModelsMocks, } from '@servicetitan/titan-chatbot-api';
3
+ import { testInitContainerChatbot, testRenderWrapperChatbot } from '../..';
4
+ import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
5
+ export function runChatbotMessageFeedbackPopoverSharedTests(ChatbotMessageFeedbackPopoverComponent, wrapperComponent) {
6
+ let container;
7
+ let api;
8
+ let chatbotUiStore;
9
+ const mockApiClient = () => {
10
+ api.postSession = cy.stub().resolves(ModelsMocks.mockSession());
11
+ api.getOptions = cy.stub().resolves(ModelsMocks.mockFrontendModel());
12
+ api.postFeedback = cy.stub().resolves(ModelsMocks.mockFeedback());
13
+ };
14
+ beforeEach(() => {
15
+ container = testInitContainerChatbot();
16
+ container.bind(MessageFeedbackStore).toSelf().inSingletonScope();
17
+ container.bind(MessageFeedbackGuardrailStore).toSelf().inSingletonScope();
18
+ api = container.get(CHATBOT_API_CLIENT);
19
+ chatbotUiStore = container.get(CHATBOT_UI_STORE_TOKEN);
20
+ mockApiClient();
21
+ cy.viewport(550, 800);
22
+ });
23
+ const render = (botMessage, onAfterInit) => {
24
+ return cy.wrap(null).then(() => {
25
+ const component = _jsx(ChatbotMessageFeedbackPopoverComponent, { botMessage: botMessage });
26
+ const wrappedComponent = wrapperComponent ? wrapperComponent(component) : component;
27
+ return testRenderWrapperChatbot(container, wrappedComponent, onAfterInit);
28
+ });
29
+ };
30
+ it('should render feedback component for regular bot message', () => {
31
+ const botMessage = ModelsMocks.mockBotMessage({
32
+ answer: 'Test answer',
33
+ isGuardrailed: false,
34
+ });
35
+ render(botMessage, () => {
36
+ chatbotUiStore.customizations.feedback = { title: 'Rate this answer' };
37
+ });
38
+ // Should show feedback title
39
+ cy.contains('Rate this answer').should('be.visible');
40
+ // Should show thumbs up button
41
+ ChatUiSelectors.chatbotMessageFeedbackThumbsUp.should('be.visible');
42
+ // Should show thumbs down button
43
+ ChatUiSelectors.chatbotMessageFeedbackThumbsDown.should('be.visible');
44
+ });
45
+ it('should render feedback component for guardrail bot message', () => {
46
+ const botMessage = ModelsMocks.mockBotMessage({
47
+ answer: 'Guardrail response',
48
+ isGuardrailed: true,
49
+ });
50
+ render(botMessage, () => {
51
+ chatbotUiStore.customizations.feedback = { title: 'Rate this answer' };
52
+ });
53
+ // Should not show feedback title for guardrail
54
+ cy.contains('Rate this answer').should('not.exist');
55
+ // Should not show thumbs up button for guardrail
56
+ ChatUiSelectors.chatbotMessageFeedbackThumbsUp.should('not.exist');
57
+ // Should show "Provide correct answer" link
58
+ ChatUiSelectors.chatbotMessageFeedbackProvideAnswer.should('be.visible');
59
+ ChatUiSelectors.chatbotMessageFeedbackProvideAnswer.should('contain.text', 'Provide correct answer');
60
+ });
61
+ it('should handle thumbs up feedback submission', () => {
62
+ const botMessage = ModelsMocks.mockBotMessage({
63
+ answer: 'Test answer',
64
+ isGuardrailed: false,
65
+ });
66
+ render(botMessage, () => {
67
+ chatbotUiStore.sendMessageFeedback = cy.stub().resolves();
68
+ });
69
+ ChatUiSelectors.chatbotMessageFeedbackThumbsUp.click();
70
+ // Should show success state
71
+ ChatUiSelectors.chatbotMessageFeedbackSuccess.should('be.visible');
72
+ ChatUiSelectors.chatbotMessageFeedbackSuccess.should('contain.text', 'Thanks for your feedback.');
73
+ });
74
+ it('should handle failed feedback submission', () => {
75
+ const botMessage = ModelsMocks.mockBotMessage({
76
+ answer: 'Test answer',
77
+ isGuardrailed: false,
78
+ });
79
+ render(botMessage, () => {
80
+ chatbotUiStore.sendMessageFeedback = cy.stub().rejects(new Error('API Error'));
81
+ });
82
+ ChatUiSelectors.chatbotMessageFeedbackThumbsUp.click();
83
+ // Should show failure state
84
+ ChatUiSelectors.chatbotMessageFeedbackFailed.should('be.visible');
85
+ ChatUiSelectors.chatbotMessageFeedbackFailed.should('contain.text', 'Failed to send feedback.');
86
+ });
87
+ it('should open feedback form popover when thumbs down is clicked', () => {
88
+ const botMessage = ModelsMocks.mockBotMessage({
89
+ answer: 'Test answer',
90
+ isGuardrailed: false,
91
+ });
92
+ render(botMessage);
93
+ ChatUiSelectors.chatbotMessageFeedbackThumbsDown.click();
94
+ // Should show popover with form
95
+ cy.contains("Why didn't this answer solve your problem?").should('be.visible');
96
+ ChatUiSelectors.chatbotMessageFeedback.should('be.visible');
97
+ ChatUiSelectors.chatbotMessageFeedbackSubmit.should('be.visible').and('be.disabled');
98
+ });
99
+ it('should open guardrail feedback form when provide answer link is clicked', () => {
100
+ const botMessage = ModelsMocks.mockBotMessage({
101
+ answer: 'Guardrail response',
102
+ isGuardrailed: true,
103
+ });
104
+ render(botMessage);
105
+ ChatUiSelectors.chatbotMessageFeedbackProvideAnswer.click();
106
+ // Should show popover with guardrail form
107
+ cy.contains('Provide correct answer').should('be.visible');
108
+ ChatUiSelectors.chatbotMessageFeedback.should('be.visible');
109
+ ChatUiSelectors.chatbotMessageFeedbackSubmit.should('be.visible').and('be.disabled');
110
+ });
111
+ it('should enable submit button when regular feedback form is valid', () => {
112
+ const botMessage = ModelsMocks.mockBotMessage({
113
+ answer: 'Test answer',
114
+ isGuardrailed: false,
115
+ });
116
+ render(botMessage);
117
+ ChatUiSelectors.chatbotMessageFeedbackThumbsDown.click();
118
+ // Select a feedback option
119
+ ChatUiSelectors.chatbotMessageFeedbackUnrelated
120
+ .parent()
121
+ .find('input')
122
+ .click({ force: true });
123
+ // Submit button should be enabled
124
+ ChatUiSelectors.chatbotMessageFeedbackSubmit.should('be.enabled');
125
+ });
126
+ it('should enable submit button when guardrail feedback form is valid', () => {
127
+ const botMessage = ModelsMocks.mockBotMessage({
128
+ answer: 'Guardrail response',
129
+ isGuardrailed: true,
130
+ });
131
+ render(botMessage);
132
+ ChatUiSelectors.chatbotMessageFeedbackProvideAnswer.click();
133
+ // Fill in the URL field
134
+ ChatUiSelectors.chatbotMessageFeedbackLinkUrl.type('https://example.com');
135
+ // Submit button should be enabled
136
+ ChatUiSelectors.chatbotMessageFeedbackSubmit.should('be.enabled');
137
+ });
138
+ it('should submit feedback form successfully', () => {
139
+ const botMessage = ModelsMocks.mockBotMessage({
140
+ answer: 'Test answer',
141
+ isGuardrailed: false,
142
+ });
143
+ render(botMessage, () => {
144
+ chatbotUiStore.sendMessageFeedback = cy.stub().resolves();
145
+ });
146
+ ChatUiSelectors.chatbotMessageFeedbackThumbsDown.click();
147
+ ChatUiSelectors.chatbotMessageFeedbackUnrelated
148
+ .parent()
149
+ .find('input')
150
+ .click({ force: true });
151
+ ChatUiSelectors.chatbotMessageFeedbackSubmit.click();
152
+ // Should show success state
153
+ ChatUiSelectors.chatbotMessageFeedbackSuccess.should('be.visible');
154
+ });
155
+ it('should submit guardrail feedback form successfully', () => {
156
+ const botMessage = ModelsMocks.mockBotMessage({
157
+ answer: 'Guardrail response',
158
+ isGuardrailed: true,
159
+ });
160
+ render(botMessage, () => {
161
+ chatbotUiStore.sendMessageFeedback = cy.stub().resolves();
162
+ });
163
+ ChatUiSelectors.chatbotMessageFeedbackProvideAnswer.click();
164
+ ChatUiSelectors.chatbotMessageFeedbackLinkUrl.type('https://example.com');
165
+ ChatUiSelectors.chatbotMessageFeedbackSubmit.click();
166
+ // Should show success state
167
+ ChatUiSelectors.chatbotMessageFeedbackSuccess.should('be.visible');
168
+ });
169
+ it('should handle form validation errors', () => {
170
+ const botMessage = ModelsMocks.mockBotMessage({
171
+ answer: 'Test answer',
172
+ isGuardrailed: false,
173
+ });
174
+ render(botMessage);
175
+ ChatUiSelectors.chatbotMessageFeedbackThumbsDown.click();
176
+ // Try to submit without selecting feedback
177
+ ChatUiSelectors.chatbotMessageFeedbackSubmit.should('be.disabled');
178
+ // Select "Other" which requires comment
179
+ ChatUiSelectors.chatbotMessageFeedbackOther.parent().find('input').click({ force: true });
180
+ // Add comment
181
+ ChatUiSelectors.chatbotMessageFeedbackOtherComment.type('Custom feedback');
182
+ // Submit button should be enabled
183
+ ChatUiSelectors.chatbotMessageFeedbackSubmit.should('be.enabled');
184
+ });
185
+ it('should not show title when feedback customization title is not set', () => {
186
+ const botMessage = ModelsMocks.mockBotMessage({
187
+ answer: 'Test answer',
188
+ isGuardrailed: false,
189
+ });
190
+ render(botMessage, () => {
191
+ chatbotUiStore.customizations.feedback = {};
192
+ });
193
+ // Should not show any title
194
+ cy.contains('Rate this answer').should('not.exist');
195
+ // But should still show feedback buttons
196
+ ChatUiSelectors.chatbotMessageFeedbackThumbsUp.should('be.visible');
197
+ ChatUiSelectors.chatbotMessageFeedbackThumbsDown.should('be.visible');
198
+ });
199
+ }
200
+ //# sourceMappingURL=chatbot-message-feedback-popover.shared-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-message-feedback-popover.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ChatParticipantIcon } from '@servicetitan/titan-chat-ui-common';
2
+ import { FC, ReactElement } from 'react';
3
+ interface IChatbotMessageTypingProps {
4
+ avatar: {
5
+ name: string;
6
+ icon: ChatParticipantIcon;
7
+ };
8
+ }
9
+ export declare function runChatbotMessageTypingSharedTests(ChatbotMessageTypingComponent: FC<IChatbotMessageTypingProps>, wrapperComponent?: (component: ReactElement) => ReactElement): void;
10
+ export {};
11
+ //# sourceMappingURL=chatbot-message-typing.shared-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-message-typing.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzC,UAAU,0BAA0B;IAChC,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,mBAAmB,CAAC;KAC7B,CAAC;CACL;AAED,wBAAgB,kCAAkC,CAC9C,6BAA6B,EAAE,EAAE,CAAC,0BAA0B,CAAC,EAC7D,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QA+F/D"}
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ChatParticipantIcon } from '@servicetitan/titan-chat-ui-common';
3
+ import { CHATBOT_API_CLIENT, ModelsMocks } from '@servicetitan/titan-chatbot-api';
4
+ import { testInitContainerChatbot, testRenderWrapperChatbot } from '../..';
5
+ import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
6
+ export function runChatbotMessageTypingSharedTests(ChatbotMessageTypingComponent, wrapperComponent) {
7
+ let container;
8
+ let api;
9
+ const mockApiClient = () => {
10
+ api.postSession = cy.stub().resolves(ModelsMocks.mockSession());
11
+ api.getOptions = cy.stub().resolves(ModelsMocks.mockFrontendModel());
12
+ };
13
+ beforeEach(() => {
14
+ container = testInitContainerChatbot();
15
+ api = container.get(CHATBOT_API_CLIENT);
16
+ mockApiClient();
17
+ cy.viewport(550, 800);
18
+ });
19
+ const render = (icon, onAfterInit) => {
20
+ const avatar = {
21
+ name: 'Test User Name',
22
+ icon,
23
+ };
24
+ return cy.wrap(null).then(() => {
25
+ const component = _jsx(ChatbotMessageTypingComponent, { avatar: avatar });
26
+ const wrappedComponent = wrapperComponent ? wrapperComponent(component) : component;
27
+ return testRenderWrapperChatbot(container, wrappedComponent, onAfterInit);
28
+ });
29
+ };
30
+ it('should render message with bot icon', () => {
31
+ render(ChatParticipantIcon.Bot);
32
+ ChatUiSelectors.chatMessageTyping.should('be.visible');
33
+ ChatUiSelectors.chatMessageTypingDots.should('be.visible');
34
+ ChatUiSelectors.chatAvatarBot
35
+ .should('be.visible')
36
+ .invoke('css', 'background-image')
37
+ .then(bgColor => {
38
+ const isSvg = Boolean(bgColor.indexOf('data:image/svg+xml;base64') >= 0);
39
+ expect(isSvg).to.eq(true);
40
+ });
41
+ });
42
+ it('should render message with empty icon', () => {
43
+ render(ChatParticipantIcon.Empty);
44
+ ChatUiSelectors.chatMessageTyping.should('be.visible');
45
+ ChatUiSelectors.chatMessageTypingDots.should('be.visible');
46
+ ChatUiSelectors.chatAvatarBot.should('not.exist');
47
+ ChatUiSelectors.chatAvatarInitials.should('not.exist');
48
+ });
49
+ it('should render message with initials', () => {
50
+ render(ChatParticipantIcon.Initials);
51
+ ChatUiSelectors.chatMessageTyping.should('be.visible');
52
+ ChatUiSelectors.chatMessageTypingDots.should('be.visible');
53
+ ChatUiSelectors.chatAvatarInitials.should('be.visible').should('contain.text', 'TU');
54
+ });
55
+ it('should show different messages during the time', () => {
56
+ cy.clock(Date.parse('2023-10-01T00:00:00Z'));
57
+ render(ChatParticipantIcon.Bot);
58
+ // Verify the rendered component shows typing dots initially
59
+ ChatUiSelectors.chatMessageTyping.should('be.visible');
60
+ ChatUiSelectors.chatMessageTypingDots.should('be.visible');
61
+ // After 10 seconds, should show first message
62
+ cy.tick(10000);
63
+ ChatUiSelectors.chatMessageContentAgent
64
+ .should('be.visible')
65
+ .should('contain.text', 'Looking for the final details');
66
+ ChatUiSelectors.chatMessageTypingDots.should('not.exist');
67
+ // After 20 seconds total, should show second message
68
+ cy.tick(10000);
69
+ ChatUiSelectors.chatMessageContentAgent
70
+ .should('be.visible')
71
+ .should('contain.text', 'This is taking longer than usual, please give me a little bit more time');
72
+ ChatUiSelectors.chatMessageTypingDots.should('not.exist');
73
+ // After additional time, should still show the same message
74
+ cy.tick(60000);
75
+ ChatUiSelectors.chatMessageContentAgent
76
+ .should('be.visible')
77
+ .should('contain.text', 'This is taking longer than usual, please give me a little bit more time');
78
+ ChatUiSelectors.chatMessageTypingDots.should('not.exist');
79
+ });
80
+ }
81
+ //# sourceMappingURL=chatbot-message-typing.shared-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-message-typing.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { FC, ReactElement } from 'react';
2
+ interface IChatbotRestartDialogProps {
3
+ confirmText: string;
4
+ onClose: () => void;
5
+ }
6
+ export declare function runChatbotRestartDialogSharedTests(ChatbotRestartDialogComponent: FC<IChatbotRestartDialogProps>, wrapperComponent?: (component: ReactElement) => ReactElement): void;
7
+ export {};
8
+ //# sourceMappingURL=chatbot-restart-dialog.shared-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-restart-dialog.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAKzC,UAAU,0BAA0B;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,kCAAkC,CAC9C,6BAA6B,EAAE,EAAE,CAAC,0BAA0B,CAAC,EAC7D,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QAsE/D"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CHATBOT_API_CLIENT, CHATBOT_UI_STORE_TOKEN, ModelsMocks, } from '@servicetitan/titan-chatbot-api';
3
+ import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
4
+ import { testInitContainerChatbot, testRenderWrapperChatbot } from '../../utils/test-utils-chatbot';
5
+ export function runChatbotRestartDialogSharedTests(ChatbotRestartDialogComponent, wrapperComponent) {
6
+ let container;
7
+ let api;
8
+ let chatbotUiStore;
9
+ const mockApiClient = () => {
10
+ api.postSession = cy.stub().resolves(ModelsMocks.mockSession());
11
+ api.getOptions = cy.stub().resolves(ModelsMocks.mockFrontendModel());
12
+ };
13
+ beforeEach(() => {
14
+ container = testInitContainerChatbot();
15
+ api = container.get(CHATBOT_API_CLIENT);
16
+ chatbotUiStore = container.get(CHATBOT_UI_STORE_TOKEN);
17
+ mockApiClient();
18
+ cy.viewport(550, 800);
19
+ });
20
+ const render = (confirmText, onClose, onAfterInit) => {
21
+ return cy.wrap(null).then(() => {
22
+ const component = (_jsx(ChatbotRestartDialogComponent, { confirmText: confirmText, onClose: onClose }));
23
+ const wrappedComponent = wrapperComponent ? wrapperComponent(component) : component;
24
+ return testRenderWrapperChatbot(container, wrappedComponent, onAfterInit);
25
+ });
26
+ };
27
+ it('should render restart dialog with confirm text', () => {
28
+ const onClose = cy.stub();
29
+ const confirmText = 'Are you sure you want to restart the conversation?';
30
+ render(confirmText, onClose);
31
+ ChatUiSelectors.chatbotRestartDialog.should('be.visible').within(() => {
32
+ cy.contains(confirmText).should('be.visible');
33
+ cy.get('button').contains('Restart').should('be.visible');
34
+ cy.get('button').contains('Cancel').should('be.visible');
35
+ });
36
+ });
37
+ it('should call onClose when Cancel button is clicked', () => {
38
+ const onClose = cy.stub().as('onClose');
39
+ const confirmText = 'Test confirmation text';
40
+ render(confirmText, onClose);
41
+ ChatUiSelectors.chatbotRestartDialog.should('be.visible').within(() => {
42
+ cy.get('button').contains('Cancel').closest('button').click();
43
+ });
44
+ cy.get('@onClose').should('have.been.called');
45
+ });
46
+ it('should call restart and onClose when Restart button is clicked', () => {
47
+ const onClose = cy.stub().as('onClose');
48
+ const confirmText = 'Test confirmation text';
49
+ render(confirmText, onClose).then(() => {
50
+ cy.spy(chatbotUiStore, 'restart').as('restart');
51
+ });
52
+ ChatUiSelectors.chatbotRestartDialog.should('be.visible').within(() => {
53
+ cy.get('button').contains('Restart').closest('button').click();
54
+ });
55
+ cy.wait(1);
56
+ cy.get('@onClose').should('have.been.called');
57
+ cy.get('@restart').should('have.been.called');
58
+ });
59
+ }
60
+ //# sourceMappingURL=chatbot-restart-dialog.shared-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-restart-dialog.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { FC, ReactElement } from 'react';
2
+ interface ILinkProps {
3
+ className?: string;
4
+ onClick?: (...args: any[]) => any;
5
+ }
6
+ export declare function runChatbotRestartLinkSharedTests(ChatbotRestartLinkComponent: FC<ILinkProps>, wrapperComponent?: (component: ReactElement) => ReactElement): void;
7
+ export {};
8
+ //# sourceMappingURL=chatbot-restart-link.shared-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-restart-link.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzC,UAAU,UAAU;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CACrC;AAED,wBAAgB,gCAAgC,CAC5C,2BAA2B,EAAE,EAAE,CAAC,UAAU,CAAC,EAC3C,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QAgG/D"}
@@ -0,0 +1,77 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CHATBOT_API_CLIENT, CHATBOT_UI_STORE_TOKEN, ModelsMocks, } from '@servicetitan/titan-chatbot-api';
3
+ import { testInitContainerChatbot, testRenderWrapperChatbot } from '../..';
4
+ import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
5
+ export function runChatbotRestartLinkSharedTests(ChatbotRestartLinkComponent, wrapperComponent) {
6
+ let container;
7
+ let api;
8
+ let chatbotUiStore;
9
+ const mockApiClient = () => {
10
+ api.postSession = cy.stub().resolves(ModelsMocks.mockSession());
11
+ api.getOptions = cy.stub().resolves(ModelsMocks.mockFrontendModel());
12
+ };
13
+ beforeEach(() => {
14
+ container = testInitContainerChatbot();
15
+ api = container.get(CHATBOT_API_CLIENT);
16
+ chatbotUiStore = container.get(CHATBOT_UI_STORE_TOKEN);
17
+ mockApiClient();
18
+ cy.viewport(550, 800);
19
+ });
20
+ const render = (props = {}, onAfterInit) => {
21
+ return cy.wrap(null).then(() => {
22
+ const component = (_jsx(ChatbotRestartLinkComponent, { ...props, children: "Restart Session" }));
23
+ const wrappedComponent = wrapperComponent ? wrapperComponent(component) : component;
24
+ return testRenderWrapperChatbot(container, wrappedComponent, onAfterInit);
25
+ });
26
+ };
27
+ it('should render restart link with children', () => {
28
+ render();
29
+ ChatUiSelectors.chatbotRestartLink.should('be.visible');
30
+ cy.contains('Restart Session').should('be.visible');
31
+ });
32
+ it('should open restart dialog when link is clicked', () => {
33
+ render();
34
+ ChatUiSelectors.chatbotRestartLink.click();
35
+ ChatUiSelectors.chatbotRestartDialog.should('be.visible').within(() => {
36
+ cy.contains('Restart Titan session?').should('be.visible');
37
+ cy.get('button').contains('Restart').should('be.visible');
38
+ cy.get('button').contains('Cancel').should('be.visible');
39
+ });
40
+ });
41
+ it('should call onClick prop when link is clicked', () => {
42
+ const onClick = cy.stub().as('onClick');
43
+ render({ onClick });
44
+ ChatUiSelectors.chatbotRestartLink.click();
45
+ cy.get('@onClick').should('have.been.called');
46
+ ChatUiSelectors.chatbotRestartDialog.should('be.visible');
47
+ });
48
+ it('should close dialog when Cancel button is clicked', () => {
49
+ render();
50
+ ChatUiSelectors.chatbotRestartLink.click();
51
+ ChatUiSelectors.chatbotRestartDialog.should('be.visible').within(() => {
52
+ cy.get('button').contains('Cancel').closest('button').click();
53
+ });
54
+ ChatUiSelectors.chatbotRestartDialog.should('not.exist');
55
+ });
56
+ it('should close dialog and restart session when Restart button is clicked', () => {
57
+ render().then(() => {
58
+ cy.spy(chatbotUiStore, 'restart').as('restart');
59
+ });
60
+ ChatUiSelectors.chatbotRestartLink.click();
61
+ ChatUiSelectors.chatbotRestartDialog.should('be.visible').within(() => {
62
+ cy.get('button').contains('Restart').closest('button').click();
63
+ });
64
+ cy.wait(1).then(() => {
65
+ cy.get('@restart').should('have.been.called');
66
+ });
67
+ ChatUiSelectors.chatbotRestartDialog.should('not.exist');
68
+ });
69
+ it('should pass through additional Link props', () => {
70
+ const customClassName = 'custom-restart-link';
71
+ render({ className: customClassName });
72
+ ChatUiSelectors.chatbotRestartLink
73
+ .should('be.visible')
74
+ .should('have.class', customClassName);
75
+ });
76
+ }
77
+ //# sourceMappingURL=chatbot-restart-link.shared-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-restart-link.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { FC, ReactElement } from 'react';
2
+ interface IChatbotSessionFeedbackModalProps {
3
+ onClose: () => void;
4
+ }
5
+ export declare function runChatbotSessionFeedbackModalSharedTests(ChatbotSessionFeedbackModalComponent: FC<IChatbotSessionFeedbackModalProps>, wrapperComponent?: (component: ReactElement) => ReactElement): void;
6
+ export {};
7
+ //# sourceMappingURL=chatbot-session-feedback-modal.shared-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-session-feedback-modal.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzC,UAAU,iCAAiC;IACvC,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,yCAAyC,CACrD,oCAAoC,EAAE,EAAE,CAAC,iCAAiC,CAAC,EAC3E,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QAkK/D"}