@@ -111,6 +111,15 @@ test.describe(
111111 . first ( )
112112 . click ( ) ;
113113
114+ // Select supported data types (required when OpenMetadata platform is selected)
115+ await page . locator ( '#supportedDataTypes' ) . click ( ) ;
116+ await page . locator ( '#supportedDataTypes' ) . fill ( 'NUMBER' ) ;
117+ await page
118+ . locator ( '.ant-select-dropdown:visible' )
119+ . getByTitle ( 'NUMBER' )
120+ . click ( ) ;
121+ await page . keyboard . press ( 'Escape' ) ;
122+
114123 // Select test platform
115124 await page . locator ( '#testPlatforms' ) . click ( ) ;
116125 await page
@@ -285,6 +294,105 @@ test.describe(
285294 ) . toBeVisible ( ) ;
286295 } ) ;
287296
297+ test ( 'should require supported data types only when OpenMetadata platform is selected' , async ( {
298+ page,
299+ } ) => {
300+ test . slow ( ) ;
301+ let createdTestDefinitionId : string | undefined ;
302+
303+ try {
304+ await test . step ( 'Open create form' , async ( ) => {
305+ await page . goto ( '/test-library' ) ;
306+ await page . getByTestId ( 'add-test-definition-button' ) . click ( ) ;
307+ await page . locator ( '.ant-drawer' ) . waitFor ( { state : 'visible' } ) ;
308+ } ) ;
309+
310+ await test . step ( 'Verify supported data types is required with default OpenMetadata platform' , async ( ) => {
311+ // Fill required fields except supportedDataTypes
312+ await page . locator ( '#name' ) . fill ( `validation-test-${ uuid ( ) } ` ) ;
313+ await page . locator ( '#entityType' ) . click ( ) ;
314+ await page
315+ . locator ( '.ant-select-dropdown:visible' )
316+ . locator ( '.ant-select-item-option-content:has-text("TABLE")' )
317+ . first ( )
318+ . click ( ) ;
319+
320+ // Wait for entity type dropdown to close before submitting
321+ await expect (
322+ page . locator ( '.ant-select-dropdown:visible' )
323+ ) . not . toBeVisible ( ) ;
324+
325+ // Submit the form
326+ await page . getByTestId ( 'save-test-definition' ) . click ( ) ;
327+
328+ // Expect validation error on supportedDataTypes
329+ const supportedDataTypesItem = page
330+ . locator ( '.ant-form-item' )
331+ . filter ( { hasText : 'Supported Data Types' } ) ;
332+
333+ await expect (
334+ supportedDataTypesItem . locator ( '.ant-form-item-explain-error' )
335+ ) . toBeVisible ( ) ;
336+ } ) ;
337+
338+ await test . step ( 'Remove OpenMetadata and select only dbt — field should not be required' , async ( ) => {
339+ // Remove OpenMetadata from testPlatforms
340+ const testPlatformsSelector = page
341+ . locator ( '.ant-form-item' )
342+ . filter ( { hasText : 'Test Platforms' } )
343+ . locator ( '.ant-select' ) ;
344+ const openMetadataTag = testPlatformsSelector . locator (
345+ '.ant-select-selection-item[title="OpenMetadata"] .ant-select-selection-item-remove'
346+ ) ;
347+ await openMetadataTag . click ( ) ;
348+
349+ // Add dbt
350+ await page . locator ( '#testPlatforms' ) . click ( ) ;
351+ await page
352+ . locator ( '.ant-select-dropdown:visible' )
353+ . locator ( '.ant-select-item-option-content:has-text("dbt")' )
354+ . first ( )
355+ . click ( ) ;
356+
357+ // Close dropdown
358+ await page . keyboard . press ( 'Escape' ) ;
359+
360+ // Wait for the validation error to clear after removing OpenMetadata
361+ const supportedDataTypesItem = page
362+ . locator ( '.ant-form-item' )
363+ . filter ( { hasText : 'Supported Data Types' } ) ;
364+ await expect (
365+ supportedDataTypesItem . locator ( '.ant-form-item-explain-error' )
366+ ) . not . toBeVisible ( ) ;
367+
368+ // Submit the form — supportedDataTypes should no longer block submission
369+ const testDefinitionResponse = page . waitForResponse (
370+ ( response ) =>
371+ response . url ( ) . includes ( '/api/v1/dataQuality/testDefinitions' ) &&
372+ response . request ( ) . method ( ) === 'POST'
373+ ) ;
374+ await page . getByTestId ( 'save-test-definition' ) . click ( ) ;
375+
376+ const responseData = await testDefinitionResponse ;
377+ expect ( responseData . status ( ) ) . toBe ( 201 ) ;
378+
379+ const responseBody = await responseData . json ( ) ;
380+ createdTestDefinitionId = responseBody . id ;
381+
382+ await expect ( page . getByText ( / c r e a t e d s u c c e s s f u l l y / i) ) . toBeVisible ( ) ;
383+ } ) ;
384+ } finally {
385+ if ( createdTestDefinitionId ) {
386+ const { apiContext } = await getApiContext ( page ) ;
387+ const deleteResponse = await apiContext . delete (
388+ `/api/v1/dataQuality/testDefinitions/${ createdTestDefinitionId } `
389+ ) ;
390+
391+ expect ( deleteResponse . ok ( ) ) . toBeTruthy ( ) ;
392+ }
393+ }
394+ } ) ;
395+
288396 test ( 'should cancel form and close drawer' , async ( { page } ) => {
289397 // Navigate to Test Library
290398 await page . goto ( '/test-library' ) ;
@@ -667,6 +775,15 @@ test.describe(
667775 page . locator ( '.ant-select-dropdown:visible' )
668776 ) . not . toBeVisible ( ) ;
669777
778+ // Select supported data types (required when OpenMetadata platform is selected)
779+ await page . locator ( '#supportedDataTypes' ) . click ( ) ;
780+ await page . locator ( '#supportedDataTypes' ) . fill ( 'NUMBER' ) ;
781+ await page
782+ . locator ( '.ant-select-dropdown:visible' )
783+ . getByTitle ( 'NUMBER' )
784+ . click ( ) ;
785+ await page . keyboard . press ( 'Escape' ) ;
786+
670787 await page . locator ( '#supportedServices' ) . click ( ) ;
671788 await page . locator ( '#supportedServices' ) . fill ( 'Mysql' ) ;
672789 const mysqlOption = page
@@ -966,6 +1083,15 @@ test.describe(
9661083 page . locator ( '.ant-select-dropdown:visible' )
9671084 ) . not . toBeVisible ( ) ;
9681085
1086+ // Select supported data types (required when OpenMetadata platform is selected)
1087+ await page . locator ( '#supportedDataTypes' ) . click ( ) ;
1088+ await page . locator ( '#supportedDataTypes' ) . fill ( 'NUMBER' ) ;
1089+ await page
1090+ . locator ( '.ant-select-dropdown:visible' )
1091+ . getByTitle ( 'NUMBER' )
1092+ . click ( ) ;
1093+ await page . keyboard . press ( 'Escape' ) ;
1094+
9691095 const createResponse = page . waitForResponse (
9701096 ( response ) =>
9711097 response . url ( ) . includes ( '/api/v1/dataQuality/testDefinitions' ) &&
0 commit comments