@servicetitan/titan-chatbot-ui-cypress 3.0.0

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 (45) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +3 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/mocks/chat-ui.store.mock.d.ts +69 -0
  7. package/dist/mocks/chat-ui.store.mock.d.ts.map +1 -0
  8. package/dist/mocks/chat-ui.store.mock.js +303 -0
  9. package/dist/mocks/chat-ui.store.mock.js.map +1 -0
  10. package/dist/mocks/chatbot-api-client.mock.d.ts +11 -0
  11. package/dist/mocks/chatbot-api-client.mock.d.ts.map +1 -0
  12. package/dist/mocks/chatbot-api-client.mock.js +47 -0
  13. package/dist/mocks/chatbot-api-client.mock.js.map +1 -0
  14. package/dist/mocks/dependencies.mock.d.ts +7 -0
  15. package/dist/mocks/dependencies.mock.d.ts.map +1 -0
  16. package/dist/mocks/dependencies.mock.js +23 -0
  17. package/dist/mocks/dependencies.mock.js.map +1 -0
  18. package/dist/mocks/index.d.ts +6 -0
  19. package/dist/mocks/index.d.ts.map +1 -0
  20. package/dist/mocks/index.js +6 -0
  21. package/dist/mocks/index.js.map +1 -0
  22. package/dist/mocks/native-client-help-center.mock.d.ts +62 -0
  23. package/dist/mocks/native-client-help-center.mock.d.ts.map +1 -0
  24. package/dist/mocks/native-client-help-center.mock.js +130 -0
  25. package/dist/mocks/native-client-help-center.mock.js.map +1 -0
  26. package/dist/mocks/native-client.mock.d.ts +96 -0
  27. package/dist/mocks/native-client.mock.d.ts.map +1 -0
  28. package/dist/mocks/native-client.mock.js +206 -0
  29. package/dist/mocks/native-client.mock.js.map +1 -0
  30. package/dist/utils/chat-ui-selectors.d.ts +135 -0
  31. package/dist/utils/chat-ui-selectors.d.ts.map +1 -0
  32. package/dist/utils/chat-ui-selectors.js +273 -0
  33. package/dist/utils/chat-ui-selectors.js.map +1 -0
  34. package/package.json +35 -0
  35. package/src/cypress.d.ts +10 -0
  36. package/src/index.ts +2 -0
  37. package/src/mocks/chat-ui.store.mock.ts +114 -0
  38. package/src/mocks/chatbot-api-client.mock.ts +18 -0
  39. package/src/mocks/dependencies.mock.ts +7 -0
  40. package/src/mocks/index.ts +5 -0
  41. package/src/mocks/native-client-help-center.mock.ts +139 -0
  42. package/src/mocks/native-client.mock.ts +213 -0
  43. package/src/utils/chat-ui-selectors.ts +264 -0
  44. package/tsconfig.json +24 -0
  45. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,273 @@
