Skip to content

Commit b5c3d0f

Browse files
included one more test case
1 parent ea0a96d commit b5c3d0f

1 file changed

Lines changed: 186 additions & 0 deletions

File tree

tests/e2e-test/tests/test_st_docgen_tc.py

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
32233409
def test_bug_10345_no_new_sections_during_removal(request, login_logout):

0 commit comments

Comments
 (0)