@@ -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' ) ;
@@ -290,4 +293,31 @@ module.exports = () => {
290293 await openFilteringPanel ( page ) ;
291294 await page . waitForSelector ( filterPanelSelector , { visible : true } ) ;
292295 } ) ;
296+
297+ it ( 'should successfully filter environments by their IDs' , async ( ) => {
298+ /**
299+ * This is the sequence to test filtering the environments on IDs.
300+ *
301+ * @param {string } selector the filter input selector
302+ * @param {string } inputValue the value to type in the filter input
303+ * @param {string[] } expectedIds the list of expected environment IDs after filtering
304+ * @return {void }
305+ */
306+ const filterOnID = async ( selector , inputValue , expectedIds ) => {
307+ await fillInput ( page , selector , inputValue , [ 'change' ] ) ;
308+ await waitForTableLength ( page , expectedIds . length ) ;
309+ expect ( await page . $$eval ( 'tbody tr' , ( rows ) => rows . map ( ( row ) => row . id ) ) ) . to . eql ( expectedIds . map ( id => `row${ id } ` ) ) ;
310+ } ;
311+
312+ await expectAttributeValue ( page , '.id-filter input' , 'placeholder' , 'e.g. CmCvjNbg, TDI59So3d...' ) ;
313+
314+ await filterOnID ( '.id-filter input' , 'CmCvjNbg' , [ 'CmCvjNbg' ] ) ;
315+ await resetFilters ( page ) ;
316+
317+ await filterOnID ( '.id-filter input' , 'CmCvjNbg, TDI59So3d' , [ 'CmCvjNbg' , 'TDI59So3d' ] ) ;
318+ await resetFilters ( page ) ;
319+
320+ await filterOnID ( '.id-filter input' , 'j' , [ 'CmCvjNbg' , 'GIDO1jdkD' , '8E4aZTjY' , 'Dxi029djX' ] ) ;
321+ await resetFilters ( page ) ;
322+ } ) ;
293323} ;
0 commit comments