@@ -3218,6 +3218,192 @@ def test_bug_10178_delete_all_chat_history_error(request, login_logout):
32183218 finally :
32193219 logger .removeHandler (handler )
32203220
3221+ @pytest .mark .smoke
3222+ def test_bug_10177_edit_delete_icons_disabled_during_response (login_logout , request ):
3223+ """
3224+ Test Case 10330: Bug-10177-BYOc-DocGen-Delete and Edit icons should be disabled in template history thread while generating response
3225+
3226+ Preconditions:
3227+ 1. User should have BYOc DocGen web url
3228+ 2. User should have template history saved
3229+
3230+ Steps:
3231+ 1. Login to BYOc DocGen web url
3232+ Expected: Login is successful and Document Generation page is displayed
3233+ 2. Click on 'Generate' tab
3234+ Expected: Chat conversation page is displayed
3235+ 3. Click on 'Show template history' button
3236+ Expected: Template history window is displayed
3237+ 4. Select any Session history thread
3238+ Expected: Saved chat conversation is loaded on the page
3239+ 5. Enter a prompt and while generating response, verify the Delete and Edit icons are disabled on template history for the selected thread
3240+ Expected: Delete and Edit icons should be disabled on template history for the selected history thread
3241+ """
3242+
3243+ request .node ._nodeid = "TC 10330: Bug-10177-BYOc-DocGen-Delete and Edit icons should be disabled while generating response"
3244+
3245+ page = login_logout
3246+ home_page = HomePage (page )
3247+ generate_page = GeneratePage (page )
3248+
3249+ log_capture = io .StringIO ()
3250+ handler = logging .StreamHandler (log_capture )
3251+ logger .addHandler (handler )
3252+
3253+ try :
3254+ # Step 1: Login to BYOc DocGen web url
3255+ logger .info ("Step 1: Login to BYOc DocGen web url" )
3256+ start = time .time ()
3257+ home_page .open_home_page ()
3258+ home_page .validate_home_page ()
3259+ logger .info ("✅ Login is successful and Document Generation page is displayed" )
3260+ duration = time .time () - start
3261+ logger .info ("Execution Time for Step 1: %.2fs" , duration )
3262+
3263+ # Step 2: Click on 'Generate' tab
3264+ logger .info ("Step 2: Click on 'Generate' tab" )
3265+ start = time .time ()
3266+ home_page .click_generate_button ()
3267+ generate_page .validate_generate_page ()
3268+ logger .info ("✅ Chat conversation page is displayed" )
3269+ duration = time .time () - start
3270+ logger .info ("Execution Time for Step 2: %.2fs" , duration )
3271+
3272+ # Step 3: Click on 'Show template history' button
3273+ logger .info ("Step 3: Click on 'Show template history' button" )
3274+ start = time .time ()
3275+ generate_page .show_chat_history ()
3276+ page .wait_for_timeout (2000 )
3277+ logger .info ("✅ Template history window is displayed" )
3278+ duration = time .time () - start
3279+ logger .info ("Execution Time for Step 3: %.2fs" , duration )
3280+
3281+ # Step 4: Select any Session history thread
3282+ logger .info ("Step 4: Select any Session history thread" )
3283+ start = time .time ()
3284+
3285+ # Check if any threads exist
3286+ threads = page .locator ('div[data-list-index]' )
3287+ thread_count = threads .count ()
3288+
3289+ if thread_count == 0 :
3290+ logger .warning ("No history threads found. Creating a new chat to test with..." )
3291+ # Close history panel
3292+ generate_page .close_chat_history ()
3293+ # Create a chat first
3294+ generate_page .enter_a_question (generate_question1 )
3295+ generate_page .click_send_button ()
3296+ generate_page .validate_response_status (question_api = generate_question1 )
3297+ # Save it
3298+ generate_page .click_new_chat_button ()
3299+ page .wait_for_timeout (2000 )
3300+ # Show history again
3301+ generate_page .show_chat_history ()
3302+ page .wait_for_timeout (2000 )
3303+
3304+ # Select the first thread
3305+ generate_page .select_history_thread (thread_index = 0 )
3306+ logger .info ("✅ Saved chat conversation is loaded on the page" )
3307+ duration = time .time () - start
3308+ logger .info ("Execution Time for Step 4: %.2fs" , duration )
3309+
3310+ # Step 5: Enter a prompt and verify Delete/Edit icons are disabled while generating response
3311+ logger .info ("Step 5: Enter a prompt and verify Delete/Edit icons are disabled during response generation" )
3312+ start = time .time ()
3313+
3314+ # Enter a question that will take some time to generate response
3315+ test_prompt = "Generate a detailed promissory note with all sections and comprehensive explanations"
3316+ logger .info ("Entering prompt: '%s'" , test_prompt )
3317+ generate_page .enter_a_question (test_prompt )
3318+ generate_page .click_send_button ()
3319+
3320+ # Immediately after clicking send, check if icons are disabled (while response is generating)
3321+ # Wait a brief moment for the request to start
3322+ page .wait_for_timeout (500 )
3323+
3324+ logger .info ("Checking icon states while response is being generated..." )
3325+
3326+ # Locate the selected thread (first thread - index 0)
3327+ threads = page .locator ('div[data-list-index]' )
3328+ selected_thread = threads .nth (0 )
3329+
3330+ # Check Delete icon state
3331+ delete_icon = selected_thread .locator ('button[title="Delete"]' )
3332+ is_delete_visible = delete_icon .is_visible ()
3333+ is_delete_enabled = delete_icon .is_enabled () if is_delete_visible else False
3334+
3335+ logger .info ("Delete icon - Visible: %s, Enabled: %s" , is_delete_visible , is_delete_enabled )
3336+
3337+ # Check Edit icon state
3338+ edit_icon = selected_thread .locator ('button[title="Edit"]' )
3339+ is_edit_visible = edit_icon .is_visible ()
3340+ is_edit_enabled = edit_icon .is_enabled () if is_edit_visible else False
3341+
3342+ logger .info ("Edit icon - Visible: %s, Enabled: %s" , is_edit_visible , is_edit_enabled )
3343+
3344+ # Verify icons are disabled during response generation
3345+ with check :
3346+ assert not is_delete_enabled , \
3347+ f"BUG: Delete icon should be disabled during response generation, but it is enabled"
3348+
3349+ with check :
3350+ assert not is_edit_enabled , \
3351+ f"BUG: Edit icon should be disabled during response generation, but it is enabled"
3352+
3353+ if not is_delete_enabled and not is_edit_enabled :
3354+ logger .info ("✅ Delete and Edit icons are properly disabled during response generation" )
3355+ else :
3356+ logger .error ("❌ BUG: Icons are enabled when they should be disabled" )
3357+ if is_delete_enabled :
3358+ logger .error (" - Delete icon is enabled (should be disabled)" )
3359+ if is_edit_enabled :
3360+ logger .error (" - Edit icon is enabled (should be disabled)" )
3361+
3362+ # Wait for response to complete
3363+ generate_page .validate_response_status (question_api = test_prompt )
3364+ logger .info ("Response generation completed" )
3365+
3366+ # Verify icons are enabled again after response completes
3367+ page .wait_for_timeout (1000 )
3368+
3369+ is_delete_enabled_after = delete_icon .is_enabled () if delete_icon .is_visible () else False
3370+ is_edit_enabled_after = edit_icon .is_enabled () if edit_icon .is_visible () else False
3371+
3372+ logger .info ("After response completion - Delete enabled: %s, Edit enabled: %s" ,
3373+ is_delete_enabled_after , is_edit_enabled_after )
3374+
3375+ with check :
3376+ assert is_delete_enabled_after , \
3377+ "Delete icon should be enabled after response generation completes"
3378+
3379+ with check :
3380+ assert is_edit_enabled_after , \
3381+ "Edit icon should be enabled after response generation completes"
3382+
3383+ if is_delete_enabled_after and is_edit_enabled_after :
3384+ logger .info ("✅ Delete and Edit icons are properly enabled after response generation completes" )
3385+
3386+ duration = time .time () - start
3387+ logger .info ("Execution Time for Step 5: %.2fs" , duration )
3388+
3389+ logger .info ("\n " + "=" * 80 )
3390+ logger .info ("✅ TC 10330 Test Summary - Edit/Delete Icons Disabled During Response" )
3391+ logger .info ("=" * 80 )
3392+ logger .info ("Step 1: Login successful and Document Generation page displayed ✓" )
3393+ logger .info ("Step 2: Navigated to Generate tab ✓" )
3394+ logger .info ("Step 3: Template history displayed ✓" )
3395+ logger .info ("Step 4: Session history thread selected ✓" )
3396+ logger .info ("Step 5: Icon states verified during response generation ✓" )
3397+ logger .info (" - Delete icon disabled during generation: %s ✓" , "Yes" if not is_delete_enabled else "No (BUG)" )
3398+ logger .info (" - Edit icon disabled during generation: %s ✓" , "Yes" if not is_edit_enabled else "No (BUG)" )
3399+ logger .info (" - Delete icon enabled after completion: %s ✓" , "Yes" if is_delete_enabled_after else "No" )
3400+ logger .info (" - Edit icon enabled after completion: %s ✓" , "Yes" if is_edit_enabled_after else "No" )
3401+ logger .info ("=" * 80 )
3402+
3403+ logger .info ("Test TC 10330: Bug-10177 - Edit/Delete icons disabled during response generation completed successfully" )
3404+
3405+ finally :
3406+ logger .removeHandler (handler )
32213407
32223408@pytest .mark .smoke
32233409def test_bug_10345_no_new_sections_during_removal (request , login_logout ):
0 commit comments