@@ -26,6 +26,9 @@ const {
2626 getPopoverSelector,
2727 goToPage,
2828 openFilteringPanel,
29+ fillInput,
30+ expectAttributeValue,
31+ resetFilters,
2932} = require ( '../defaults.js' ) ;
3033const dateAndTime = require ( 'date-and-time' ) ;
3134const { resetDatabaseContent } = require ( '../../utilities/resetDatabaseContent.js' ) ;
@@ -318,5 +321,32 @@ module.exports = () => {
318321 await page . $eval ( getCurrentStatusCheckboxSelector ( "DEPLOYED" ) , ( element ) => element . click ( ) ) ;
319322 await waitForTableLength ( page , 3 ) ;
320323 await checkTableCurrentStatuses ( [ "RUNNING" , "DEPLOYED" ] ) ;
324+ } ;
325+
326+ it ( 'should successfully filter environments by their IDs' , async ( ) => {
327+ /**
328+ * This is the sequence to test filtering the environments on IDs.
329+ *
330+ * @param {string } selector the filter input selector
331+ * @param {string } inputValue the value to type in the filter input
332+ * @param {string[] } expectedIds the list of expected environment IDs after filtering
333+ * @return {void }
334+ */
335+ const filterOnID = async ( selector , inputValue , expectedIds ) => {
336+ await fillInput ( page , selector , inputValue , [ 'change' ] ) ;
337+ await waitForTableLength ( page , expectedIds . length ) ;
338+ expect ( await page . $$eval ( 'tbody tr' , ( rows ) => rows . map ( ( row ) => row . id ) ) ) . to . eql ( expectedIds . map ( id => `row${ id } ` ) ) ;
339+ } ;
340+
341+ await expectAttributeValue ( page , '.id-filter input' , 'placeholder' , 'e.g. CmCvjNbg, TDI59So3d...' ) ;
342+
343+ await filterOnID ( '.id-filter input' , 'CmCvjNbg' , [ 'CmCvjNbg' ] ) ;
344+ await resetFilters ( page ) ;
345+
346+ await filterOnID ( '.id-filter input' , 'CmCvjNbg, TDI59So3d' , [ 'CmCvjNbg' , 'TDI59So3d' ] ) ;
347+ await resetFilters ( page ) ;
348+
349+ await filterOnID ( '.id-filter input' , 'j' , [ 'CmCvjNbg' , 'GIDO1jdkD' , '8E4aZTjY' , 'Dxi029djX' ] ) ;
350+ await resetFilters ( page ) ;
321351 } ) ;
322352} ;
0 commit comments