@servicetitan/titan-chatbot-ui-cypress 3.1.0 → 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 (173) hide show
  1. package/CHANGELOG.md +12 -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/tests/index.d.ts +30 -0
  7. package/dist/tests/index.d.ts.map +1 -0
  8. package/dist/tests/index.js +30 -0
  9. package/dist/tests/index.js.map +1 -0
  10. package/dist/tests/titan-chat-ui/chat-error.shared-tests.d.ts +3 -0
  11. package/dist/tests/titan-chat-ui/chat-error.shared-tests.d.ts.map +1 -0
  12. package/dist/tests/titan-chat-ui/chat-error.shared-tests.js +138 -0
  13. package/dist/tests/titan-chat-ui/chat-error.shared-tests.js.map +1 -0
  14. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.d.ts +7 -0
  15. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.d.ts.map +1 -0
  16. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.js +123 -0
  17. package/dist/tests/titan-chat-ui/chat-input-file.shared-tests.js.map +1 -0
  18. package/dist/tests/titan-chat-ui/chat-input.shared-tests.d.ts +3 -0
  19. package/dist/tests/titan-chat-ui/chat-input.shared-tests.d.ts.map +1 -0
  20. package/dist/tests/titan-chat-ui/chat-input.shared-tests.js +71 -0
  21. package/dist/tests/titan-chat-ui/chat-input.shared-tests.js.map +1 -0
  22. package/dist/tests/titan-chat-ui/chat-log.shared-tests.d.ts +9 -0
  23. package/dist/tests/titan-chat-ui/chat-log.shared-tests.d.ts.map +1 -0
  24. package/dist/tests/titan-chat-ui/chat-log.shared-tests.js +73 -0
  25. package/dist/tests/titan-chat-ui/chat-log.shared-tests.js.map +1 -0
  26. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.d.ts +8 -0
  27. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.d.ts.map +1 -0
  28. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.js +118 -0
  29. package/dist/tests/titan-chat-ui/chat-messages.shared-tests.js.map +1 -0
  30. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.d.ts +3 -0
  31. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.d.ts.map +1 -0
  32. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.js +110 -0
  33. package/dist/tests/titan-chat-ui/chat-notifications.shared-tests.js.map +1 -0
  34. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.d.ts +3 -0
  35. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.d.ts.map +1 -0
  36. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.js +76 -0
  37. package/dist/tests/titan-chat-ui/chat-timer.shared-tests.js.map +1 -0
  38. package/dist/tests/titan-chat-ui/chat.shared-tests.d.ts +9 -0
  39. package/dist/tests/titan-chat-ui/chat.shared-tests.d.ts.map +1 -0
  40. package/dist/tests/titan-chat-ui/chat.shared-tests.js +111 -0
  41. package/dist/tests/titan-chat-ui/chat.shared-tests.js.map +1 -0
  42. package/dist/tests/titan-chat-ui/message-agent.shared-tests.d.ts +27 -0
  43. package/dist/tests/titan-chat-ui/message-agent.shared-tests.d.ts.map +1 -0
  44. package/dist/tests/titan-chat-ui/message-agent.shared-tests.js +67 -0
  45. package/dist/tests/titan-chat-ui/message-agent.shared-tests.js.map +1 -0
  46. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.d.ts +10 -0
  47. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.d.ts.map +1 -0
  48. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.js +88 -0
  49. package/dist/tests/titan-chat-ui/message-content-file.shared-tests.js.map +1 -0
  50. package/dist/tests/titan-chat-ui/message-system.shared-tests.d.ts +16 -0
  51. package/dist/tests/titan-chat-ui/message-system.shared-tests.d.ts.map +1 -0
  52. package/dist/tests/titan-chat-ui/message-system.shared-tests.js +65 -0
  53. package/dist/tests/titan-chat-ui/message-system.shared-tests.js.map +1 -0
  54. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.d.ts +8 -0
  55. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.d.ts.map +1 -0
  56. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.js +63 -0
  57. package/dist/tests/titan-chat-ui/message-timeout.shared-tests.js.map +1 -0
  58. package/dist/tests/titan-chat-ui/message-typing.shared-tests.d.ts +12 -0
  59. package/dist/tests/titan-chat-ui/message-typing.shared-tests.d.ts.map +1 -0
  60. package/dist/tests/titan-chat-ui/message-typing.shared-tests.js +46 -0
  61. package/dist/tests/titan-chat-ui/message-typing.shared-tests.js.map +1 -0
  62. package/dist/tests/titan-chat-ui/message-user.shared-tests.d.ts +10 -0
  63. package/dist/tests/titan-chat-ui/message-user.shared-tests.d.ts.map +1 -0
  64. package/dist/tests/titan-chat-ui/message-user.shared-tests.js +64 -0
  65. package/dist/tests/titan-chat-ui/message-user.shared-tests.js.map +1 -0
  66. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.d.ts +7 -0
  67. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.d.ts.map +1 -0
  68. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.js +118 -0
  69. package/dist/tests/titan-chatbot-ui/chatbot-filters.shared-tests.js.map +1 -0
  70. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.d.ts +9 -0
  71. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.d.ts.map +1 -0
  72. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.js +162 -0
  73. package/dist/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.js.map +1 -0
  74. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.d.ts +15 -0
  75. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.d.ts.map +1 -0
  76. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.js +123 -0
  77. package/dist/tests/titan-chatbot-ui/chatbot-links.shared-tests.js.map +1 -0
  78. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.d.ts +9 -0
  79. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.d.ts.map +1 -0
  80. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.js +84 -0
  81. package/dist/tests/titan-chatbot-ui/chatbot-live.shared-tests.js.map +1 -0
  82. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.d.ts +8 -0
  83. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.d.ts.map +1 -0
  84. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.js +142 -0
  85. package/dist/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.js.map +1 -0
  86. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.d.ts +8 -0
  87. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.d.ts.map +1 -0
  88. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.js +105 -0
  89. package/dist/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.js.map +1 -0
  90. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.d.ts +3 -0
  91. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.d.ts.map +1 -0
  92. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.js +86 -0
  93. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.js.map +1 -0
  94. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.d.ts +3 -0
  95. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.d.ts.map +1 -0
  96. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.js +143 -0
  97. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.js.map +1 -0
  98. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.d.ts +8 -0
  99. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.d.ts.map +1 -0
  100. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.js +200 -0
  101. package/dist/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.js.map +1 -0
  102. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.d.ts +11 -0
  103. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.d.ts.map +1 -0
  104. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.js +81 -0
  105. package/dist/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.js.map +1 -0
  106. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.d.ts +8 -0
  107. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.d.ts.map +1 -0
  108. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.js +60 -0
  109. package/dist/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.js.map +1 -0
  110. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.d.ts +8 -0
  111. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.d.ts.map +1 -0
  112. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.js +77 -0
  113. package/dist/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.js.map +1 -0
  114. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.d.ts +7 -0
  115. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.d.ts.map +1 -0
  116. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.js +130 -0
  117. package/dist/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.js.map +1 -0
  118. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.d.ts +9 -0
  119. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.d.ts.map +1 -0
  120. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.js +157 -0
  121. package/dist/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.js.map +1 -0
  122. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.d.ts +9 -0
  123. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.d.ts.map +1 -0
  124. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.js +114 -0
  125. package/dist/tests/titan-chatbot-ui/chatbot.shared-tests.js.map +1 -0
  126. package/dist/utils/chat-ui-selectors.d.ts +12 -0
  127. package/dist/utils/chat-ui-selectors.d.ts.map +1 -1
  128. package/dist/utils/chat-ui-selectors.js +24 -0
  129. package/dist/utils/chat-ui-selectors.js.map +1 -1
  130. package/dist/utils/test-utils-chatbot.d.ts +5 -0
  131. package/dist/utils/test-utils-chatbot.d.ts.map +1 -0
  132. package/dist/utils/test-utils-chatbot.js +55 -0
  133. package/dist/utils/test-utils-chatbot.js.map +1 -0
  134. package/dist/utils/test-utils.d.ts +6 -0
  135. package/dist/utils/test-utils.d.ts.map +1 -0
  136. package/dist/utils/test-utils.js +38 -0
  137. package/dist/utils/test-utils.js.map +1 -0
  138. package/package.json +10 -5
  139. package/src/index.ts +3 -0
  140. package/src/tests/index.ts +30 -0
  141. package/src/tests/titan-chat-ui/chat-error.shared-tests.tsx +185 -0
  142. package/src/tests/titan-chat-ui/chat-input-file.shared-tests.tsx +182 -0
  143. package/src/tests/titan-chat-ui/chat-input.shared-tests.tsx +99 -0
  144. package/src/tests/titan-chat-ui/chat-log.shared-tests.tsx +117 -0
  145. package/src/tests/titan-chat-ui/chat-messages.shared-tests.tsx +156 -0
  146. package/src/tests/titan-chat-ui/chat-notifications.shared-tests.tsx +153 -0
  147. package/src/tests/titan-chat-ui/chat-timer.shared-tests.tsx +106 -0
  148. package/src/tests/titan-chat-ui/chat.shared-tests.tsx +158 -0
  149. package/src/tests/titan-chat-ui/message-agent.shared-tests.tsx +170 -0
  150. package/src/tests/titan-chat-ui/message-content-file.shared-tests.tsx +139 -0
  151. package/src/tests/titan-chat-ui/message-system.shared-tests.tsx +147 -0
  152. package/src/tests/titan-chat-ui/message-timeout.shared-tests.tsx +117 -0
  153. package/src/tests/titan-chat-ui/message-typing.shared-tests.tsx +92 -0
  154. package/src/tests/titan-chat-ui/message-user.shared-tests.tsx +138 -0
  155. package/src/tests/titan-chatbot-ui/chatbot-filters.shared-tests.tsx +164 -0
  156. package/src/tests/titan-chatbot-ui/chatbot-help-center.shared-tests.tsx +225 -0
  157. package/src/tests/titan-chatbot-ui/chatbot-links.shared-tests.tsx +189 -0
  158. package/src/tests/titan-chatbot-ui/chatbot-live.shared-tests.tsx +127 -0
  159. package/src/tests/titan-chatbot-ui/chatbot-message-answer-readonly.shared-tests.tsx +187 -0
  160. package/src/tests/titan-chatbot-ui/chatbot-message-answer.shared-tests.tsx +144 -0
  161. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-form-guardrail.shared-tests.tsx +127 -0
  162. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-form.shared-tests.tsx +198 -0
  163. package/src/tests/titan-chatbot-ui/chatbot-message-feedback-popover.shared-tests.tsx +285 -0
  164. package/src/tests/titan-chatbot-ui/chatbot-message-typing.shared-tests.tsx +112 -0
  165. package/src/tests/titan-chatbot-ui/chatbot-restart-dialog.shared-tests.tsx +91 -0
  166. package/src/tests/titan-chatbot-ui/chatbot-restart-link.shared-tests.tsx +116 -0
  167. package/src/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.tsx +182 -0
  168. package/src/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.tsx +221 -0
  169. package/src/tests/titan-chatbot-ui/chatbot.shared-tests.tsx +158 -0
  170. package/src/utils/chat-ui-selectors.ts +24 -0
  171. package/src/utils/test-utils-chatbot.tsx +73 -0
  172. package/src/utils/test-utils.tsx +52 -0
  173. package/tsconfig.tsbuildinfo +1 -1
