⏱️ Duration: 69.21s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f2de6b3ec50>
login_page = <pages.login_page.LoginPage object at 0x7f2de6ad9ff0>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f2de5e16410>
base_url = 'https://promo.com', prompt_key = 'text_position'
@pytest.mark.skip_smoke
@pytest.mark.parametrize("prompt_key", [
"caption",
"linebreak",
"music",
"outro_values",
"remove_scene",
"text_color",
"text_font",
"logo",
"text_position",
"translation",
"add_scene",
"change_watermark",
])
def test_cbe01_cbe_service_chains_sanity(
self, login_page, autopilot_page, base_url, prompt_key
):
"""
CBE01 CBE service chains sanity
Login as AI user → open Planner → ensure AI posts exist → open 1st post
→ open CBE → send prompt → verify AI response → verify save enabled
→ verify discard popup → save video.
"""
login_page.login_directly(base_url, email_ai, get_password())
autopilot_page.go_to_planner(base_url)
autopilot_page.ensure_ai_posts_exist()
autopilot_page.open_ai_post(1)
autopilot_page.open_cbe()
autopilot_page.send_cbe_prompt_and_wait(CBE_PROMPTS[prompt_key])
# text_font / text_position are known to be slower on the backend to
# apply and enable Save (documented flaky report in migration_log.md);
# give them extra headroom instead of the default 30s.
save_timeout = 60_000 if prompt_key in ("text_font", "text_position") else 30_000
> autopilot_page.verify_cbe_save_enabled(timeout=save_timeout)
tests/test_chat_based_editor.py:85:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.autopilot_page.AutopilotPage object at 0x7f2de5e16410>
timeout = 60000
def verify_cbe_save_enabled(self, timeout: int = 30_000):
"""
V
📸 Failure Screenshot:
⏱️ Duration: 8.78s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f2de6b3e9e0>
login_page = <pages.login_page.LoginPage object at 0x7f2de43ffa90>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f2de446d300>
base_url = 'https://promo.com', prompt_key = 'translation'
@pytest.mark.skip_smoke
@pytest.mark.parametrize("prompt_key", [
"caption",
"linebreak",
"music",
"outro_values",
"remove_scene",
"text_color",
"text_font",
"logo",
"text_position",
"translation",
"add_scene",
"change_watermark",
])
def test_cbe01_cbe_service_chains_sanity(
self, login_page, autopilot_page, base_url, prompt_key
):
"""
CBE01 CBE service chains sanity
Login as AI user → open Planner → ensure AI posts exist → open 1st post
→ open CBE → send prompt → verify AI response → verify save enabled
→ verify discard popup → save video.
"""
login_page.login_directly(base_url, email_ai, get_password())
autopilot_page.go_to_planner(base_url)
autopilot_page.ensure_ai_posts_exist()
autopilot_page.open_ai_post(1)
autopilot_page.open_cbe()
> autopilot_page.send_cbe_prompt_and_wait(CBE_PROMPTS[prompt_key])
tests/test_chat_based_editor.py:80:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.autopilot_page.AutopilotPage object at 0x7f2de446d300>
prompt = 'Use a different language in each caption'
def send_cbe_prompt_and_wait(self, prompt: str):
"""
Types a prompt in the chat input, sends it, then waits for the AI response
and asserts no error message is shown.
The CBE chat history persists on the post across sessions, so on a post
that has already been through prior prompts (e.g. test_cbe01's chained
parametrized runs against the same post) the panel can alrea
📸 Failure Screenshot: