@@ -14,6 +14,8 @@ import {
1414 createNumbersCollection ,
1515} from '../helpers/insert-data' ;
1616
17+ const INITIAL_DATABASE_NAMES = [ 'admin' , 'config' , 'local' , 'test' ] ;
18+
1719describe ( 'Instance databases tab' , function ( ) {
1820 let compass : Compass ;
1921 let browser : CompassBrowser ;
@@ -42,9 +44,7 @@ describe('Instance databases tab', function () {
4244 const dbTable = await browser . $ ( Selectors . DatabasesTable ) ;
4345 await dbTable . waitForDisplayed ( ) ;
4446
45- const dbSelectors = [ 'admin' , 'config' , 'local' , 'test' ] . map (
46- Selectors . databaseCard
47- ) ;
47+ const dbSelectors = INITIAL_DATABASE_NAMES . map ( Selectors . databaseCard ) ;
4848
4949 for ( const dbSelector of dbSelectors ) {
5050 const found = await browser . scrollToVirtualItem (
@@ -138,31 +138,37 @@ describe('Instance databases tab', function () {
138138 } ) ;
139139
140140 it ( 'can refresh the list of databases using refresh controls' , async function ( ) {
141- const db = 'my-instance-database' ;
142- const coll = 'my-collection' ;
141+ const db = 'test' ; // added by beforeEach
143142 const dbSelector = Selectors . databaseCard ( db ) ;
144143
145- // Create the database and refresh
144+ // Browse to the databases tab
145+ await browser . navigateToInstanceTab ( 'Databases' ) ;
146+
147+ // Make sure the db card we're going to drop is in there.
148+ await browser . scrollToVirtualItem (
149+ Selectors . DatabasesTable ,
150+ dbSelector ,
151+ 'grid'
152+ ) ;
153+ await browser . $ ( dbSelector ) . waitForDisplayed ( ) ;
154+
155+ // Wait for the page to finish loading as best as we can
156+ await browser . waitUntil ( async ( ) => {
157+ const placeholders = await browser . $$ ( Selectors . DatabaseStatLoader ) ;
158+ return placeholders . length === 0 ;
159+ } ) ;
160+
161+ // Drop the database using the driver
146162 const mongoClient = new MongoClient ( DEFAULT_CONNECTION_STRING ) ;
147163 await mongoClient . connect ( ) ;
148164 try {
149165 const database = mongoClient . db ( db ) ;
150- await database . createCollection ( coll ) ;
151-
152- await browser . navigateToInstanceTab ( 'Databases' ) ;
153- await browser . clickVisible ( Selectors . InstanceRefreshDatabaseButton ) ;
154-
155- await browser . scrollToVirtualItem (
156- Selectors . DatabasesTable ,
157- dbSelector ,
158- 'grid'
159- ) ;
160- await browser . $ ( dbSelector ) . waitForDisplayed ( ) ;
161166
162- // Drop it and refresh again
167+ // Drop the database
163168 console . log ( {
164169 'database.dropDatabase()' : await database . dropDatabase ( ) ,
165170 } ) ;
171+ // Prove that it is really gone
166172 console . log ( {
167173 'database.admin().listDatabases()' : (
168174 await database . admin ( ) . listDatabases ( )
@@ -172,10 +178,11 @@ describe('Instance databases tab', function () {
172178 await mongoClient . close ( ) ;
173179 }
174180
175- // looks like if you refresh too fast the database appears in the list but
176- // the stats never load, so just pause for bit first
177- await browser . pause ( 1000 ) ;
178- await browser . clickVisible ( Selectors . InstanceRefreshDatabaseButton ) ;
181+ // Refresh again and the database card should disappear.
182+ await browser . clickVisible ( Selectors . InstanceRefreshDatabaseButton , {
183+ scroll : true ,
184+ screenshot : 'instance-refresh-database-button.png' ,
185+ } ) ;
179186 await browser . $ ( dbSelector ) . waitForExist ( { reverse : true } ) ;
180187 } ) ;
181188} ) ;
0 commit comments