@@ -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"}
@@ -0,0 +1,130 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CHATBOT_API_CLIENT, CHATBOT_UI_STORE_TOKEN, Models, ModelsMocks, } from '@servicetitan/titan-chatbot-api';
3
+ import { testInitContainerChatbot, testRenderWrapperChatbot } from '../..';
4
+ import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
5
+ export function runChatbotSessionFeedbackModalSharedTests(ChatbotSessionFeedbackModalComponent, 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 assertButtonSelection = (element, selected) => {
21
+ element.should($el => {
22
+ const hasClass = $el.hasClass('Button--selected');
23
+ const hasAttr = $el.attr('aria-pressed') === 'true';
24
+ expect(hasClass || hasAttr).to.equal(selected);
25
+ });
26
+ };
27
+ const render = (onAfterInit, onClose = cy.stub()) => {
28
+ return cy.wrap(null).then(() => {
29
+ const TestComponent = () => {
30
+ const component = _jsx(ChatbotSessionFeedbackModalComponent, { onClose: onClose });
31
+ return wrapperComponent ? wrapperComponent(component) : component;
32
+ };
33
+ return testRenderWrapperChatbot(container, _jsx(TestComponent, {}), onAfterInit);
34
+ });
35
+ };
36
+ it('should render the feedback modal with all elements', () => {
37
+ render();
38
+ ChatUiSelectors.chatbotSessionFeedbackModal.should('be.visible');
39
+ ChatUiSelectors.chatbotSessionFeedbackThumbsUp.should('be.visible');
40
+ ChatUiSelectors.chatbotSessionFeedbackThumbsDown.should('be.visible');
41
+ ChatUiSelectors.chatbotSessionFeedbackComment.should('be.visible');
42
+ ChatUiSelectors.chatbotSessionFeedbackCancel.should('be.visible');
43
+ ChatUiSelectors.chatbotSessionFeedbackSubmit.should('be.visible');
44
+ ChatUiSelectors.chatbotSessionFeedbackSubmit.should('be.disabled');
45
+ });
46
+ it('should enable submit button when thumbs up is selected', () => {
47
+ render();
48
+ ChatUiSelectors.chatbotSessionFeedbackThumbsUp.click();
49
+ ChatUiSelectors.chatbotSessionFeedbackSubmit.should('not.be.disabled');
50
+ assertButtonSelection(ChatUiSelectors.chatbotSessionFeedbackThumbsUp, true);
51
+ assertButtonSelection(ChatUiSelectors.chatbotSessionFeedbackThumbsDown, false);
52
+ });
53
+ it('should enable submit button when thumbs down is selected', () => {
54
+ render();
55
+ ChatUiSelectors.chatbotSessionFeedbackThumbsDown.click();
56
+ ChatUiSelectors.chatbotSessionFeedbackSubmit.should('not.be.disabled');
57
+ assertButtonSelection(ChatUiSelectors.chatbotSessionFeedbackThumbsDown, true);
58
+ });
59
+ it('should allow switching between thumbs up and thumbs down', () => {
60
+ render();
61
+ ChatUiSelectors.chatbotSessionFeedbackThumbsUp.click();
62
+ assertButtonSelection(ChatUiSelectors.chatbotSessionFeedbackThumbsUp, true);
63
+ assertButtonSelection(ChatUiSelectors.chatbotSessionFeedbackThumbsDown, false);
64
+ ChatUiSelectors.chatbotSessionFeedbackThumbsDown.click();
65
+ assertButtonSelection(ChatUiSelectors.chatbotSessionFeedbackThumbsDown, true);
66
+ assertButtonSelection(ChatUiSelectors.chatbotSessionFeedbackThumbsUp, false);
67
+ });
68
+ it('should allow entering a comment', () => {
69
+ render();
70
+ const testComment = 'This is my feedback comment';
71
+ ChatUiSelectors.chatbotSessionFeedbackComment.type(testComment);
72
+ ChatUiSelectors.chatbotSessionFeedbackComment.should('have.value', testComment);
73
+ });
74
+ it('should call onClose when cancel button is clicked', () => {
75
+ const onClose = cy.stub().as('onClose');
76
+ render(undefined, onClose);
77
+ ChatUiSelectors.chatbotSessionFeedbackCancel.click();
78
+ cy.then(() => {
79
+ cy.get('@onClose').should('have.been.called');
80
+ });
81
+ });
82
+ it('should submit feedback with thumbs up and close modal', () => {
83
+ const onClose = cy.stub().as('onClose');
84
+ render(undefined, onClose);
85
+ ChatUiSelectors.chatbotSessionFeedbackThumbsUp.click();
86
+ ChatUiSelectors.chatbotSessionFeedbackSubmit.click();
87
+ cy.wait(1).then(() => {
88
+ cy.get('@onClose').should('have.been.called');
89
+ });
90
+ });
91
+ it('should submit feedback with thumbs down, comment and close modal', () => {
92
+ const onClose = cy.stub().as('onClose');
93
+ render(undefined, onClose);
94
+ const testComment = 'This did not help me at all';
95
+ ChatUiSelectors.chatbotSessionFeedbackThumbsDown.click();
96
+ ChatUiSelectors.chatbotSessionFeedbackComment.type(testComment);
97
+ ChatUiSelectors.chatbotSessionFeedbackSubmit.click();
98
+ cy.wait(1).then(() => {
99
+ cy.get('@onClose').should('have.been.called');
100
+ });
101
+ });
102
+ it('should send session feedback to the store when submitting', () => {
103
+ const onClose = cy.stub();
104
+ render(undefined, onClose);
105
+ cy.spy(chatbotUiStore, 'sendSessionFeedback').as('sendSessionFeedback');
106
+ ChatUiSelectors.chatbotSessionFeedbackThumbsUp.click();
107
+ ChatUiSelectors.chatbotSessionFeedbackSubmit.click();
108
+ cy.get('@sendSessionFeedback').should('have.been.called');
109
+ cy.get('@sendSessionFeedback').should('have.been.calledWith', new Models.Feedback({
110
+ sessionId: ModelsMocks.mockSession().id,
111
+ rating: Models.FeedbackRatings.ThumbsUp,
112
+ }));
113
+ });
114
+ it('should send session feedback with comment when submitting', () => {
115
+ const onClose = cy.stub();
116
+ render(undefined, onClose);
117
+ cy.spy(chatbotUiStore, 'sendSessionFeedback').as('sendSessionFeedback');
118
+ const testComment = 'Great experience!';
119
+ ChatUiSelectors.chatbotSessionFeedbackThumbsUp.click();
120
+ ChatUiSelectors.chatbotSessionFeedbackComment.type(testComment);
121
+ ChatUiSelectors.chatbotSessionFeedbackSubmit.click();
122
+ cy.get('@sendSessionFeedback').should('have.been.called');
123
+ cy.get('@sendSessionFeedback').should('have.been.calledWithMatch', new Models.Feedback({
124
+ sessionId: ModelsMocks.mockSession().id,
125
+ rating: Models.FeedbackRatings.ThumbsUp,
126
+ description: testComment,
127
+ }));
128
+ });
129
+ }
130
+ //# sourceMappingURL=chatbot-session-feedback-modal.shared-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-session-feedback-modal.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-session-feedback-modal.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ChatbotCustomizations } from '@servicetitan/titan-chatbot-api';
2
+ import { FC, ReactElement } from 'react';
3
+ interface IChatbotProps {
4
+ className?: string;
5
+ customizations?: ChatbotCustomizations;
6
+ }
7
+ export declare function runChatbotTitanChatbotSharedTests(ChatbotComponent: FC<IChatbotProps>, wrapperComponent?: (component: ReactElement) => ReactElement): void;
8
+ export {};
9
+ //# sourceMappingURL=chatbot-titan-chatbot.shared-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-titan-chatbot.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.tsx"],"names":[],"mappings":"AAEA,OAAO,EAMH,qBAAqB,EAOxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAoClD,UAAU,aAAa;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED,wBAAgB,iCAAiC,CAC7C,gBAAgB,EAAE,EAAE,CAAC,aAAa,CAAC,EACnC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QAgK/D"}
@@ -0,0 +1,157 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Log } from '@servicetitan/log-service';
3
+ import { Container, Provider } from '@servicetitan/react-ioc';
4
+ import { ApiClientTitanChat, CHATBOT_API_CLIENT, CHATBOT_CLIENT_SETTINGS, CHATBOT_UI_BACKEND_STORE_TOKEN, CHATBOT_UI_STORE_TOKEN, ChatbotUiBackendStore, ChatbotUiStore, Models, } from '@servicetitan/titan-chatbot-api';
5
+ import { mount } from 'cypress/react';
6
+ import { useMemo } from 'react';
7
+ import { CypressMocks } from '../..';
8
+ import { ChatUiSelectors } from '../../utils/chat-ui-selectors';
9
+ const ChatbotBaseUrl = 'https://chatbot-api.example.com/base/url';
10
+ const ChatbotVersion = 2;
11
+ const initializeTitanChatbotContainer = () => {
12
+ const rootContainer = new Container();
13
+ const container = new Container();
14
+ container.parent = rootContainer;
15
+ container.bind(Log).to(CypressMocks.LogMock).inSingletonScope();
16
+ container.bind(CHATBOT_UI_STORE_TOKEN).to(ChatbotUiStore).inSingletonScope();
17
+ container
18
+ .bind(CHATBOT_UI_BACKEND_STORE_TOKEN)
19
+ .to(ChatbotUiBackendStore)
20
+ .inSingletonScope();
21
+ // Set up Helpcenter API client
22
+ const clientSettings = {
23
+ clientId: 'TitanChatClientId',
24
+ version: String(ChatbotVersion),
25
+ constructorParametersFactory: () => ({
26
+ baseUrl: ChatbotBaseUrl,
27
+ }),
28
+ };
29
+ container
30
+ .bind(CHATBOT_CLIENT_SETTINGS)
31
+ .toConstantValue(clientSettings);
32
+ container
33
+ .bind(CHATBOT_API_CLIENT)
34
+ .to(ApiClientTitanChat.ChatbotApiClient)
35
+ .inSingletonScope();
36
+ return container;
37
+ };
38
+ export function runChatbotTitanChatbotSharedTests(ChatbotComponent, wrapperComponent) {
39
+ let container;
40
+ let log;
41
+ let apiClientSettings;
42
+ let apiClient;
43
+ let uiStore;
44
+ let uiBackendStore;
45
+ beforeEach(() => {
46
+ container = initializeTitanChatbotContainer();
47
+ log = container.get(Log);
48
+ apiClientSettings =
49
+ container.get(CHATBOT_CLIENT_SETTINGS);
50
+ apiClient = container.get(CHATBOT_API_CLIENT);
51
+ uiStore = container.get(CHATBOT_UI_STORE_TOKEN);
52
+ uiBackendStore = container.get(CHATBOT_UI_BACKEND_STORE_TOKEN);
53
+ cy.viewport(550, 800);
54
+ cy.clock(Date.parse('2023-10-01T00:00:00Z'));
55
+ });
56
+ const render = () => {
57
+ const ChatbotWrapper = () => {
58
+ const customizationContext = useMemo(() => ({
59
+ filters: { enabled: true },
60
+ feedback: { title: 'TITLE' },
61
+ }), []);
62
+ const component = (_jsx(ChatbotComponent, { className: "h-100vh max-h-100vh of-x-hidden", customizations: customizationContext }));
63
+ const wrappedComponent = wrapperComponent ? wrapperComponent(component) : component;
64
+ return (_jsx(Provider, { singletons: [
65
+ {
66
+ provide: Log,
67
+ useValue: log,
68
+ },
69
+ {
70
+ provide: CHATBOT_CLIENT_SETTINGS,
71
+ useValue: apiClientSettings,
72
+ },
73
+ { provide: CHATBOT_API_CLIENT, useValue: apiClient },
74
+ {
75
+ provide: CHATBOT_UI_STORE_TOKEN,
76
+ useValue: uiStore,
77
+ },
78
+ {
79
+ provide: CHATBOT_UI_BACKEND_STORE_TOKEN,
80
+ useValue: uiBackendStore,
81
+ },
82
+ ], children: wrappedComponent }));
83
+ };
84
+ cy.spy(uiStore, 'run').as('runSpy');
85
+ mount(_jsx(ChatbotWrapper, {}));
86
+ return cy.wrap(new Promise(resolve => {
87
+ cy.get('@runSpy')
88
+ .should('have.been.calledOnce')
89
+ .then((invocation) => {
90
+ const initPromise = invocation.firstCall.returnValue;
91
+ initPromise.then(resolve);
92
+ });
93
+ }));
94
+ };
95
+ it('should render the chatbot with titan chat API', () => {
96
+ const optionsMock = CypressMocks.TC.Options;
97
+ const sessionMock = CypressMocks.TC.SessionPost;
98
+ const messageMock = CypressMocks.TC.MessagePost;
99
+ const messageFeedbackMock = CypressMocks.TC.MessageFeedbackPost;
100
+ const sessionFeedbackMock = CypressMocks.TC.SessionFeedbackPost;
101
+ const aliasOptions = optionsMock.intercept(ChatbotBaseUrl, ChatbotVersion);
102
+ const aliasSession = sessionMock.intercept(ChatbotBaseUrl, ChatbotVersion);
103
+ const aliasMessage = messageMock.intercept(ChatbotBaseUrl, ChatbotVersion);
104
+ const { aliasPostMessage, aliasPostSession } = CypressMocks.TC.interceptFeedback(ChatbotBaseUrl, ChatbotVersion);
105
+ render().then(() => {
106
+ cy.log('Getting options...');
107
+ cy.wait(aliasOptions).then(interception => {
108
+ var _a, _b;
109
+ expect(interception.request.url).to.equal(`${ChatbotBaseUrl}/api/v${ChatbotVersion}/options`);
110
+ expect((_a = interception.response) === null || _a === void 0 ? void 0 : _a.statusCode).to.equal(200);
111
+ expect((_b = interception.response) === null || _b === void 0 ? void 0 : _b.body).to.deep.equal(optionsMock.response);
112
+ });
113
+ // Ask the bot a question
114
+ cy.log('Sending message...');
115
+ ChatUiSelectors.chatInput.type(`${messageMock.request.question}{enter}`, { delay: 0 });
116
+ // Check that the session was created
117
+ cy.wait(aliasSession).then(interception => {
118
+ var _a, _b;
119
+ expect(interception.request.url).to.equal(`${ChatbotBaseUrl}/api/v${ChatbotVersion}/session`);
120
+ expect(interception.request.body).to.deep.equal(sessionMock.request);
121
+ expect((_a = interception.response) === null || _a === void 0 ? void 0 : _a.body).to.deep.equal(sessionMock.response);
122
+ expect((_b = interception.response) === null || _b === void 0 ? void 0 : _b.statusCode).to.equal(200);
123
+ });
124
+ // Check the user message is sent
125
+ cy.wait(aliasMessage).then(interception => {
126
+ var _a, _b;
127
+ expect(interception.request.url).to.equal(`${ChatbotBaseUrl}/api/v${ChatbotVersion}/message`);
128
+ expect(interception.request.body).to.deep.equal(messageMock.request);
129
+ expect((_a = interception.response) === null || _a === void 0 ? void 0 : _a.body).to.deep.equal(messageMock.response);
130
+ expect((_b = interception.response) === null || _b === void 0 ? void 0 : _b.statusCode).to.equal(200);
131
+ });
132
+ cy.tick(100);
133
+ // Send session feedback (manually)
134
+ cy.log('Sending session feedback...');
135
+ uiStore.sendSessionFeedback(new Models.Feedback(sessionFeedbackMock.request));
136
+ cy.wait(aliasPostSession).then(interception => {
137
+ var _a, _b;
138
+ expect(interception.request.url).to.equal(`${ChatbotBaseUrl}/api/v${ChatbotVersion}/feedback`);
139
+ expect(interception.request.body).to.deep.equal(sessionFeedbackMock.request);
140
+ expect((_a = interception.response) === null || _a === void 0 ? void 0 : _a.body).to.deep.equal(sessionFeedbackMock.response);
141
+ expect((_b = interception.response) === null || _b === void 0 ? void 0 : _b.statusCode).to.equal(200);
142
+ });
143
+ cy.tick(100);
144
+ // Check the feedback is sent with thumbs up
145
+ cy.log('Sending message feedback...');
146
+ ChatUiSelectors.chatbotMessageFeedbackThumbsUp.scrollIntoView().click({ force: true });
147
+ cy.wait(aliasPostMessage).then(interception => {
148
+ var _a, _b;
149
+ expect(interception.request.url).to.equal(`${ChatbotBaseUrl}/api/v${ChatbotVersion}/feedback`);
150
+ expect(interception.request.body).to.deep.equal(messageFeedbackMock.request);
151
+ expect((_a = interception.response) === null || _a === void 0 ? void 0 : _a.body).to.deep.equal(messageFeedbackMock.response);
152
+ expect((_b = interception.response) === null || _b === void 0 ? void 0 : _b.statusCode).to.equal(200);
153
+ });
154
+ });
155
+ });
156
+ }
157
+ //# sourceMappingURL=chatbot-titan-chatbot.shared-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-titan-chatbot.shared-tests.js","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot-titan-chatbot.shared-tests.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ChatbotCustomizations } from '@servicetitan/titan-chatbot-api';
2
+ import { CSSProperties, FC, ReactElement } from 'react';
3
+ interface IChatbotProps {
4
+ style?: CSSProperties;
5
+ customizations?: ChatbotCustomizations;
6
+ }
7
+ export declare function runChatbotSharedTests(ChatbotComponent: FC<IChatbotProps>, wrapperComponent?: (component: ReactElement) => ReactElement): void;
8
+ export {};
9
+ //# sourceMappingURL=chatbot.shared-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot.shared-tests.d.ts","sourceRoot":"","sources":["../../../src/tests/titan-chatbot-ui/chatbot.shared-tests.tsx"],"names":[],"mappings":"AACA,OAAO,EAGH,qBAAqB,EAKxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIxD,UAAU,aAAa;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED,wBAAgB,qBAAqB,CACjC,gBAAgB,EAAE,EAAE,CAAC,aAAa,CAAC,EACnC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,YAAY,QAwI/D"}