@@ -467,48 +467,62 @@ test.describe(
467467
468468 test . afterAll ( async ( { browser } ) => {
469469 const { apiContext } = await performAdminLogin ( browser ) ;
470-
471- await glossary . delete ( apiContext ) ;
472470 await glossaryTerm . delete ( apiContext ) ;
471+ await glossary . delete ( apiContext ) ;
473472 await testClassification . delete ( apiContext ) ;
474473 await testTag . delete ( apiContext ) ;
475474 } ) ;
476475
477476 test ( 'Glossary term should be consistent for search' , async ( {
478477 dataConsumerPage : page ,
479478 } ) => {
479+ // Go to tables page
480480 await page . goto ( '/table/sample_data.ecommerce_db.shopify.dim_customer' ) ;
481481
482- await page
483- . locator (
484- '[data-row-key="sample_data.ecommerce_db.shopify.dim_customer.customer_id"] [data-testid="glossary-tags-0"] [data-testid="entity-tags"] svg'
485- )
486- . click ( ) ;
482+ // Wait for page to be fully loaded
483+ await page . waitForLoadState ( 'networkidle' ) ;
484+ await page . waitForSelector ( '[data-testid="loader"]' , {
485+ state : 'detached' ,
486+ } ) ;
487+
488+ // Check if add button exists and is visible
489+ const rowSelector =
490+ '[data-row-key="sample_data.ecommerce_db.shopify.dim_customer.customer_id"] [data-testid="glossary-tags-0"]' ;
491+
492+ const addButton = await page . $ ( `${ rowSelector } [data-testid="add-tag"]` ) ;
493+ if ( addButton && ( await addButton . isVisible ( ) ) ) {
494+ await addButton . click ( ) ;
495+ } else {
496+ await page
497+ . locator ( `${ rowSelector } [data-testid="edit-button"]` )
498+ . click ( ) ;
499+ }
500+
487501 await page . waitForSelector ( '.ant-select-dropdown' , { state : 'visible' } ) ;
488502 await page . waitForSelector (
489503 '.ant-select-dropdown [data-testid="loader"]' ,
490504 {
491505 state : 'detached' ,
492506 }
493507 ) ;
508+
494509 await page
495- . locator ( '.ant-select-dropdown' )
496- . getByTestId ( `tag-${ glossary . responseData . fullyQualifiedName } ` )
497- . getByTestId ( 'expand-icon' )
498- . click ( ) ;
510+ . locator ( '[data-testid="tag-selector"] input' )
511+ . fill ( glossaryTerm . data . name ) ;
512+
499513 await page
500514 . getByTestId ( `tag-${ glossaryTerm . responseData . fullyQualifiedName } ` )
501515 . click ( ) ;
502-
516+ const saveResponse = page . waitForResponse ( 'api/v1/columns/name/*' ) ;
503517 await page . getByTestId ( 'saveAssociatedTag' ) . click ( ) ;
504518
505- await page . waitForResponse ( 'api/v1/columns/name/*' ) ;
519+ await saveResponse ;
506520
507521 await expect (
508522 page . getByTestId ( `tag-${ glossaryTerm . responseData . fullyQualifiedName } ` )
509- ) . toContainText ( glossaryTerm . responseData . displayName ) ;
523+ ) . toBeVisible ( ) ;
510524
511- const getRequest = page . waitForResponse (
525+ const searchRequest = page . waitForResponse (
512526 'api/v1/tables/name/sample_data.ecommerce_db.shopify.dim_customer/columns/*'
513527 ) ;
514528
@@ -517,25 +531,68 @@ test.describe(
517531 . getByTestId ( 'searchbar' )
518532 . fill ( 'customer_id' ) ;
519533
520- await getRequest ;
534+ await searchRequest ;
535+ await page . waitForSelector (
536+ '[data-testid="entity-table"] [data-testid="loader"]' ,
537+ {
538+ state : 'detached' ,
539+ }
540+ ) ;
521541
522542 await expect (
523543 page
524544 . getByTestId ( 'glossary-tags-0' )
525545 . getByTestId ( `tag-${ glossaryTerm . responseData . fullyQualifiedName } ` )
526- ) . toContainText ( glossaryTerm . responseData . displayName ) ;
546+ ) . toBeVisible ( ) ;
547+
548+ await page . click ( `${ rowSelector } [data-testid="edit-button"]` ) ;
549+
550+ await page . waitForSelector ( '.ant-select-dropdown' , { state : 'visible' } ) ;
551+ await page . waitForSelector (
552+ '.ant-select-dropdown [data-testid="loader"]' ,
553+ {
554+ state : 'detached' ,
555+ }
556+ ) ;
557+ await page
558+ . locator ( '[data-testid="tag-selector"] input' )
559+ . fill ( glossaryTerm . data . name ) ;
560+
561+ await page
562+ . locator ( '.ant-select-dropdown' )
563+ . getByTestId ( `tag-${ glossaryTerm . responseData . fullyQualifiedName } ` )
564+ . click ( ) ;
565+
566+ await page . getByTestId ( 'saveAssociatedTag' ) . click ( ) ;
567+
568+ await page . waitForResponse ( 'api/v1/columns/name/*' ) ;
569+
570+ await expect (
571+ page . getByTestId ( `tag-${ glossaryTerm . responseData . fullyQualifiedName } ` )
572+ ) . not . toBeVisible ( ) ;
527573 } ) ;
528574
529575 test ( 'Tags term should be consistent for search' , async ( {
530576 dataConsumerPage : page ,
531577 } ) => {
532578 await page . goto ( '/table/sample_data.ecommerce_db.shopify.dim_customer' ) ;
533579
534- await page
535- . locator (
536- '[data-row-key="sample_data.ecommerce_db.shopify.dim_customer.customer_id"] [data-testid="classification-tags-0"] [data-testid="entity-tags"] svg'
537- )
538- . click ( ) ;
580+ // Wait for page to be fully loaded
581+ await page . waitForLoadState ( 'networkidle' ) ;
582+ await page . waitForSelector ( '[data-testid="loader"]' , {
583+ state : 'detached' ,
584+ } ) ;
585+
586+ // Check if add button exists and is visible
587+ const rowSelector =
588+ '[data-row-key="sample_data.ecommerce_db.shopify.dim_customer.shop_id"] [data-testid="classification-tags-1"]' ;
589+
590+ const addButton = await page . $ ( `${ rowSelector } [data-testid="add-tag"]` ) ;
591+ if ( addButton && ( await addButton . isVisible ( ) ) ) {
592+ await addButton . click ( ) ;
593+ } else {
594+ await page . click ( `${ rowSelector } [data-testid="edit-button"]` ) ;
595+ }
539596
540597 await page . waitForSelector ( '.ant-select-dropdown' , { state : 'visible' } ) ;
541598 await page . waitForSelector (
@@ -558,22 +615,58 @@ test.describe(
558615
559616 await expect (
560617 page . getByTestId ( `tag-${ testTag . responseData . fullyQualifiedName } ` )
561- ) . toContainText ( testTag . responseData . displayName ) ;
562-
618+ ) . toBeVisible ( ) ;
619+
620+ page . reload ( ) ;
621+ // Wait for page to be fully loaded
622+ await page . waitForLoadState ( 'networkidle' ) ;
623+ await page . waitForSelector ( '[data-testid="loader"]' , {
624+ state : 'detached' ,
625+ } ) ;
626+ const getRequest = page . waitForResponse (
627+ 'api/v1/tables/name/sample_data.ecommerce_db.shopify.dim_customer/columns/*'
628+ ) ;
563629 await page
564630 . getByTestId ( 'search-bar-container' )
565631 . getByTestId ( 'searchbar' )
566- . fill ( 'customer_id ' ) ;
632+ . fill ( 'shop_id ' ) ;
567633
568- await page . waitForResponse (
569- 'api/v1/tables/name/sample_data.ecommerce_db.shopify.dim_customer/columns/*'
634+ await getRequest ;
635+
636+ await expect (
637+ page
638+ . getByTestId ( 'classification-tags-0' )
639+ . getByTestId ( `tag-${ testTag . responseData . fullyQualifiedName } ` )
640+ ) . toBeVisible ( ) ;
641+
642+ await page . click (
643+ `[data-row-key="sample_data.ecommerce_db.shopify.dim_customer.shop_id"] [data-testid="classification-tags-0"] [data-testid="edit-button"]`
570644 ) ;
571645
646+ await page . waitForSelector ( '.ant-select-dropdown' , { state : 'visible' } ) ;
647+ await page . waitForSelector (
648+ '.ant-select-dropdown [data-testid="loader"]' ,
649+ {
650+ state : 'detached' ,
651+ }
652+ ) ;
653+ await page
654+ . locator ( '[data-testid="tag-selector"] input' )
655+ . fill ( testTag . data . name ) ;
656+ await page
657+ . locator ( '.ant-select-dropdown' )
658+ . getByTestId ( `tag-${ testTag . responseData . fullyQualifiedName } ` )
659+ . click ( ) ;
660+
661+ await page . getByTestId ( 'saveAssociatedTag' ) . click ( ) ;
662+
663+ await page . waitForResponse ( 'api/v1/columns/name/*' ) ;
664+
572665 await expect (
573666 page
574667 . getByTestId ( 'classification-tags-0' )
575668 . getByTestId ( `tag-${ testTag . responseData . fullyQualifiedName } ` )
576- ) . toContainText ( testTag . responseData . displayName ) ;
669+ ) . not . toBeVisible ( ) ;
577670 } ) ;
578671 }
579672) ;
0 commit comments