@@ -38,8 +38,6 @@ describe('MongoDB Assistant', function () {
38
38
const collectionName = 'entryPoints' ;
39
39
40
40
before ( async function ( ) {
41
- skipForWeb ( this , 'ai assistant not yet available in compass-web' ) ;
42
-
43
41
process . env . COMPASS_E2E_SKIP_ATLAS_SIGNIN = 'true' ;
44
42
45
43
// Start a mock Atlas service for feature flag checks
@@ -55,7 +53,6 @@ describe('MongoDB Assistant', function () {
55
53
56
54
telemetry = await startTelemetryServer ( ) ;
57
55
compass = await init ( this . test ?. fullTitle ( ) ) ;
58
- browser = compass . browser ;
59
56
60
57
sendMessage = async (
61
58
text : string ,
@@ -75,34 +72,41 @@ describe('MongoDB Assistant', function () {
75
72
await submitButton . click ( ) ;
76
73
} ;
77
74
75
+ const setup = async ( ) => {
76
+ browser = compass . browser ;
77
+ await browser . setupDefaultConnections ( ) ;
78
+ await browser . connectToDefaults ( ) ;
79
+ await browser . selectConnectionMenuItem (
80
+ DEFAULT_CONNECTION_NAME_1 ,
81
+ Selectors . CreateDatabaseButton ,
82
+ false
83
+ ) ;
84
+ await browser . addDatabase ( dbName , collectionName ) ;
85
+
86
+ await browser . navigateToCollectionTab (
87
+ DEFAULT_CONNECTION_NAME_1 ,
88
+ dbName ,
89
+ collectionName ,
90
+ 'Aggregations'
91
+ ) ;
92
+ } ;
93
+
78
94
setAIOptIn = async ( newValue : boolean ) => {
79
95
if (
80
96
( await browser . getFeature ( 'optInGenAIFeatures' ) ) === true &&
81
97
newValue === false
82
98
) {
99
+ await cleanup ( compass ) ;
83
100
// Reseting the opt-in to false can be tricky so it's best to start over in this case.
84
- compass = await init ( this . test ?. fullTitle ( ) , { firstRun : false } ) ;
101
+ compass = await init ( this . test ?. fullTitle ( ) , { firstRun : true } ) ;
102
+ await setup ( ) ;
85
103
return ;
86
104
}
87
105
88
106
await browser . setFeature ( 'optInGenAIFeatures' , newValue ) ;
89
107
} ;
90
108
91
- await browser . setupDefaultConnections ( ) ;
92
- await browser . connectToDefaults ( ) ;
93
- await browser . selectConnectionMenuItem (
94
- DEFAULT_CONNECTION_NAME_1 ,
95
- Selectors . CreateDatabaseButton ,
96
- false
97
- ) ;
98
- await browser . addDatabase ( dbName , collectionName ) ;
99
-
100
- await browser . navigateToCollectionTab (
101
- DEFAULT_CONNECTION_NAME_1 ,
102
- dbName ,
103
- collectionName ,
104
- 'Aggregations'
105
- ) ;
109
+ await setup ( ) ;
106
110
} ) ;
107
111
108
112
after ( async function ( ) {
@@ -164,72 +168,6 @@ describe('MongoDB Assistant', function () {
164
168
} ) ;
165
169
} ) ;
166
170
167
- describe ( 'before opt-in' , function ( ) {
168
- before ( async function ( ) {
169
- await setAIOptIn ( false ) ;
170
- } ) ;
171
-
172
- it ( 'does not send the message if the user declines the opt-in' , async function ( ) {
173
- await openAssistantDrawer ( browser ) ;
174
-
175
- await sendMessage ( testMessage ) ;
176
-
177
- const declineLink = browser . $ ( Selectors . AIOptInModalDeclineLink ) ;
178
- await declineLink . waitForDisplayed ( ) ;
179
- await declineLink . click ( ) ;
180
-
181
- const optInModal = browser . $ ( Selectors . AIOptInModal ) ;
182
- await optInModal . waitForDisplayed ( { reverse : true } ) ;
183
-
184
- const chatInput = browser . $ ( Selectors . AssistantChatInputTextArea ) ;
185
- expect ( await chatInput . getValue ( ) ) . not . to . equal ( testMessage ) ;
186
-
187
- expect ( await getDisplayedMessages ( browser ) ) . to . deep . equal ( [ ] ) ;
188
-
189
- expect ( mockAssistantServer . getRequests ( ) ) . to . be . empty ;
190
- } ) ;
191
-
192
- describe ( 'entry points' , function ( ) {
193
- it ( 'should display opt-in modal for connection error entry point' , async function ( ) {
194
- await browser . connectWithConnectionString (
195
- 'mongodb-invalid://localhost:27017' ,
196
- { connectionStatus : 'failure' }
197
- ) ;
198
- await browser . clickVisible (
199
- browser . $ ( Selectors . ConnectionToastErrorDebugButton )
200
- ) ;
201
-
202
- const optInModal = browser . $ ( Selectors . AIOptInModal ) ;
203
- await optInModal . waitForDisplayed ( ) ;
204
- expect ( await optInModal . isDisplayed ( ) ) . to . be . true ;
205
-
206
- const declineLink = browser . $ ( Selectors . AIOptInModalDeclineLink ) ;
207
- await declineLink . waitForDisplayed ( ) ;
208
- await declineLink . click ( ) ;
209
-
210
- await optInModal . waitForDisplayed ( { reverse : true } ) ;
211
-
212
- expect ( await getDisplayedMessages ( browser ) ) . to . deep . equal ( [ ] ) ;
213
- } ) ;
214
-
215
- it ( 'should display opt-in modal for explain plan entry point' , async function ( ) {
216
- await useExplainPlanEntryPoint ( browser ) ;
217
-
218
- const optInModal = browser . $ ( Selectors . AIOptInModal ) ;
219
- await optInModal . waitForDisplayed ( ) ;
220
- expect ( await optInModal . isDisplayed ( ) ) . to . be . true ;
221
-
222
- const declineLink = browser . $ ( Selectors . AIOptInModalDeclineLink ) ;
223
- await declineLink . waitForDisplayed ( ) ;
224
- await declineLink . click ( ) ;
225
-
226
- await optInModal . waitForDisplayed ( { reverse : true } ) ;
227
-
228
- expect ( await getDisplayedMessages ( browser ) ) . to . deep . equal ( [ ] ) ;
229
- } ) ;
230
- } ) ;
231
- } ) ;
232
-
233
171
describe ( 'opting in' , function ( ) {
234
172
before ( async function ( ) {
235
173
await setAIOptIn ( false ) ;
@@ -465,6 +403,72 @@ describe('MongoDB Assistant', function () {
465
403
} ) ;
466
404
} ) ;
467
405
} ) ;
406
+
407
+ describe ( 'before opt-in' , function ( ) {
408
+ before ( async function ( ) {
409
+ await setAIOptIn ( false ) ;
410
+ } ) ;
411
+
412
+ it ( 'does not send the message if the user declines the opt-in' , async function ( ) {
413
+ await openAssistantDrawer ( browser ) ;
414
+
415
+ await sendMessage ( testMessage ) ;
416
+
417
+ const declineLink = browser . $ ( Selectors . AIOptInModalDeclineLink ) ;
418
+ await declineLink . waitForDisplayed ( ) ;
419
+ await declineLink . click ( ) ;
420
+
421
+ const optInModal = browser . $ ( Selectors . AIOptInModal ) ;
422
+ await optInModal . waitForDisplayed ( { reverse : true } ) ;
423
+
424
+ const chatInput = browser . $ ( Selectors . AssistantChatInputTextArea ) ;
425
+ expect ( await chatInput . getValue ( ) ) . not . to . equal ( testMessage ) ;
426
+
427
+ expect ( await getDisplayedMessages ( browser ) ) . to . deep . equal ( [ ] ) ;
428
+
429
+ expect ( mockAssistantServer . getRequests ( ) ) . to . be . empty ;
430
+ } ) ;
431
+
432
+ describe ( 'entry points' , function ( ) {
433
+ it ( 'should display opt-in modal for connection error entry point' , async function ( ) {
434
+ await browser . connectWithConnectionString (
435
+ 'mongodb-invalid://localhost:27017' ,
436
+ { connectionStatus : 'failure' }
437
+ ) ;
438
+ await browser . clickVisible (
439
+ browser . $ ( Selectors . ConnectionToastErrorDebugButton )
440
+ ) ;
441
+
442
+ const optInModal = browser . $ ( Selectors . AIOptInModal ) ;
443
+ await optInModal . waitForDisplayed ( ) ;
444
+ expect ( await optInModal . isDisplayed ( ) ) . to . be . true ;
445
+
446
+ const declineLink = browser . $ ( Selectors . AIOptInModalDeclineLink ) ;
447
+ await declineLink . waitForDisplayed ( ) ;
448
+ await declineLink . click ( ) ;
449
+
450
+ await optInModal . waitForDisplayed ( { reverse : true } ) ;
451
+
452
+ expect ( await getDisplayedMessages ( browser ) ) . to . deep . equal ( [ ] ) ;
453
+ } ) ;
454
+
455
+ it ( 'should display opt-in modal for explain plan entry point' , async function ( ) {
456
+ await useExplainPlanEntryPoint ( browser ) ;
457
+
458
+ const optInModal = browser . $ ( Selectors . AIOptInModal ) ;
459
+ await optInModal . waitForDisplayed ( ) ;
460
+ expect ( await optInModal . isDisplayed ( ) ) . to . be . true ;
461
+
462
+ const declineLink = browser . $ ( Selectors . AIOptInModalDeclineLink ) ;
463
+ await declineLink . waitForDisplayed ( ) ;
464
+ await declineLink . click ( ) ;
465
+
466
+ await optInModal . waitForDisplayed ( { reverse : true } ) ;
467
+
468
+ expect ( await getDisplayedMessages ( browser ) ) . to . deep . equal ( [ ] ) ;
469
+ } ) ;
470
+ } ) ;
471
+ } ) ;
468
472
} ) ;
469
473
470
474
async function setAIFeatures ( browser : CompassBrowser , newValue : boolean ) {
0 commit comments