← Back to All Reports
TESTS FAILED (0%)
Job Name
chat_based_editor_prod
Pipeline ID
Job ID
#4414928
Branch
master
Commit
N/A
Executed At
2026-09-22T00:27:40.668045
0
Passed
13
Failed
0
Skipped

Test Results (13 tests)

test_cbe01_cbe_service_chains_sanity[chromium-caption]
failed
⏱️ Duration: 40.34s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a13820> login_page = <pages.login_page.LoginPage object at 0x7f5ad08c31c0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ad08c04c0> base_url = 'https://promo.com', prompt_key = 'caption' @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 0x7f5ad08c04c0> timeout = 30000 def verify_cbe_save_enabled(self, timeout: int = 30_000): """ Verifie
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-linebreak]
failed
⏱️ Duration: 38.19s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a13730> login_page = <pages.login_page.LoginPage object at 0x7f5aca5d6110> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5aca5d6cb0> base_url = 'https://promo.com', prompt_key = 'linebreak' @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 0x7f5aca5d6cb0> timeout = 30000 def verify_cbe_save_enabled(self, timeout: int = 30_000): """ Verif
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-remove_scene]
failed
⏱️ Duration: 38.52s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a12f50> login_page = <pages.login_page.LoginPage object at 0x7f5ac9387d30> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac9384d90> base_url = 'https://promo.com', prompt_key = 'remove_scene' @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 0x7f5ac9384d90> timeout = 30000 def verify_cbe_save_enabled(self, timeout: int = 30_000): """ Ve
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-text_color]
failed
⏱️ Duration: 40.31s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a12e90> login_page = <pages.login_page.LoginPage object at 0x7f5ac93e6cb0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac93e4b80> base_url = 'https://promo.com', prompt_key = 'text_color' @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 0x7f5ac93e4b80> timeout = 30000 def verify_cbe_save_enabled(self, timeout: int = 30_000): """ Veri
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-text_font]
failed
⏱️ Duration: 73.92s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a12dd0> login_page = <pages.login_page.LoginPage object at 0x7f5ac91e4f10> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac91e4370> base_url = 'https://promo.com', prompt_key = 'text_font' @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 0x7f5ac91e4370> timeout = 60000 def verify_cbe_save_enabled(self, timeout: int = 30_000): """ Verif
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-text_position]
failed
⏱️ Duration: 69.58s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a12c50> login_page = <pages.login_page.LoginPage object at 0x7f5ac934b910> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac9349b40> 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 0x7f5ac9349b40> timeout = 60000 def verify_cbe_save_enabled(self, timeout: int = 30_000): """ V
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-translation]
failed
⏱️ Duration: 39.04s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a12a10> login_page = <pages.login_page.LoginPage object at 0x7f5aca6b0760> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5aca6b1b70> 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]) # 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 0x7f5aca6b1b70> timeout = 30000 def verify_cbe_save_enabled(self, timeout: int = 30_000): """ Ver
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-add_scene]
failed
⏱️ Duration: 39.12s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a12b30> login_page = <pages.login_page.LoginPage object at 0x7f5ad09c9210> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ad09c8070> base_url = 'https://promo.com', prompt_key = 'add_scene' @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 0x7f5ad09c8070> timeout = 30000 def verify_cbe_save_enabled(self, timeout: int = 30_000): """ Verif
📸 Failure Screenshot:
Test failure screenshot
test_cbe03_replace_a_clip[chromium-stock_video]
failed
⏱️ Duration: 15.59s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a11540> login_page = <pages.login_page.LoginPage object at 0x7f5ac91c8520> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac91ca1d0> 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 0x7f5ad0a12b60> cb = <function Channel.send.<locals>.<lambda> at 0x7f5ac
📸 Failure Screenshot:
Test failure screenshot
test_cbe03_replace_a_clip[chromium-stock_photo]
failed
⏱️ Duration: 16.27s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a113c0> login_page = <pages.login_page.LoginPage object at 0x7f5ac90e8a00> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac90e8bb0> 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 0x7f5ad0a12b60> cb = <function Channel.send.<locals>.<lambda> at 0x7f5ac
📸 Failure Screenshot:
Test failure screenshot
test_cbe03_replace_a_clip[chromium-uploaded_video]
failed
⏱️ Duration: 15.42s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a111b0> login_page = <pages.login_page.LoginPage object at 0x7f5ac8e97ca0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac8e94eb0> 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 0x7f5ad0a12b60> cb = <function Channel.send.<locals>.<lambda> at 0x7f
📸 Failure Screenshot:
Test failure screenshot
test_cbe03_replace_a_clip[chromium-uploaded_photo]
failed
⏱️ Duration: 16.21s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a110f0> login_page = <pages.login_page.LoginPage object at 0x7f5ac8fed570> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac8fec7c0> 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 0x7f5ad0a12b60> cb = <function Channel.send.<locals>.<lambda> at 0x7f
📸 Failure Screenshot:
Test failure screenshot
test_cbe05_voice_changes_not_possible_for_non_narrated_videos[chromium]
failed
⏱️ Duration: 66.87s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f5ad0a10940> login_page = <pages.login_page.LoginPage object at 0x7f5ac9212770> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f5ac9211c60> base_url = 'https://promo.com' def test_cbe05_voice_changes_not_possible_for_non_narrated_videos( self, login_page, autopilot_page, base_url ): """ CBE05 Voice changes not possible for non-narrated videos Login as AI user → go to planner → open 1st AI post → open CBE → send 'change_voice' prompt → verify save button is disabled → verify voice apply button is not shown in CBE panel. """ 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["change_voice"]) tests/test_chat_based_editor.py:176: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pages.autopilot_page.AutopilotPage object at 0x7f5ac9211c60> prompt = 'Please add a voice to this video' 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 already contain icons/messages from earlier turns. Waiting on a fixed index (old: `AICHAT_CHAT_ICON_PINK.nth(1)`) or a bare visibility check would then be satisfied by that stale history and return immediately, without ever waiting for the reply to *this* prompt. Instead, capture counts before s
📸 Failure Screenshot:
Test failure screenshot