1
+ import { Chance } from 'chance' ;
1
2
import { MyRedisDatabasePage , MemoryEfficiencyPage , BrowserPage , CliPage , WorkbenchPage } from '../../../pageObjects' ;
2
3
import { rte } from '../../../helpers/constants' ;
3
4
import { acceptLicenseTermsAndAddDatabaseApi } from '../../../helpers/database' ;
@@ -11,13 +12,16 @@ const browserPage = new BrowserPage();
11
12
const cliPage = new CliPage ( ) ;
12
13
const workbenchPage = new WorkbenchPage ( ) ;
13
14
const common = new Common ( ) ;
15
+ const chance = new Chance ( ) ;
14
16
15
17
const hashKeyName = 'test:Hash1' ;
16
18
const hashValue = 'hashValue11111!' ;
17
19
const streamKeyName = 'test:Stream1' ;
18
20
const streamKeyNameDelimiter = 'test-Stream1' ;
19
21
const keySpaces = [ 'test:*' , 'key1:*' , 'key2:*' , 'key5:*' , 'key5:5' , 'test-*' , 'key4:*' ] ;
20
22
const keysTTL = [ '3500' , '86300' , '2147476121' ] ;
23
+ const numberOfGeneratedKeys = 6 ;
24
+ const keyNamesReport = chance . unique ( chance . word , numberOfGeneratedKeys ) ;
21
25
22
26
fixture `Memory Efficiency`
23
27
. meta ( { type : 'critical_path' , rte : rte . standalone } )
@@ -207,3 +211,42 @@ test
207
211
const noExpiryPointLocation = + ( ( await memoryEfficiencyPage . noExpiryPoint . getAttribute ( 'cy' ) ) . slice ( 0 , 2 ) ) ;
208
212
await t . expect ( noExpiryPointLocation ) . lt ( 198 , 'Point in No expiry breakdown doesn\'t contain key' ) ;
209
213
} ) ;
214
+ test
215
+ . before ( async t => {
216
+ await acceptLicenseTermsAndAddDatabaseApi ( ossStandaloneConfig , ossStandaloneConfig . databaseName ) ;
217
+ await t . click ( myRedisDatabasePage . analysisPageButton ) ;
218
+ } )
219
+ . after ( async ( ) => {
220
+ for ( let i = 0 ; i < numberOfGeneratedKeys ; i ++ ) {
221
+ await cliPage . sendCommandInCli ( `del ${ keyNamesReport [ i ] } ` ) ;
222
+ }
223
+ await deleteStandaloneDatabaseApi ( ossStandaloneConfig ) ;
224
+ } ) ( 'Analysis history' , async t => {
225
+ const numberOfKeys = [ ] ;
226
+ const dbSize = ( await cliPage . getSuccessCommandResultFromCli ( 'dbsize' ) ) . split ( ' ' ) ;
227
+ const existedNumberOfKeys = parseInt ( dbSize [ dbSize . length - 1 ] ) ;
228
+ for ( let i = 0 ; i < 6 ; i ++ ) {
229
+ await cliPage . sendCommandInCli ( `set ${ keyNamesReport [ i ] } ${ chance . word ( ) } ` ) ;
230
+ await t . click ( memoryEfficiencyPage . newReportBtn ) ;
231
+ const compareValue = parseInt ( await memoryEfficiencyPage . donutTotalKeys . sibling ( 1 ) . textContent ) ;
232
+ await t . expect ( compareValue ) . eql ( ( existedNumberOfKeys + i + 1 ) , 'New report is not displayed' , { timeout : 2000 } ) ;
233
+ numberOfKeys . push ( await memoryEfficiencyPage . donutTotalKeys . sibling ( 1 ) . textContent ) ;
234
+ }
235
+ await t . click ( memoryEfficiencyPage . selectedReport ) ;
236
+ // Verify that user can see up to the 5 most recent previous results per database in the history
237
+ await t . expect ( memoryEfficiencyPage . reportItem . count ) . eql ( 5 , 'Number of saved reports is not correct' ) ;
238
+ // Verify that user can switch between reports and see all data updated in each report
239
+ for ( let i = 0 ; i < 5 ; i ++ ) {
240
+ await t . click ( memoryEfficiencyPage . reportItem . nth ( i ) ) ;
241
+ await t . expect ( memoryEfficiencyPage . reportItem . visible ) . notOk ( 'Report is not switched' ) ;
242
+ await t . expect ( memoryEfficiencyPage . scannedKeysInReport . textContent ) . contains ( `(${ numberOfKeys [ 5 - i ] } /${ numberOfKeys [ 5 - i ] } keys)` ) ;
243
+ const actualNumber = await memoryEfficiencyPage . donutTotalKeys . sibling ( 1 ) . textContent ;
244
+ await t . expect ( actualNumber ) . eql ( numberOfKeys [ 5 - i ] , 'Report content (total keys) is not correct' , { timeout : 2000 } ) ;
245
+ await t . click ( memoryEfficiencyPage . selectedReport ) ;
246
+ }
247
+ // Verify that specific report is saved as context
248
+ await t . click ( memoryEfficiencyPage . reportItem . nth ( 3 ) ) ;
249
+ await t . click ( myRedisDatabasePage . workbenchButton ) ;
250
+ await t . click ( myRedisDatabasePage . analysisPageButton ) ;
251
+ await t . expect ( memoryEfficiencyPage . donutTotalKeys . sibling ( 1 ) . textContent ) . eql ( numberOfKeys [ 2 ] , 'Context is not saved' ) ;
252
+ } ) ;
0 commit comments