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

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 (168) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.d.ts +0 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +0 -3
  5. package/dist/index.js.map +1 -1
  6. package/package.json +5 -12
  7. package/src/index.ts +0 -3
  8. package/tsconfig.tsbuildinfo +1 -1
  9. package/dist/tests/index.d.ts +0 -30
  10. package/dist/tests/index.d.ts.map +0 -1
  11. package/dist/tests/index.js +0 -30
  12. package/dist/tests/index.js.map +0 -1
  13. package/dist/tests/titan-chat-ui/chat-error.shared-tests.d.ts +0 -3
  14. package/dist/tests/titan-chat-ui/chat-error.shared-tests.d.ts.map +0 -1
  15. package/dist/tests/titan-chat-ui/chat-error.shared-tests.js +0 -138
  16. package/dist/tests/titan-chat-ui/chat-error.shared-tests.js.map +0 -1
  17. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.d.ts +0 -7
  18. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.d.ts.map +0 -1
  19. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.js +0 -123
  20. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.js.map +0 -1
  21. package/dist/tests/titan-chat-ui/chat-input.shared-tests.d.ts +0 -3
  22. package/dist/tests/titan-chat-ui/chat-input.shared-tests.d.ts.map +0 -1
  23. package/dist/tests/titan-chat-ui/chat-input.shared-tests.js +0 -71
  24. package/dist/tests/titan-chat-ui/chat-input.shared-tests.js.map +0 -1
  25. package/dist/tests/titan-chat-ui/chat-log.shared-tests.d.ts +0 -9
  26. package/dist/tests/titan-chat-ui/chat-log.shared-tests.d.ts.map +0 -1
  27. package/dist/tests/titan-chat-ui/chat-log.shared-tests.js +0 -73
  28. package/dist/tests/titan-chat-ui/chat-log.shared-tests.js.map +0 -1
  29. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.d.ts +0 -8
  30. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.d.ts.map +0 -1
  31. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.js +0 -118
  32. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.js.map +0 -1
  33. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.d.ts +0 -3
  34. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.d.ts.map +0 -1
  35. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.js +0 -110
  36. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.js.map +0 -1
  37. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.d.ts +0 -3
  38. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.d.ts.map +0 -1
  39. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.js +0 -76
  40. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.js.map +0 -1
  41. package/dist/tests/titan-chat-ui/chat.shared-tests.d.ts +0 -9
  42. package/dist/tests/titan-chat-ui/chat.shared-tests.d.ts.map +0 -1
  43. package/dist/tests/titan-chat-ui/chat.shared-tests.js +0 -111
  44. package/dist/tests/titan-chat-ui/chat.shared-tests.js.map +0 -1
  45. package/dist/tests/titan-chat-ui/message-agent.shared-tests.d.ts +0 -27
  46. package/dist/tests/titan-chat-ui/message-agent.shared-tests.d.ts.map +0 -1
  47. package/dist/tests/titan-chat-ui/message-agent.shared-tests.js +0 -67
  48. package/dist/tests/titan-chat-ui/message-agent.shared-tests.js.map +0 -1
  49. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.d.ts +0 -10
  50. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.d.ts.map +0 -1
  51. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.js +0 -88
  52. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.js.map +0 -1
  53. package/dist/tests/titan-chat-ui/message-system.shared-tests.d.ts +0 -16
  54. package/dist/tests/titan-chat-ui/message-system.shared-tests.d.ts.map +0 -1
  55. package/dist/tests/titan-chat-ui/message-system.shared-tests.js +0 -65
  56. package/dist/tests/titan-chat-ui/message-system.shared-tests.js.map +0 -1
  57. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.d.ts +0 -8
  58. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.d.ts.map +0 -1
  59. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.js +0 -63
  60. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.js.map +0 -1
  61. package/dist/tests/titan-chat-ui/message-typing.shared-tests.d.ts +0 -12
  62. package/dist/tests/titan-chat-ui/message-typing.shared-tests.d.ts.map +0 -1
  63. package/dist/tests/titan-chat-ui/message-typing.shared-tests.js +0 -46
  64. package/dist/tests/titan-chat-ui/message-typing.shared-tests.js.map +0 -1
  65. package/dist/tests/titan-chat-ui/message-user.shared-tests.d.ts +0 -10
  66. package/dist/tests/titan-chat-ui/message-user.shared-tests.d.ts.map +0 -1
  67. package/dist/tests/titan-chat-ui/message-user.shared-tests.js +0 -64
  68. package/dist/tests/titan-chat-ui/message-user.shared-tests.js.map +0 -1
  69. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.d.ts +0 -7
  70. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.d.ts.map +0 -1
  71. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.js +0 -118
  72. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.js.map +0 -1
  73. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.d.ts +0 -9
  74. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.d.ts.map +0 -1
  75. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.js +0 -162
  76. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.js.map +0 -1
  77. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.d.ts +0 -15
  78. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.d.ts.map +0 -1
  79. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.js +0 -123
  80. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.js.map +0 -1
  81. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.d.ts +0 -9
  82. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.d.ts.map +0 -1
  83. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.js +0 -84
  84. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.js.map +0 -1
  85. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.d.ts +0 -8
  86. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.d.ts.map +0 -1
  87. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.js +0 -142
  88. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.js.map +0 -1
  89. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.d.ts +0 -8
  90. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.d.ts.map +0 -1
  91. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.js +0 -105
  92. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.js.map +0 -1
  93. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.d.ts +0 -3
  94. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.d.ts.map +0 -1
  95. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.js +0 -86
  96. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.js.map +0 -1
  97. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.d.ts +0 -3
  98. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.d.ts.map +0 -1
  99. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.js +0 -143
  100. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.js.map +0 -1
  101. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.d.ts +0 -8
  102. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.d.ts.map +0 -1
  103. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.js +0 -200
  104. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.js.map +0 -1
  105. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.d.ts +0 -11
  106. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.d.ts.map +0 -1
  107. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.js +0 -81
  108. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.js.map +0 -1
  109. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.d.ts +0 -8
  110. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.d.ts.map +0 -1
  111. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.js +0 -60
  112. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.js.map +0 -1
  113. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.d.ts +0 -8
  114. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.d.ts.map +0 -1
  115. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.js +0 -77
  116. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.js.map +0 -1
  117. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.d.ts +0 -7
  118. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.d.ts.map +0 -1
  119. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.js +0 -130
  120. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.js.map +0 -1
  121. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.d.ts +0 -9
  122. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.d.ts.map +0 -1
  123. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.js +0 -157
  124. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.js.map +0 -1
  125. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.d.ts +0 -9
  126. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.d.ts.map +0 -1
  127. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.js +0 -114
  128. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.js.map +0 -1
  129. package/dist/utils/test-utils-chatbot.d.ts +0 -5
  130. package/dist/utils/test-utils-chatbot.d.ts.map +0 -1
  131. package/dist/utils/test-utils-chatbot.js +0 -55
  132. package/dist/utils/test-utils-chatbot.js.map +0 -1
  133. package/dist/utils/test-utils.d.ts +0 -6
  134. package/dist/utils/test-utils.d.ts.map +0 -1
  135. package/dist/utils/test-utils.js +0 -38
  136. package/dist/utils/test-utils.js.map +0 -1
  137. package/src/tests/index.ts +0 -30
  138. package/src/tests/titan-chat-ui/chat-error.shared-tests.tsx +0 -185
  139. package/src/tests/titan-chat-ui/chat-input-file.shared-tests.tsx +0 -182
  140. package/src/tests/titan-chat-ui/chat-input.shared-tests.tsx +0 -99
  141. package/src/tests/titan-chat-ui/chat-log.shared-tests.tsx +0 -117
  142. package/src/tests/titan-chat-ui/chat-messages.shared-tests.tsx +0 -156
  143. package/src/tests/titan-chat-ui/chat-notifications.shared-tests.tsx +0 -153
  144. package/src/tests/titan-chat-ui/chat-timer.shared-tests.tsx +0 -106
  145. package/src/tests/titan-chat-ui/chat.shared-tests.tsx +0 -158
  146. package/src/tests/titan-chat-ui/message-agent.shared-tests.tsx +0 -170
  147. package/src/tests/titan-chat-ui/message-content-file.shared-tests.tsx +0 -139
  148. package/src/tests/titan-chat-ui/message-system.shared-tests.tsx +0 -147
  149. package/src/tests/titan-chat-ui/message-timeout.shared-tests.tsx +0 -117
  150. package/src/tests/titan-chat-ui/message-typing.shared-tests.tsx +0 -92
  151. package/src/tests/titan-chat-ui/message-user.shared-tests.tsx +0 -138
  152. package/src/tests/titan-chatbot-ui/chatbot-filters.shared-tests.tsx +0 -164
  153. package/src/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.tsx +0 -225
  154. package/src/tests/titan-chatbot-ui/chatbot-links.shared-tests.tsx +0 -189
  155. package/src/tests/titan-chatbot-ui/chatbot-live.shared-tests.tsx +0 -127
  156. package/src/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.tsx +0 -187
  157. package/src/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.tsx +0 -144
  158. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.tsx +0 -127
  159. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.tsx +0 -198
  160. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.tsx +0 -285
  161. package/src/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.tsx +0 -112
  162. package/src/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.tsx +0 -91
  163. package/src/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.tsx +0 -116
  164. package/src/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.tsx +0 -182
  165. package/src/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.tsx +0 -221
  166. package/src/tests/titan-chatbot-ui/chatbot.shared-tests.tsx +0 -158
  167. package/src/utils/test-utils-chatbot.tsx +0 -73
  168. package/src/utils/test-utils.tsx +0 -52