1
+ export class ChatUiSelectors {
2
+ static get chat() {
3
+ return cy.getCy(ChatUiSelectors.cy.chat);
4
+ }
5
+ static get chatConnecting() {
6
+ return cy.getCy(ChatUiSelectors.cy.chatConnecting);
7
+ }
8
+ static get chatError() {
9
+ return cy.getCy(ChatUiSelectors.cy.chatError);
10
+ }
11
+ static get chatErrorText() {
12
+ return cy.getCy(ChatUiSelectors.cy.chatErrorText);
13
+ }
14
+ static get chatErrorRecover() {
15
+ return cy.getCy(ChatUiSelectors.cy.chatErrorRecover);
16
+ }
17
+ static get chatInput() {
18
+ return cy.getCy(ChatUiSelectors.cy.chatInput);
19
+ }
20
+ static get chatSend() {
21
+ return cy.getCy(ChatUiSelectors.cy.chatSend);
22
+ }
23
+ static get chatUploadFile() {
24
+ return cy.getCy(ChatUiSelectors.cy.chatUploadFile);
25
+ }
26
+ static get chatMessageError() {
27
+ return cy.getCy(ChatUiSelectors.cy.chatMessageError);
28
+ }
29
+ static get chatMessageErrorRetry() {
30
+ return cy.getCy(ChatUiSelectors.cy.chatMessageErrorRetry);
31
+ }
32
+ static get chatNotifications() {
33
+ return cy.getCy(ChatUiSelectors.cy.chatNotifications);
34
+ }
35
+ static get chatTimer() {
36
+ return cy.getCy(ChatUiSelectors.cy.chatTimer);
37
+ }
38
+ static get chatTimerRestart() {
39
+ return cy.getCy(ChatUiSelectors.cy.chatTimerRestart);
40
+ }
41
+ static get chatMessages() {
42
+ return cy.getCy(ChatUiSelectors.cy.chatMessages);
43
+ }
44
+ static get chatMessage() {
45
+ return cy.getCy2(ChatUiSelectors.cy2.chatMessage);
46
+ }
47
+ static get chatMessageContent() {
48
+ return cy.getCy(ChatUiSelectors.cy.chatMessageContent);
49
+ }
50
+ static get chatMessageFooter() {
51
+ return cy.getCy(ChatUiSelectors.cy.chatMessageFooter);
52
+ }
53
+ static get chatAvatar() {
54
+ return cy.getCy(ChatUiSelectors.cy.chatAvatar);
55
+ }
56
+ static get chatMessageTimeoutResume() {
57
+ return cy.getCy(ChatUiSelectors.cy.chatMessageTimeoutResume);
58
+ }
59
+ static get chatMessageTimeoutReset() {
60
+ return cy.getCy(ChatUiSelectors.cy.chatMessageTimeoutReset);
61
+ }
62
+ static get chatMessageTypingDots() {
63
+ return cy.getCy(ChatUiSelectors.cy.chatMessageTypingDots);
64
+ }
65
+ static get chatMessageAgent() {
66
+ return cy.getCy(ChatUiSelectors.cy.chatMessageAgent);
67
+ }
68
+ static get chatMessageSystem() {
69
+ return cy.getCy(ChatUiSelectors.cy.chatMessageSystem);
70
+ }
71
+ static get chatMessageTimeout() {
72
+ return cy.getCy(ChatUiSelectors.cy.chatMessageTimeout);
73
+ }
74
+ static get chatMessageUser() {
75
+ return cy.getCy(ChatUiSelectors.cy.chatMessageUser);
76
+ }
77
+ static get chatMessageTyping() {
78
+ return cy.getCy(ChatUiSelectors.cy.chatMessageTyping);
79
+ }
80
+ static get chatMessageContentAgent() {
81
+ return cy.getCy2(ChatUiSelectors.cy2.chatMessageContentAgent);
82
+ }
83
+ static get chatMessageContentUser() {
84
+ return cy.getCy2(ChatUiSelectors.cy2.chatMessageContentUser);
85
+ }
86
+ static get chatAvatarEmpty() {
87
+ return cy.getCy2(ChatUiSelectors.cy2.chatAvatarEmpty);
88
+ }
89
+ static get chatAvatarBot() {
90
+ return cy.getCy2(ChatUiSelectors.cy2.chatAvatarBot);
91
+ }
92
+ static get chatAvatarInitials() {
93
+ return cy.getCy2(ChatUiSelectors.cy2.chatAvatarInitials);
94
+ }
95
+ static get chatbotRestartLink() {
96
+ return cy.getCy(ChatUiSelectors.cy.chatbotRestartLink);
97
+ }
98
+ static get chatbotMessageFeedback() {
99
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedback);
100
+ }
101
+ static get chatbotMessageFeedbackUnrelated() {
102
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackUnrelated);
103
+ }
104
+ static get chatbotMessageFeedbackUnclear() {
105
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackUnclear);
106
+ }
107
+ static get chatbotMessageFeedbackNotFull() {
108
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackNotFull);
109
+ }
110
+ static get chatbotMessageFeedbackIncorrect() {
111
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackIncorrect);
112
+ }
113
+ static get chatbotMessageFeedbackOther() {
114
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackOther);
115
+ }
116
+ static get chatbotMessageFeedbackOtherComment() {
117
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackOtherComment);
118
+ }
119
+ static get chatbotMessageFeedbackLinkUrl() {
120
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackLinkUrl);
121
+ }
122
+ static get chatbotMessageFeedbackLoading() {
123
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackLoading);
124
+ }
125
+ static get chatbotMessageFeedbackSuccess() {
126
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackSuccess);
127
+ }
128
+ static get chatbotMessageFeedbackFailed() {
129
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackFailed);
130
+ }
131
+ static get chatbotMessageFeedbackThumbsUp() {
132
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackThumbsUp);
133
+ }
134
+ static get chatbotMessageFeedbackProvideAnswer() {
135
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackProvideAnswer);
136
+ }
137
+ static get chatbotMessageFeedbackThumbsDown() {
138
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackThumbsDown);
139
+ }
140
+ static get chatbotMessageFeedbackSubmit() {
141
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageFeedbackSubmit);
142
+ }
143
+ static get chatbotSessionFeedbackLink() {
144
+ return cy.getCy(ChatUiSelectors.cy.chatbotSessionFeedbackLink);
145
+ }
146
+ static get chatbotSessionFeedbackCancel() {
147
+ return cy.getCy(ChatUiSelectors.cy.chatbotSessionFeedbackCancel);
148
+ }
149
+ static get chatbotSessionFeedbackSubmit() {
150
+ return cy.getCy(ChatUiSelectors.cy.chatbotSessionFeedbackSubmit);
151
+ }
152
+ static get chatbotSessionFeedbackModal() {
153
+ return cy.getCy(ChatUiSelectors.cy.chatbotSessionFeedbackModal);
154
+ }
155
+ static get chatbotSessionFeedbackThumbsUp() {
156
+ return cy.getCy(ChatUiSelectors.cy.chatbotSessionFeedbackThumbsUp);
157
+ }
158
+ static get chatbotSessionFeedbackThumbsDown() {
159
+ return cy.getCy(ChatUiSelectors.cy.chatbotSessionFeedbackThumbsDown);
160
+ }
161
+ static get chatbotSessionFeedbackComment() {
162
+ return cy.getCy(ChatUiSelectors.cy.chatbotSessionFeedbackComment);
163
+ }
164
+ static get chatbotFilters() {
165
+ return cy.getCy(ChatUiSelectors.cy.chatbotFilters);
166
+ }
167
+ static get chatbotFilterSearch() {
168
+ return cy.getCy(ChatUiSelectors.cy.chatbotFilterSearch);
169
+ }
170
+ static get chatbotFilterAll() {
171
+ return cy.getCy(ChatUiSelectors.cy.chatbotFilterAll);
172
+ }
173
+ static get chatbotFilterNone() {
174
+ return cy.getCy(ChatUiSelectors.cy.chatbotFilterNone);
175
+ }
176
+ static get chatbotFilterButton() {
177
+ return cy.getCy(ChatUiSelectors.cy.chatbotFilterButton);
178
+ }
179
+ static get chatbotFilterOptions() {
180
+ return cy.getCy(ChatUiSelectors.cy.chatbotFilterOptions);
181
+ }
182
+ static get chatbotLinksMore() {
183
+ return cy.getCy(ChatUiSelectors.cy.chatbotLinksMore);
184
+ }
185
+ static get chatbotLinksCollapsible() {
186
+ return cy.getCy(ChatUiSelectors.cy.chatbotLinksCollapsible);
187
+ }
188
+ static get chatbotLinksLink() {
189
+ return cy.getCy(ChatUiSelectors.cy.chatbotLinksLink);
190
+ }
191
+ static get chatbotMessageAnswer() {
192
+ return cy.getCy(ChatUiSelectors.cy.chatbotMessageAnswer);
193
+ }
194
+ }
195
+ Object.defineProperty(ChatUiSelectors, "cy", {
196
+ enumerable: true,
197
+ configurable: true,
198
+ writable: true,
199
+ value: {
200
+ chat: 'titan-chat',
201
+ chatConnecting: 'titan-chat-connecting',
202
+ chatError: 'titan-chat-error',
203
+ chatErrorText: 'titan-chat-error-text',
204
+ chatErrorRecover: 'titan-chat-error-recover',
205
+ chatInput: 'titan-chat-input',
206
+ chatSend: 'titan-chat-send',
207
+ chatUploadFile: 'titan-chat-upload-file',
208
+ chatMessageError: 'titan-chat-message-error',
209
+ chatMessageErrorRetry: 'titan-chat-message-error-retry',
210
+ chatNotifications: 'titan-chat-notifications',
211
+ chatTimer: 'titan-chat-timer',
212
+ chatTimerRestart: 'titan-chat-timer-restart',
213
+ chatMessages: 'titan-chat-messages',
214
+ chatMessageAgent: 'titan-chat-message-agent',
215
+ chatMessageSystem: 'titan-chat-message-system',
216
+ chatMessageTimeout: 'titan-chat-message-timeout',
217
+ chatMessageUser: 'titan-chat-message-user',
218
+ chatMessageTyping: 'titan-chat-message-typing',
219
+ chatMessageContent: 'titan-chat-message-content',
220
+ chatMessageFooter: 'titan-chat-message-footer',
221
+ chatAvatar: 'titan-chat-avatar',
222
+ chatMessageTimeoutResume: 'titan-chat-message-timeout-resume',
223
+ chatMessageTimeoutReset: 'titan-chat-message-timeout-reset',
224
+ chatMessageTypingDots: 'titan-chat-message-typing-dots',
225
+ chatbotRestartLink: 'titan-chatbot-restart-session',
226
+ chatbotMessageFeedback: 'titan-chatbot-message-feedback-form',
227
+ chatbotMessageFeedbackUnrelated: 'titan-chatbot-message-feedback-form-unrelated',
228
+ chatbotMessageFeedbackUnclear: 'titan-chatbot-message-feedback-form-unclear',
229
+ chatbotMessageFeedbackNotFull: 'titan-chatbot-message-feedback-form-not-full',
230
+ chatbotMessageFeedbackIncorrect: 'titan-chatbot-message-feedback-form-incorrect',
231
+ chatbotMessageFeedbackOther: 'titan-chatbot-message-feedback-form-other',
232
+ chatbotMessageFeedbackOtherComment: 'titan-chatbot-message-feedback-form-other-comment',
233
+ chatbotMessageFeedbackLinkUrl: 'titan-chatbot-message-feedback-form-link-url',
234
+ chatbotMessageFeedbackLoading: 'titan-chatbot-message-feedback-loading',
235
+ chatbotMessageFeedbackSuccess: 'titan-chatbot-message-feedback-success',
236
+ chatbotMessageFeedbackFailed: 'titan-chatbot-message-feedback-failed',
237
+ chatbotMessageFeedbackThumbsUp: 'titan-chatbot-message-feedback-thumbs-up',
238
+ chatbotMessageFeedbackProvideAnswer: 'titan-chatbot-message-feedback-provide-answer',
239
+ chatbotMessageFeedbackThumbsDown: 'titan-chatbot-message-feedback-thumbs-down',
240
+ chatbotMessageFeedbackSubmit: 'titan-chatbot-message-feedback-submit',
241
+ chatbotSessionFeedbackLink: 'titan-chatbot-session-feedback-link',
242
+ chatbotSessionFeedbackCancel: 'titan-chatbot-session-feedback-cancel',
243
+ chatbotSessionFeedbackSubmit: 'titan-chatbot-session-feedback-submit',
244
+ chatbotSessionFeedbackModal: 'titan-chatbot-session-feedback-modal',
245
+ chatbotSessionFeedbackThumbsUp: 'titan-chatbot-session-feedback-thumbs-up',
246
+ chatbotSessionFeedbackThumbsDown: 'titan-chatbot-session-feedback-thumbs-down',
247
+ chatbotSessionFeedbackComment: 'titan-chatbot-session-feedback-comment',
248
+ chatbotFilters: 'titan-chatbot-filters',
249
+ chatbotFilterSearch: 'titan-chatbot-filter-search',
250
+ chatbotFilterAll: 'titan-chatbot-filter-all',
251
+ chatbotFilterNone: 'titan-chatbot-filter-none',
252
+ chatbotFilterButton: 'titan-chatbot-filter-button',
253
+ chatbotFilterOptions: 'titan-chatbot-filter-options',
254
+ chatbotLinksMore: 'titan-chatbot-links-more',
255
+ chatbotLinksCollapsible: 'titan-chatbot-links-collapsible',
256
+ chatbotLinksLink: 'titan-chatbot-links-link',
257
+ chatbotMessageAnswer: 'titan-chatbot-message-answer',
258
+ }
259
+ });
260
+ Object.defineProperty(ChatUiSelectors, "cy2", {
261
+ enumerable: true,
262
+ configurable: true,
263
+ writable: true,
264
+ value: {
265
+ chatMessage: 'titan-chat-message',
266
+ chatMessageContentAgent: 'titan-chat-message-content-agent',
267
+ chatMessageContentUser: 'titan-chat-message-content-user',
268
+ chatAvatarEmpty: 'titan-chat-avatar-empty',
269
+ chatAvatarBot: 'titan-chat-avatar-bot',
270
+ chatAvatarInitials: 'titan-chat-avatar-initials',
271
+ }
272
+ });
273
+ //# sourceMappingURL=chat-ui-selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-ui-selectors.js","sourceRoot":"","sources":["../../src/utils/chat-ui-selectors.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@servicetitan/titan-chatbot-ui-cypress",
3
+ "version": "3.0.0",
4
+ "description": "Cypress helpers for Titan Chat and Titan Chatbot UI packages",
5
+ "main": "./dist/index.js",
6
+ "typings": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": "./dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "publish:local": "yalc publish",
12
+ "push:local": "yalc push"
13
+ },
14
+ "peerDependencies": {
15
+ "@servicetitan/form": ">=27",
16
+ "@servicetitan/form-state": ">=27",
17
+ "@servicetitan/log-service": ">=27",
18
+ "@servicetitan/titan-chat-ui-common": "^2.1.2",
19
+ "@servicetitan/titan-chatbot-api": ">=2.1.2",
20
+ "axios": ">=0.28.0",
21
+ "cypress": ">=14",
22
+ "formstate": ">=2.0.0"
23
+ },
24
+ "keywords": [
25
+ "ServiceTitan"
26
+ ],
27
+ "author": "Alexander Yarmolchuk",
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
31
+ "cli": {
32
+ "webpack": false
33
+ },
34
+ "gitHead": "5c9c88b8b55c56cacefef6b8452e9367c31c9ad3"
35
+ }
@@ -0,0 +1,10 @@
1
+ // eslint-disable-next-line spaced-comment
2
+ /// <reference types="cypress" />
3
+ declare namespace Cypress {
4
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
+ interface Chainable<Subject = any> {
6
+ getCy<E extends Node = HTMLElement>(value: string): Chainable<JQuery<E>>;
7
+ getCy2<E extends Node = HTMLElement>(value: string): Chainable<JQuery<E>>;
8
+ getAnvil<E extends Node = HTMLElement>(value: string, extra?: string): Chainable<JQuery<E>>;
9
+ }
10
+ }
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { ChatUiSelectors } from './utils/chat-ui-selectors';
2
+ export * as CypressMocks from './mocks';
@@ -0,0 +1,114 @@
1
+ import {
2
+ ChatConfiguration,
3
+ ChatEndReason,
4
+ ChatError,
5
+ ChatErrorOptions,
6
+ ChatMessageModelBase,
7
+ ChatMessageModelText,
8
+ ChatMessageModelWelcome,
9
+ ChatMessageState,
10
+ ChatParticipantIcon,
11
+ ChatRunState,
12
+ ChatTimer,
13
+ ChatUiEventListener,
14
+ IChatUiStore,
15
+ symbolAgent,
16
+ symbolUser,
17
+ } from '@servicetitan/titan-chat-ui-common';
18
+
19
+ export class ChatUiStoreMock implements IChatUiStore {
20
+ scrollCounter = 0;
21
+ isFilePickerEnabled = true;
22
+ isStarting = false;
23
+ isStarted = true;
24
+ isAgentTyping = false;
25
+ status = ChatRunState.Started;
26
+ file = undefined;
27
+ participants = {
28
+ [symbolAgent]: {
29
+ isAgent: true,
30
+ name: 'Agent',
31
+ icon: ChatParticipantIcon.Bot,
32
+ },
33
+ [symbolUser]: {
34
+ isAgent: false,
35
+ name: 'User',
36
+ icon: ChatParticipantIcon.Initials,
37
+ },
38
+ };
39
+ get user() {
40
+ return this.participants[symbolUser];
41
+ }
42
+ get agent() {
43
+ return this.participants[symbolAgent];
44
+ }
45
+ get isEnded(): boolean {
46
+ return false;
47
+ }
48
+ get isError(): boolean {
49
+ return false;
50
+ }
51
+ get customizations() {
52
+ return {};
53
+ }
54
+ messages: ChatMessageModelBase[] = [
55
+ {
56
+ type: 'welcome',
57
+ id: 'messageid',
58
+ state: ChatMessageState.Delivered,
59
+ timestamp: new Date(),
60
+ message:
61
+ 'Hi there! I’m ServiceTitan Bot, a chatbot powered by Titan Intelligence designed to answer your questions about using ServiceTitan. I’m here to help you, but I’m still learning, so I might not have all the answers yet. Do you have a question?',
62
+ participant: {
63
+ isAgent: true,
64
+ name: 'Agent',
65
+ icon: ChatParticipantIcon.Bot,
66
+ },
67
+ } as ChatMessageModelWelcome,
68
+ {
69
+ type: 'message',
70
+ id: 'messageid2',
71
+ state: ChatMessageState.Delivered,
72
+ timestamp: new Date(),
73
+ message: 'How to create a form?',
74
+ participant: {
75
+ isAgent: false,
76
+ name: 'User',
77
+ icon: ChatParticipantIcon.Initials,
78
+ },
79
+ } as ChatMessageModelText,
80
+ ];
81
+ sendMessageRetry: (message: ChatMessageModelBase) => Promise<void> = cy.stub();
82
+ sendMessageText: (message: string) => Promise<void> = cy.stub();
83
+ setFile: (file: any) => void = cy.stub();
84
+ triggerScroll: () => void = cy.stub();
85
+ addMessage: (isAgent: boolean, message: string, data?: any) => void = cy.stub();
86
+ off: <T>(event: string, listener: ChatUiEventListener<T>) => void = cy.stub();
87
+ on: <T>(event: string, listener: ChatUiEventListener<T>) => void = cy.stub();
88
+ resetError: (runState: ChatRunState) => void = cy.stub();
89
+ reset: (resetState?: boolean) => void = cy.stub();
90
+ resetFile: () => void = cy.stub();
91
+ setAgentTyping: (typing: boolean) => void = cy.stub();
92
+ setChatError: (chatError: ChatError) => void = cy.stub();
93
+ setError: <T = any>(message: string, options?: ChatErrorOptions<T>) => void = cy.stub();
94
+ setFilePickerEnabled: (isEnabled: boolean) => void = cy.stub();
95
+ setMessageState: (message: ChatMessageModelBase, state: ChatMessageState, data?: any) => void =
96
+ cy.stub();
97
+ addMessageWelcome: (message: string) => void = cy.stub();
98
+ setCustomizationContext: (customizationContext?: unknown) => void = cy.stub();
99
+ chasitorTyping: (isTyping: boolean) => Promise<void> = cy.stub();
100
+ configure: (configuration?: ChatConfiguration) => void = cy.stub();
101
+ run: (configuration?: ChatConfiguration, data?: unknown) => Promise<void> = cy.stub();
102
+ recover: () => Promise<void> = cy.stub();
103
+ destroy: () => Promise<void> = cy.stub();
104
+ setAgentIcon: (icon: ChatParticipantIcon) => void = cy.stub();
105
+ setAgentName: (name: string) => void = cy.stub();
106
+ setIncomingSound: (soundUrl: string) => void = cy.stub();
107
+ setMessages: (messages: ChatMessageModelBase[]) => void = cy.stub();
108
+ setStatus: (status: ChatRunState) => void = cy.stub();
109
+ setTimer: (timer?: ChatTimer) => void = cy.stub();
110
+ restartTimers: () => Promise<void> = cy.stub();
111
+ restart: () => Promise<void> = cy.stub();
112
+ cancelChat: () => Promise<void> = cy.stub();
113
+ endChat: (endReason?: ChatEndReason) => Promise<void> = cy.stub();
114
+ }
@@ -0,0 +1,18 @@
1
+ import { IChatbotApiClient, Models } from '@servicetitan/titan-chatbot-api';
2
+
3
+ export class ChatbotApiClientMock implements IChatbotApiClient {
4
+ postFeedback: (body: Models.IFeedback, abortSignal?: AbortSignal) => Promise<Models.Feedback> =
5
+ cy.stub();
6
+ postMessage: (
7
+ body: Models.IUserMessage,
8
+ abortSignal?: AbortSignal
9
+ ) => Promise<Models.BotMessage> = cy.stub();
10
+ getOptions: (abortSignal?: AbortSignal) => Promise<Models.FrontendModel> = cy.stub();
11
+ postSession: (body: Models.ISession, abortSignal?: AbortSignal) => Promise<Models.Session> =
12
+ cy.stub();
13
+ patchSession: (body: Models.ISession, abortSignal?: AbortSignal) => Promise<Models.Session> =
14
+ cy.stub();
15
+ deleteSession: (body: Models.ISession, abortSignal?: AbortSignal) => Promise<Models.Session> =
16
+ cy.stub();
17
+ postRefreshAuthCookies: (abortSignal?: AbortSignal) => Promise<boolean> = cy.stub();
18
+ }
@@ -0,0 +1,7 @@
1
+ import { ILog, LogError, LogInfo, LogWarning } from '@servicetitan/log-service';
2
+
3
+ export class LogMock implements ILog {
4
+ error: (entry: LogError) => void = cy.stub();
5
+ info: (entry: LogInfo) => void = cy.stub();
6
+ warning: (entry: LogWarning) => void = cy.stub();
7
+ }
@@ -0,0 +1,5 @@
1
+ export * from './chat-ui.store.mock';
2
+ export * from './dependencies.mock';
3
+ export * from './chatbot-api-client.mock';
4
+ export * as HC from './native-client-help-center.mock';
5
+ export * as TC from './native-client.mock';
@@ -0,0 +1,139 @@
1
+ import { NativeClientHC } from '@servicetitan/titan-chatbot-api';
2
+
3
+ const sessionId = 866650;
4
+ const userMessageId = 466965;
5
+ const messageId = 466966;
6
+
7
+ export function interceptFilterOptions(baseUrl: string) {
8
+ cy.intercept('GET', `${baseUrl}/api/Chat/filter-options`, {
9
+ statusCode: 200,
10
+ body: new NativeClientHC.FilterOptions({
11
+ sources: [
12
+ new NativeClientHC.FilterOption({
13
+ id: 'source1',
14
+ displayName: 'Source 1',
15
+ }),
16
+ new NativeClientHC.FilterOption({
17
+ id: 'source2',
18
+ displayName: 'Source 2',
19
+ }),
20
+ ],
21
+ contentTypes: [
22
+ new NativeClientHC.FilterOption({
23
+ id: 'contentType1',
24
+ displayName: 'Content Type 1',
25
+ }),
26
+ new NativeClientHC.FilterOption({
27
+ id: 'contentType2',
28
+ displayName: 'Content Type 2',
29
+ }),
30
+ ],
31
+ productAreas: [
32
+ new NativeClientHC.FilterOption({
33
+ id: 'productArea1',
34
+ displayName: 'Product Area 1',
35
+ }),
36
+ new NativeClientHC.FilterOption({
37
+ id: 'productArea2',
38
+ displayName: 'Product Area 2',
39
+ }),
40
+ ],
41
+ }),
42
+ }).as('getFilterOptions');
43
+ return '@getFilterOptions';
44
+ }
45
+
46
+ export const CreateSession = {
47
+ request: {
48
+ instance: 'STapp',
49
+ },
50
+ response: {
51
+ id: sessionId,
52
+ createdUtc: '2025-06-26T13:37:52.1117943Z',
53
+ closedUtc: null,
54
+ botId: 'AzureChatGpt',
55
+ source: {
56
+ instance: 'STapp',
57
+ category: null,
58
+ subCategory: null,
59
+ },
60
+ },
61
+ intercept: (baseUrl: string) => {
62
+ cy.intercept('POST', `${baseUrl}/api/Chat/create-session`, {
63
+ statusCode: 200,
64
+ body: CreateSession.response,
65
+ }).as('createSession');
66
+ return '@createSession';
67
+ },
68
+ };
69
+
70
+ export const SendUserMessage = {
71
+ request: {
72
+ source: { area: 'FloatingChat' },
73
+ filters: {},
74
+ sessionId,
75
+ text: 'hello',
76
+ },
77
+ response: {
78
+ error: null,
79
+ isTransientError: null,
80
+ retryAfter: null,
81
+ guardFlag: 'N',
82
+ isGuardrailed: false,
83
+ scoredUrls: [
84
+ {
85
+ url: 'https://help.servicetitan.com/how-to/provide-your-customers-access-to-the-new-customer-portal',
86
+ score: 0.7364162974448314,
87
+ title: 'Invite your customers to the New Customer Portal',
88
+ },
89
+ {
90
+ url: 'https://servicetitan.lightning.force.com/lightning/r/Case/500Pg00000YOqziIAD/view',
91
+ score: 0.6425736095724551,
92
+ title: "My tech Brian Gross is unable to sign in. The system wasn't showing his jobs so he deleted the app and downloaded it again and can't sign in",
93
+ },
94
+ {
95
+ url: 'https://help.servicetitan.com/faq/settings-faq',
96
+ score: 0.6289453729633097,
97
+ title: 'Settings faq',
98
+ },
99
+ ],
100
+ botVersion: 'v2025.6.1 b210',
101
+ metadata: {},
102
+ userMessageId,
103
+ id: messageId,
104
+ sessionId,
105
+ timestampUtc: '2025-06-26T14:57:29.8664912Z',
106
+ text: 'To change your password, follow these steps:\n\n1. Navigate to the portal sign-in screen.\n2. Click "Can’t sign in?" on the login page to open the password reset workflow.\n3. Enter your email address and click "Send reset link."\n4. Open the email you receive and click the link to choose a new password.\n5. Enter your new password twice and submit.',
107
+ },
108
+ intercept: (baseUrl: string) => {
109
+ cy.intercept('POST', `${baseUrl}/api/Chat/user-message`, {
110
+ statusCode: 200,
111
+ body: SendUserMessage.response,
112
+ }).as('sendUserMessage');
113
+ return '@sendUserMessage';
114
+ },
115
+ };
116
+
117
+ export const MessageFeedback = {
118
+ request: { rating: 1 },
119
+ intercept: (baseUrl: string) => {
120
+ cy.intercept(
121
+ 'POST',
122
+ `${baseUrl}/api/Chat/bot-message-feedback?sessionId=${sessionId}&botMessageId=${messageId}`,
123
+ {
124
+ statusCode: 200,
125
+ }
126
+ ).as('messageFeedback');
127
+ return '@messageFeedback';
128
+ },
129
+ };
130
+
131
+ export const SessionFeedback = {
132
+ request: { description: 'Good answer!', rating: 1 },
133
+ intercept: (baseUrl: string) => {
134
+ cy.intercept('POST', `${baseUrl}/api/Chat/session-feedback?sessionId=${sessionId}`, {
135
+ statusCode: 200,
136
+ }).as('sessionFeedback');
137
+ return '@sessionFeedback';
138
+ },
139
+ };