Test Results (22 tests)
⏱️ Duration: 69.95s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f999cc9ec50>
login_page = <pages.login_page.LoginPage object at 0x7f9997fd1060>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f9997fd3640>
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 0x7f9997fd3640>
timeout = 60000
def verify_cbe_save_enabled(self, timeout: int = 30_000):
"""
V
📸 Failure Screenshot:
⏱️ Duration: 17.61s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f999cc9da20>
login_page = <pages.login_page.LoginPage object at 0x7f9996779990>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f9996778970>
base_url = 'https://promo.com', ratio = 'wide'
@pytest.mark.parametrize("ratio", ["wide", "vertical"])
def test_cbe02_cbe_should_work_in_all_ratios(
self, login_page, autopilot_page, base_url, ratio
):
"""
CBE02 CBE should work in all ratios
Login as AI user → open Planner → open 2nd post → change ratio
→ open CBE → send caption prompt → 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(min_count=2)
autopilot_page.open_ai_post(2)
autopilot_page.change_video_ratio(ratio)
> autopilot_page.open_cbe()
tests/test_chat_based_editor.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/autopilot_page.py:1437: in open_cbe
btn.wait_for(state="visible", timeout=self.T_ACTION)
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:20539: in wait_for
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:748: in wait_for
await self._frame.wait_for_selector(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:394: in wait_for_selector
await self._channel.send(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send
return await self._connection.wrap_api_call(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <playwright._impl._connection.Connection object at 0x7f999cc9eb60>
cb = <function Channel.send.<locals>.<lambda> at 0x7f999567bac0>
is_internal = False, title = None
async def wrap_api_call(
self, cb: Callable[[
📸 Failure Screenshot:
⏱️ Duration: 15.88s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f999cc9d540>
login_page = <pages.login_page.LoginPage object at 0x7f9997d994b0>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f9997d9b5e0>
base_url = 'https://promo.com', prompt_key = 'stock_video'
@pytest.mark.skip_smoke
@pytest.mark.parametrize("prompt_key", [
"stock_video",
"stock_photo",
"uploaded_video",
"uploaded_photo",
])
def test_cbe03_replace_a_clip(
self, login_page, autopilot_page, base_url, prompt_key
):
"""
CBE03 Replace a clip
Login as AI user → open Planner → open 3rd post → open CBE
→ send clip-replacement prompt → verify media library → select first clip
→ 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(min_count=3)
autopilot_page.open_ai_post(3)
> autopilot_page.open_cbe()
tests/test_chat_based_editor.py:132:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/autopilot_page.py:1437: in open_cbe
btn.wait_for(state="visible", timeout=self.T_ACTION)
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:20539: in wait_for
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:748: in wait_for
await self._frame.wait_for_selector(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:394: in wait_for_selector
await self._channel.send(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send
return await self._connection.wrap_api_call(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <playwright._impl._connection.Connection object at 0x7f999cc9eb60>
cb = <function Channel.send.<locals>.<lambda> at 0x7f999
📸 Failure Screenshot:
⏱️ Duration: 15.53s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f999cc9d3c0>
login_page = <pages.login_page.LoginPage object at 0x7f9995493d30>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f9995493070>
base_url = 'https://promo.com', prompt_key = 'stock_photo'
@pytest.mark.skip_smoke
@pytest.mark.parametrize("prompt_key", [
"stock_video",
"stock_photo",
"uploaded_video",
"uploaded_photo",
])
def test_cbe03_replace_a_clip(
self, login_page, autopilot_page, base_url, prompt_key
):
"""
CBE03 Replace a clip
Login as AI user → open Planner → open 3rd post → open CBE
→ send clip-replacement prompt → verify media library → select first clip
→ 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(min_count=3)
autopilot_page.open_ai_post(3)
> autopilot_page.open_cbe()
tests/test_chat_based_editor.py:132:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/autopilot_page.py:1437: in open_cbe
btn.wait_for(state="visible", timeout=self.T_ACTION)
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:20539: in wait_for
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:748: in wait_for
await self._frame.wait_for_selector(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:394: in wait_for_selector
await self._channel.send(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send
return await self._connection.wrap_api_call(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <playwright._impl._connection.Connection object at 0x7f999cc9eb60>
cb = <function Channel.send.<locals>.<lambda> at 0x7f999
📸 Failure Screenshot:
⏱️ Duration: 15.99s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f999cc9d1b0>
login_page = <pages.login_page.LoginPage object at 0x7f99968201c0>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f9997d1ece0>
base_url = 'https://promo.com', prompt_key = 'uploaded_video'
@pytest.mark.skip_smoke
@pytest.mark.parametrize("prompt_key", [
"stock_video",
"stock_photo",
"uploaded_video",
"uploaded_photo",
])
def test_cbe03_replace_a_clip(
self, login_page, autopilot_page, base_url, prompt_key
):
"""
CBE03 Replace a clip
Login as AI user → open Planner → open 3rd post → open CBE
→ send clip-replacement prompt → verify media library → select first clip
→ 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(min_count=3)
autopilot_page.open_ai_post(3)
> autopilot_page.open_cbe()
tests/test_chat_based_editor.py:132:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/autopilot_page.py:1437: in open_cbe
btn.wait_for(state="visible", timeout=self.T_ACTION)
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:20539: in wait_for
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:748: in wait_for
await self._frame.wait_for_selector(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:394: in wait_for_selector
await self._channel.send(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send
return await self._connection.wrap_api_call(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <playwright._impl._connection.Connection object at 0x7f999cc9eb60>
cb = <function Channel.send.<locals>.<lambda> at 0x7f
📸 Failure Screenshot:
⏱️ Duration: 15.91s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f999cc9d0f0>
login_page = <pages.login_page.LoginPage object at 0x7f99950cfa60>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f99950ccbb0>
base_url = 'https://promo.com', prompt_key = 'uploaded_photo'
@pytest.mark.skip_smoke
@pytest.mark.parametrize("prompt_key", [
"stock_video",
"stock_photo",
"uploaded_video",
"uploaded_photo",
])
def test_cbe03_replace_a_clip(
self, login_page, autopilot_page, base_url, prompt_key
):
"""
CBE03 Replace a clip
Login as AI user → open Planner → open 3rd post → open CBE
→ send clip-replacement prompt → verify media library → select first clip
→ 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(min_count=3)
autopilot_page.open_ai_post(3)
> autopilot_page.open_cbe()
tests/test_chat_based_editor.py:132:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/autopilot_page.py:1437: in open_cbe
btn.wait_for(state="visible", timeout=self.T_ACTION)
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:20539: in wait_for
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:748: in wait_for
await self._frame.wait_for_selector(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:394: in wait_for_selector
await self._channel.send(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send
return await self._connection.wrap_api_call(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <playwright._impl._connection.Connection object at 0x7f999cc9eb60>
cb = <function Channel.send.<locals>.<lambda> at 0x7f
📸 Failure Screenshot: