@@ -157,4 +157,70 @@ test.describe('Browser - Read Key Details', () => {
157
157
const isDetailsClosed = await browserPage . isKeyDetailsClosed ( )
158
158
expect ( isDetailsClosed ) . toBe ( true )
159
159
} )
160
+
161
+ test ( 'should open key details when clicking on list key' , async ( {
162
+ api : { keyService } ,
163
+ } ) => {
164
+ const listElements = [
165
+ faker . lorem . word ( ) ,
166
+ faker . lorem . word ( ) ,
167
+ faker . lorem . word ( ) ,
168
+ ]
169
+ const keyTTL = 3600 // 1 hour
170
+
171
+ // Create a list key with multiple elements using API
172
+ await keyService . addListKeyApi (
173
+ { keyName, elements : listElements , expire : keyTTL } ,
174
+ ossStandaloneConfig ,
175
+ )
176
+
177
+ // Search for the key to ensure it's visible
178
+ await browserPage . searchByKeyName ( keyName )
179
+
180
+ // Click on the key to open details
181
+ await browserPage . openKeyDetailsByKeyName ( keyName )
182
+
183
+ // Verify key details panel is open
184
+ const isDetailsOpen = await browserPage . isKeyDetailsOpen ( keyName )
185
+ expect ( isDetailsOpen ) . toBe ( true )
186
+
187
+ // Verify list elements are displayed
188
+ const displayedElements = await browserPage . getAllListElements ( )
189
+ expect ( displayedElements ) . toHaveLength ( listElements . length )
190
+
191
+ // Verify all expected elements are present (order might be different)
192
+ listElements . forEach ( ( expectedElement ) => {
193
+ expect ( displayedElements ) . toContain ( expectedElement )
194
+ } )
195
+
196
+ // Verify the key length shows correct number of elements
197
+ const keyLength = await browserPage . getKeyLength ( )
198
+ expect ( keyLength ) . toBe ( listElements . length . toString ( ) )
199
+
200
+ // Verify the key size (bytes) is displayed correctly
201
+ const keySizeText = await browserPage . keySizeDetails . textContent ( )
202
+ expect ( keySizeText ) . toBeTruthy ( )
203
+
204
+ // Verify the TTL value is displayed correctly
205
+ const displayedTTL = await browserPage . getKeyTTL ( )
206
+ expect ( displayedTTL ) . toContain ( 'TTL:' )
207
+
208
+ // Extract the TTL value from the text and verify it's within expected range
209
+ const ttlMatch = displayedTTL ?. match ( / T T L : \s * ( \d + | N o l i m i t ) / )
210
+ expect ( ttlMatch ) . toBeTruthy ( )
211
+
212
+ if ( ttlMatch && ttlMatch [ 1 ] !== 'No limit' ) {
213
+ const actualTTL = parseInt ( ttlMatch [ 1 ] , 10 )
214
+ // TTL should be close to what we set (allowing for some time passage during test execution)
215
+ expect ( actualTTL ) . toBeGreaterThan ( keyTTL - 60 )
216
+ expect ( actualTTL ) . toBeLessThanOrEqual ( keyTTL )
217
+ }
218
+
219
+ // Close the details
220
+ await browserPage . closeKeyDetails ( )
221
+
222
+ // Verify details are closed
223
+ const isDetailsClosed = await browserPage . isKeyDetailsClosed ( )
224
+ expect ( isDetailsClosed ) . toBe ( true )
225
+ } )
160
226
} )
0 commit comments