@@ -1,105 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { mockChatMessageModelText } from '@servicetitan/titan-chat-ui-common';
3
- import { CHATBOT_API_CLIENT, CHATBOT_UI_STORE_TOKEN, ModelsMocks, } from '@servicetitan/titan-chatbot-api';
4
- import { testInitContainerChatbot, testRenderWrapperChatbot } from '../..';
5
- import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
6
- export function runChatbotMessageAnswerSharedTests(ChatbotMessageAnswerComponent, wrapperComponent) {
7
- let container;
8
- let api;
9
- let chatbotUiStore;
10
- const mockApiClient = () => {
11
- api.postSession = cy.stub().resolves(ModelsMocks.mockSession());
12
- api.getOptions = cy.stub().resolves(ModelsMocks.mockFrontendModel());
13
- };
14
- beforeEach(() => {
15
- container = testInitContainerChatbot();
16
- api = container.get(CHATBOT_API_CLIENT);
17
- chatbotUiStore = container.get(CHATBOT_UI_STORE_TOKEN);
18
- mockApiClient();
19
- cy.viewport(550, 800);
20
- });
21
- const render = (message, onAfterInit) => {
22
- return cy.wrap(null).then(() => {
23
- const component = _jsx(ChatbotMessageAnswerComponent, { message: message });
24
- const wrappedComponent = wrapperComponent ? wrapperComponent(component) : component;
25
- return testRenderWrapperChatbot(container, wrappedComponent, onAfterInit);
26
- });
27
- };
28
- it('should render basic message answer', () => {
29
- const message = mockChatMessageModelText(false, {
30
- message: 'This is a test answer from the chatbot',
31
- });
32
- render(message);
33
- ChatUiSelectors.chatbotMessageAnswer.should('be.visible');
34
- ChatUiSelectors.chatbotMessageAnswer.should('contain.text', 'This is a test answer from the chatbot');
35
- });
36
- it('should render message answer with bot message data and links', () => {
37
- const botMessageWithFeedback = {
38
- ...ModelsMocks.mockBotMessage({ answer: 'Test answer with links' }),
39
- scoredUrls: [
40
- ModelsMocks.mockScoredUrl({
41
- url: 'https://example.com/article1',
42
- title: 'Example Article 1',
43
- score: 0.9,
44
- }),
45
- ModelsMocks.mockScoredUrl({
46
- url: 'https://example.com/article2',
47
- title: 'Example Article 2',
48
- score: 0.8,
49
- }),
50
- ],
51
- };
52
- const message = mockChatMessageModelText(false, {
53
- message: 'Test answer with links',
54
- data: botMessageWithFeedback,
55
- });
56
- render(message);
57
- ChatUiSelectors.chatbotMessageAnswer.should('be.visible');
58
- ChatUiSelectors.chatbotMessageAnswer.should('contain.text', 'Test answer with links');
59
- // Check that links are rendered
60
- ChatUiSelectors.chatbotLinksMore.should('contain.text', 'Learn more').click();
61
- ChatUiSelectors.chatbotLinksLink.should('be.visible');
62
- });
63
- it('should render multiline text correctly', () => {
64
- const multilineMessage = 'Line 1\nLine 2\nLine 3';
65
- const message = mockChatMessageModelText(false, {
66
- message: multilineMessage,
67
- });
68
- render(message);
69
- ChatUiSelectors.chatbotMessageAnswer.should('be.visible');
70
- ChatUiSelectors.chatbotMessageAnswer.should('contain.text', 'Line 1');
71
- ChatUiSelectors.chatbotMessageAnswer.should('contain.text', 'Line 2');
72
- ChatUiSelectors.chatbotMessageAnswer.should('contain.text', 'Line 3');
73
- });
74
- it('should trigger scroll when links are toggled for last message', () => {
75
- const botMessageWithFeedback = {
76
- ...ModelsMocks.mockBotMessage({ answer: 'Last message with links' }),
77
- scoredUrls: [
78
- ModelsMocks.mockScoredUrl({
79
- url: 'https://example.com/article',
80
- title: 'Example Article',
81
- score: 0.9,
82
- }),
83
- ],
84
- };
85
- const message = mockChatMessageModelText(false, {
86
- message: 'Last message with links',
87
- data: botMessageWithFeedback,
88
- });
89
- render(message, () => {
90
- // Set this message as the last message in the store
91
- chatbotUiStore.setMessages([message]);
92
- });
93
- cy.wait(1).then(() => {
94
- var _a;
95
- // Verify the message is the last one in the store
96
- expect((_a = chatbotUiStore.messages.at(-1)) === null || _a === void 0 ? void 0 : _a.id).to.equal(message.id);
97
- });
98
- ChatUiSelectors.chatbotMessageAnswer.should('be.visible');
99
- // Toggle links to trigger scroll
100
- ChatUiSelectors.chatbotLinksMore.click();
101
- // Verify scroll was triggered (this would be implementation-specific)
102
- cy.wait(150); // Wait for setTimeout to complete
103
- });
104
- }
105
- //# sourceMappingURL=chatbot-message-answer.shared-tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatbot-message-answer.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { FC, ReactElement } from 'react';
2
- export declare function runChatbotMessageFeedbackFormGuardrailSharedTests(ChatbotMessageFeedbackFormGuardrailComponent: FC, wrapperComponent?: (component: ReactElement) => ReactElement): void;
3
- //# sourceMappingURL=chatbot-message-feedback-form-guardrail.shared-tests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatbot-message-feedback-form-guardrail.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzC,wBAAgB,iDAAiD,CAC7D,4CAA4C,EAAE,EAAE,EAChD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QAkH/D"}
@@ -1,86 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Provider, useDependencies } from '@servicetitan/react-ioc';
3
- import { CHATBOT_API_CLIENT, MessageFeedbackGuardrailStore, ModelsMocks, } from '@servicetitan/titan-chatbot-api';
4
- import { testInitContainerChatbot, testRenderWrapperChatbot } from '../..';
5
- import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
6
- export function runChatbotMessageFeedbackFormGuardrailSharedTests(ChatbotMessageFeedbackFormGuardrailComponent, wrapperComponent) {
7
- let container;
8
- let api;
9
- let messageFeedbackGuardrailStore;
10
- const mockApiClient = () => {
11
- api.postSession = cy.stub().resolves(ModelsMocks.mockSession());
12
- api.getOptions = cy.stub().resolves(ModelsMocks.mockFrontendModel());
13
- };
14
- beforeEach(() => {
15
- container = testInitContainerChatbot();
16
- container.bind(MessageFeedbackGuardrailStore).toSelf().inSingletonScope();
17
- api = container.get(CHATBOT_API_CLIENT);
18
- messageFeedbackGuardrailStore = container.get(MessageFeedbackGuardrailStore);
19
- mockApiClient();
20
- cy.viewport(550, 800);
21
- });
22
- const getFormError = () => cy.get('[data-anvil-component="Banner"]');
23
- const checkValid = () => {
24
- cy.getCy('validator').click();
25
- getFormError().should('not.exist');
26
- };
27
- const checkInvalid = () => {
28
- cy.getCy('validator').click();
29
- getFormError().should('be.visible');
30
- };
31
- const render = (onAfterInit) => {
32
- return cy.wrap(null).then(() => {
33
- const Validator = () => {
34
- const [formStore] = useDependencies(MessageFeedbackGuardrailStore);
35
- return (_jsx("button", { className: "m-t-3", "data-cy": "validator", onClick: () => formStore.formState.validate(), children: "Validate" }));
36
- };
37
- const component = (_jsxs(Provider, { singletons: [
38
- {
39
- provide: MessageFeedbackGuardrailStore,
40
- useValue: messageFeedbackGuardrailStore,
41
- },
42
- ], children: [_jsx(ChatbotMessageFeedbackFormGuardrailComponent, {}), _jsx(Validator, {})] }));
43
- const wrappedComponent = wrapperComponent ? wrapperComponent(component) : component;
44
- return testRenderWrapperChatbot(container, wrappedComponent, onAfterInit);
45
- });
46
- };
47
- it('should render form', () => {
48
- render();
49
- ChatUiSelectors.chatbotMessageFeedback.should('be.visible');
50
- ChatUiSelectors.chatbotMessageFeedbackLinkUrl.should('be.visible');
51
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.should('be.visible');
52
- checkInvalid();
53
- getFormError().find('.Banner__title').should('contain.text', 'Form Incomplete');
54
- getFormError()
55
- .find('ul > li')
56
- .should('contain.text', 'At least one input must be provided.');
57
- ChatUiSelectors.chatbotMessageFeedbackLinkUrl.type('https://example.com');
58
- checkValid();
59
- ChatUiSelectors.chatbotMessageFeedbackLinkUrl.clear();
60
- checkInvalid();
61
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.type('Test comment');
62
- checkValid();
63
- });
64
- it('should validate form when both fields are filled', () => {
65
- render();
66
- ChatUiSelectors.chatbotMessageFeedbackLinkUrl.type('https://example.com');
67
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.type('Additional feedback comment');
68
- checkValid();
69
- });
70
- it('should show error when form is submitted empty', () => {
71
- render();
72
- checkInvalid();
73
- getFormError().should('be.visible');
74
- getFormError().find('.Banner__title').should('contain.text', 'Form Incomplete');
75
- });
76
- it('should clear validation error when valid input is provided', () => {
77
- render();
78
- // First show the error
79
- checkInvalid();
80
- getFormError().should('be.visible');
81
- // Then provide valid input
82
- ChatUiSelectors.chatbotMessageFeedbackLinkUrl.type('https://valid-url.com');
83
- checkValid();
84
- });
85
- }
86
- //# sourceMappingURL=chatbot-message-feedback-form-guardrail.shared-tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatbot-message-feedback-form-guardrail.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { FC, ReactElement } from 'react';
2
- export declare function runChatbotMessageFeedbackFormSharedTests(ChatbotMessageFeedbackFormComponent: FC, wrapperComponent?: (component: ReactElement) => ReactElement): void;
3
- //# sourceMappingURL=chatbot-message-feedback-form.shared-tests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatbot-message-feedback-form.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzC,wBAAgB,wCAAwC,CACpD,mCAAmC,EAAE,EAAE,EACvC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QAsL/D"}
@@ -1,143 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Provider, useDependencies } from '@servicetitan/react-ioc';
3
- import { CHATBOT_API_CLIENT, CHATBOT_UI_STORE_TOKEN, MessageFeedbackStore, ModelsMocks, } from '@servicetitan/titan-chatbot-api';
4
- import { testInitContainerChatbot, testRenderWrapperChatbot } from '../..';
5
- import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
6
- export function runChatbotMessageFeedbackFormSharedTests(ChatbotMessageFeedbackFormComponent, wrapperComponent) {
7
- let container;
8
- let api;
9
- let chatbotUiStore;
10
- let messageFeedbackStore;
11
- const mockApiClient = () => {
12
- api.postSession = cy.stub().resolves(ModelsMocks.mockSession());
13
- api.getOptions = cy.stub().resolves(ModelsMocks.mockFrontendModel());
14
- };
15
- beforeEach(() => {
16
- container = testInitContainerChatbot();
17
- container.bind(MessageFeedbackStore).toSelf().inSingletonScope();
18
- api = container.get(CHATBOT_API_CLIENT);
19
- chatbotUiStore = container.get(CHATBOT_UI_STORE_TOKEN);
20
- messageFeedbackStore = container.get(MessageFeedbackStore);
21
- mockApiClient();
22
- cy.viewport(550, 800);
23
- });
24
- const getFormError = () => ChatUiSelectors.chatbotMessageFeedback.find('.FormField__errorText,[class^="_error-container"]');
25
- const checkValid = () => {
26
- cy.getCy('validator').click();
27
- getFormError().should('not.exist');
28
- };
29
- const checkInvalid = () => {
30
- cy.getCy('validator').click();
31
- getFormError().should('be.visible');
32
- };
33
- const render = (onAfterInit) => {
34
- return cy.wrap(null).then(() => {
35
- const Validator = () => {
36
- const [formStore] = useDependencies(MessageFeedbackStore);
37
- return (_jsx("button", { style: { marginTop: '20px' }, "data-cy": "validator", onClick: () => formStore.formState.validate(), children: "Validate" }));
38
- };
39
- const component = (_jsxs(Provider, { singletons: [
40
- {
41
- provide: MessageFeedbackStore,
42
- useValue: messageFeedbackStore,
43
- },
44
- ], children: [_jsx(ChatbotMessageFeedbackFormComponent, {}), _jsx(Validator, {})] }));
45
- const wrappedComponent = wrapperComponent ? wrapperComponent(component) : component;
46
- return testRenderWrapperChatbot(container, wrappedComponent, onAfterInit);
47
- });
48
- };
49
- it('should render default state external', () => {
50
- render();
51
- cy.clock(Date.parse('2023-10-01T00:00:00Z'));
52
- // Default render
53
- ChatUiSelectors.chatbotMessageFeedback.should('be.visible');
54
- ChatUiSelectors.chatbotMessageFeedbackUnrelated.should('be.visible');
55
- ChatUiSelectors.chatbotMessageFeedbackUnclear.should('be.visible');
56
- ChatUiSelectors.chatbotMessageFeedbackNotFull.should('be.visible');
57
- ChatUiSelectors.chatbotMessageFeedbackIncorrect.should('be.visible');
58
- ChatUiSelectors.chatbotMessageFeedbackOther.should('be.visible');
59
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.should('not.exist');
60
- checkValid();
61
- // Click 'other' and check comment textarea
62
- ChatUiSelectors.chatbotMessageFeedbackOther.parent().find('input').click({ force: true });
63
- ChatUiSelectors.chatbotMessageFeedbackOtherComment
64
- .should('be.visible')
65
- .type('Test comment');
66
- getFormError().should('not.exist');
67
- checkValid();
68
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.clear().blur();
69
- getFormError().should('be.visible').should('contain.text', 'Enter details.');
70
- checkInvalid();
71
- });
72
- it('should render default state internal', () => {
73
- render(() => {
74
- chatbotUiStore.customizations.feedback = {
75
- isCommentAlwaysRequired: true,
76
- };
77
- });
78
- cy.clock(Date.parse('2023-10-01T00:00:00Z'));
79
- // Default render
80
- ChatUiSelectors.chatbotMessageFeedback.should('be.visible');
81
- ChatUiSelectors.chatbotMessageFeedbackUnrelated.should('be.visible');
82
- ChatUiSelectors.chatbotMessageFeedbackUnclear.should('be.visible');
83
- ChatUiSelectors.chatbotMessageFeedbackNotFull.should('be.visible');
84
- ChatUiSelectors.chatbotMessageFeedbackIncorrect.should('be.visible');
85
- ChatUiSelectors.chatbotMessageFeedbackOther.should('be.visible');
86
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.should('be.visible');
87
- checkInvalid();
88
- // Don't click 'other' and check comment textarea: should be mandatory
89
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.focus().blur();
90
- getFormError().should('be.visible').should('contain.text', 'Enter details.');
91
- checkInvalid();
92
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.type('Test comment');
93
- checkValid();
94
- });
95
- it('should validate form when selecting feedback option without other', () => {
96
- render();
97
- cy.clock(Date.parse('2023-10-01T00:00:00Z'));
98
- ChatUiSelectors.chatbotMessageFeedbackUnrelated
99
- .parent()
100
- .find('input')
101
- .click({ force: true });
102
- checkValid();
103
- ChatUiSelectors.chatbotMessageFeedbackUnclear.parent().find('input').click({ force: true });
104
- checkValid();
105
- ChatUiSelectors.chatbotMessageFeedbackIncorrect
106
- .parent()
107
- .find('input')
108
- .click({ force: true });
109
- checkValid();
110
- });
111
- it('should handle multiple selection changes', () => {
112
- render();
113
- cy.clock(Date.parse('2023-10-01T00:00:00Z'));
114
- // First select a standard option
115
- ChatUiSelectors.chatbotMessageFeedbackUnrelated
116
- .parent()
117
- .find('input')
118
- .click({ force: true });
119
- checkValid();
120
- // Then switch to 'other' option
121
- ChatUiSelectors.chatbotMessageFeedbackOther.parent().find('input').click({ force: true });
122
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.should('be.visible');
123
- // Should be invalid without comment
124
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.focus().blur();
125
- getFormError().should('be.visible').should('contain.text', 'Enter details.');
126
- checkInvalid();
127
- // Add comment and validate
128
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.type('Custom feedback');
129
- checkValid();
130
- });
131
- it('should show error when other is selected but comment is cleared', () => {
132
- render();
133
- cy.clock(Date.parse('2023-10-01T00:00:00Z'));
134
- ChatUiSelectors.chatbotMessageFeedbackOther.parent().find('input').click({ force: true });
135
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.type('Initial comment');
136
- checkValid();
137
- // Clear the comment
138
- ChatUiSelectors.chatbotMessageFeedbackOtherComment.clear().blur();
139
- getFormError().should('be.visible').should('contain.text', 'Enter details.');
140
- checkInvalid();
141
- });
142
- }
143
- //# sourceMappingURL=chatbot-message-feedback-form.shared-tests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatbot-message-feedback-form.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { Models } from '@servicetitan/titan-chatbot-api';
2
- import { FC, ReactElement } from 'react';
3
- interface IChatbotMessageFeedbackPopoverProps {
4
- botMessage: Models.IBotMessage;
5
- }
6
- export declare function runChatbotMessageFeedbackPopoverSharedTests(ChatbotMessageFeedbackPopoverComponent: FC<IChatbotMessageFeedbackPopoverProps>, wrapperComponent?: (component: ReactElement) => ReactElement): void;
7
- export {};
8
- //# sourceMappingURL=chatbot-message-feedback-popover.shared-tests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatbot-message-feedback-popover.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.tsx"],"names":[],"mappings":"AACA,OAAO,EAOH,MAAM,EAET,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIzC,UAAU,mCAAmC;IACzC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;CAClC;AAED,wBAAgB,2CAA2C,CACvD,sCAAsC,EAAE,EAAE,CAAC,mCAAmC,CAAC,EAC/E,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QAuQ/D"}
@@ -1,200 +0,0 @@
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
@@ -1 +0,0 @@
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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"}
@@ -1,11 +0,0 @@
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
@@ -1 +0,0 @@
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"}