@@ -14,6 +14,8 @@ import {
14
14
createNumbersCollection ,
15
15
} from '../helpers/insert-data' ;
16
16
17
+ const INITIAL_DATABASE_NAMES = [ 'admin' , 'config' , 'local' , 'test' ] ;
18
+
17
19
describe ( 'Instance databases tab' , function ( ) {
18
20
let compass : Compass ;
19
21
let browser : CompassBrowser ;
@@ -42,9 +44,7 @@ describe('Instance databases tab', function () {
42
44
const dbTable = await browser . $ ( Selectors . DatabasesTable ) ;
43
45
await dbTable . waitForDisplayed ( ) ;
44
46
45
- const dbSelectors = [ 'admin' , 'config' , 'local' , 'test' ] . map (
46
- Selectors . databaseCard
47
- ) ;
47
+ const dbSelectors = INITIAL_DATABASE_NAMES . map ( Selectors . databaseCard ) ;
48
48
49
49
for ( const dbSelector of dbSelectors ) {
50
50
const found = await browser . scrollToVirtualItem (
@@ -138,31 +138,37 @@ describe('Instance databases tab', function () {
138
138
} ) ;
139
139
140
140
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
143
142
const dbSelector = Selectors . databaseCard ( db ) ;
144
143
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
146
162
const mongoClient = new MongoClient ( DEFAULT_CONNECTION_STRING ) ;
147
163
await mongoClient . connect ( ) ;
148
164
try {
149
165
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 ( ) ;
161
166
162
- // Drop it and refresh again
167
+ // Drop the database
163
168
console . log ( {
164
169
'database.dropDatabase()' : await database . dropDatabase ( ) ,
165
170
} ) ;
171
+ // Prove that it is really gone
166
172
console . log ( {
167
173
'database.admin().listDatabases()' : (
168
174
await database . admin ( ) . listDatabases ( )
@@ -172,10 +178,11 @@ describe('Instance databases tab', function () {
172
178
await mongoClient . close ( ) ;
173
179
}
174
180
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
+ } ) ;
179
186
await browser . $ ( dbSelector ) . waitForExist ( { reverse : true } ) ;
180
187
} ) ;
181
188
} ) ;
0 commit comments