← Back to All Reports
TESTS FAILED (0%)
Job Name
chat_based_editor_test03
Pipeline ID
Job ID
#4447879
Branch
master
Commit
N/A
Executed At
2026-10-13T08:36:40.261494
0
Passed
22
Failed
0
Skipped

Test Results (22 tests)

test_cbe01_cbe_service_chains_sanity[chromium-caption]
failed
⏱️ Duration: 84.82s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847de40> login_page = <pages.login_page.LoginPage object at 0x7fa0784614e0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa0784620e0> base_url = 'https://test03.testingpromo.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 non-voice-over AI post that offers CBE → 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() tests/test_chat_based_editor.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/autopilot_page.py:452: in ensure_ai_posts_exist self.wait_for_posts_generated(timeout=360_000) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pages.autopilot_page.AutopilotPage object at 0x7fa0784620e0> timeout = 360000 def wait_for_posts_generated(self, timeout: int = 360_000): """ Waits for AI post generation to complete, then navigates to Planner. Handles three post-generation screens: - skip-tutorial: skip the educational video → planner - take-me-there: "Take me to planner" shortcut - "Quick Tips from PromoAI" carousel with a
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-linebreak]
failed
⏱️ Duration: 507.43s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847dd50> login_page = <pages.login_page.LoginPage object at 0x7fa075f46c50> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa075f477f0> base_url = 'https://test03.testingpromo.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 non-voice-over AI post that offers CBE → 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() tests/test_chat_based_editor.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/autopilot_page.py:452: in ensure_ai_posts_exist self.wait_for_posts_generated(timeout=360_000) pages/autopilot_page.py:540: in wait_for_posts_generated self.page.locator(self.PLANNER_AI_BADGE).first.wait_for( /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/_connect
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-music]
failed
⏱️ Duration: 30.58s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847d720> login_page = <pages.login_page.LoginPage object at 0x7fa074d90640> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074d93850> base_url = 'https://test03.testingpromo.com', prompt_key = 'music' @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 non-voice-over AI post that offers CBE → 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()) tests/test_chat_based_editor.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:116: in login_directly self.page.wait_for_function( /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:12761: in wait_for_function self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:1151: in wait_for_function return await self._main_frame.wait_for_function(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:940: in wait_for_function await self._channel.send("waitForFunction", self._timeout, params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ se
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-outro_values]
failed
⏱️ Duration: 30.64s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847d690> login_page = <pages.login_page.LoginPage object at 0x7fa0772a59f0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa0772a4a30> base_url = 'https://test03.testingpromo.com', prompt_key = 'outro_values' @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 non-voice-over AI post that offers CBE → 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()) tests/test_chat_based_editor.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:116: in login_directly self.page.wait_for_function( /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:12761: in wait_for_function self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:1151: in wait_for_function return await self._main_frame.wait_for_function(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:940: in wait_for_function await self._channel.send("waitForFunction", self._timeout, params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-remove_scene]
failed
⏱️ Duration: 30.51s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847d570> login_page = <pages.login_page.LoginPage object at 0x7fa07837f160> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa07837c1f0> base_url = 'https://test03.testingpromo.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 non-voice-over AI post that offers CBE → 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()) tests/test_chat_based_editor.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:116: in login_directly self.page.wait_for_function( /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:12761: in wait_for_function self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:1151: in wait_for_function return await self._main_frame.wait_for_function(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:940: in wait_for_function await self._channel.send("waitForFunction", self._timeout, params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-text_color]
failed
⏱️ Duration: 30.55s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847df90> login_page = <pages.login_page.LoginPage object at 0x7fa0784613c0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa078462140> base_url = 'https://test03.testingpromo.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 non-voice-over AI post that offers CBE → 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()) tests/test_chat_based_editor.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:116: in login_directly self.page.wait_for_function( /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:12761: in wait_for_function self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:1151: in wait_for_function return await self._main_frame.wait_for_function(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:940: in wait_for_function await self._channel.send("waitForFunction", self._timeout, params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-text_font]
failed
⏱️ Duration: 81.41s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847d300> login_page = <pages.login_page.LoginPage object at 0x7fa074a94ee0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074a96d10> base_url = 'https://test03.testingpromo.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 non-voice-over AI post that offers CBE → 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() tests/test_chat_based_editor.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/autopilot_page.py:452: in ensure_ai_posts_exist self.wait_for_posts_generated(timeout=360_000) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pages.autopilot_page.AutopilotPage object at 0x7fa074a96d10> timeout = 360000 def wait_for_posts_generated(self, timeout: int = 360_000): """ Waits for AI post generation to complete, then navigates to Planner. Handles three post-generation screens: - skip-tutorial: skip the educational video → planner - take-me-there: "Take me to planner" shortcut - "Quick Tips from PromoAI" carousel with
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-logo]
failed
⏱️ Duration: 30.03s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847c250> login_page = <pages.login_page.LoginPage object at 0x7fa074d4ae00> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074d49ae0> base_url = 'https://test03.testingpromo.com', prompt_key = 'logo' @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 non-voice-over AI post that offers CBE → 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()) tests/test_chat_based_editor.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:107: in login_directly self.go_to_login_page(base_url) pages/login_page.py:43: in go_to_login_page self.page.goto(f"{base_url}/login", wait_until="domcontentloaded") /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:9875: in goto self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:560: in goto return await self._main_frame.goto(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:156: in goto 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( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-text_position]
failed
⏱️ Duration: 83.44s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847c340> login_page = <pages.login_page.LoginPage object at 0x7fa074bb8b50> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074bb86d0> base_url = 'https://test03.testingpromo.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 non-voice-over AI post that offers CBE → 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() tests/test_chat_based_editor.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/autopilot_page.py:452: in ensure_ai_posts_exist self.wait_for_posts_generated(timeout=360_000) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pages.autopilot_page.AutopilotPage object at 0x7fa074bb86d0> timeout = 360000 def wait_for_posts_generated(self, timeout: int = 360_000): """ Waits for AI post generation to complete, then navigates to Planner. Handles three post-generation screens: - skip-tutorial: skip the educational video → planner - take-me-there: "Take me to planner" shortcut - "Quick Tips from PromoAI" carousel w
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-translation]
failed
⏱️ Duration: 500.71s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847cfa0> login_page = <pages.login_page.LoginPage object at 0x7fa075f9b400> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa075f9b250> base_url = 'https://test03.testingpromo.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 non-voice-over AI post that offers CBE → 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() tests/test_chat_based_editor.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/autopilot_page.py:452: in ensure_ai_posts_exist self.wait_for_posts_generated(timeout=360_000) pages/autopilot_page.py:540: in wait_for_posts_generated self.page.locator(self.PLANNER_AI_BADGE).first.wait_for( /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/_conne
📸 Failure Screenshot:
Test failure screenshot
test_cbe01_cbe_service_chains_sanity[chromium-add_scene]
failed
⏱️ Duration: 30.01s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847ce80> login_page = <pages.login_page.LoginPage object at 0x7fa0772a5720> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa0772a7eb0> base_url = 'https://test03.testingpromo.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 non-voice-over AI post that offers CBE → 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()) tests/test_chat_based_editor.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:107: in login_directly self.go_to_login_page(base_url) pages/login_page.py:43: in go_to_login_page self.page.goto(f"{base_url}/login", wait_until="domcontentloaded") /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:9875: in goto self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:560: in goto return await self._main_frame.goto(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:156: in goto 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( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test_cbe01_cbe_service_chains_sanity[chromium-change_watermark]
failed
⏱️ Duration: 30.03s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847cee0> login_page = <pages.login_page.LoginPage object at 0x7fa07870d480> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074d93d90> base_url = 'https://test03.testingpromo.com', prompt_key = 'change_watermark' @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 non-voice-over AI post that offers CBE → 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()) tests/test_chat_based_editor.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:107: in login_directly self.go_to_login_page(base_url) pages/login_page.py:43: in go_to_login_page self.page.goto(f"{base_url}/login", wait_until="domcontentloaded") /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:9875: in goto self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:560: in goto return await self._main_frame.goto(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:156: in goto 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( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test_cbe02_cbe_should_work_in_all_ratios[chromium-wide]
failed
⏱️ Duration: 20.16s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847cb20> login_page = <pages.login_page.LoginPage object at 0x7fa07837fbb0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa07837f490> base_url = 'https://test03.testingpromo.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 the first AI post from #2 onward that isn't a voice-over post → change ratio → open CBE → send caption prompt → verify discard popup → save video. """ > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:100: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:648: in _fill await self._channel.send("fill", self._timeout, locals_to_params(locals())) /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 0x7fa078462dd0> cb = <function Channel.send.<locals>.<lambda> at 0x7fa0761a0ee0
📸 Failure Screenshot:
Test failure screenshot
test_cbe02_cbe_should_work_in_all_ratios[chromium-vertical]
failed
⏱️ Duration: 20.16s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847ca90> login_page = <pages.login_page.LoginPage object at 0x7fa074a64070> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074a65600> base_url = 'https://test03.testingpromo.com', ratio = 'vertical' @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 the first AI post from #2 onward that isn't a voice-over post → change ratio → open CBE → send caption prompt → verify discard popup → save video. """ > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:100: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:648: in _fill await self._channel.send("fill", self._timeout, locals_to_params(locals())) /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 0x7fa078462dd0> cb = <function Channel.send.<locals>.<lambda> at 0x7fa074e9
📸 Failure Screenshot:
Test failure screenshot
test_cbe03_replace_a_clip[chromium-stock_video]
failed
⏱️ Duration: 20.17s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847c670> login_page = <pages.login_page.LoginPage object at 0x7fa0772a6e00> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa0772a6740> base_url = 'https://test03.testingpromo.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 the first AI post from #3 onward that still offers CBE → open CBE → send clip-replacement prompt → verify media library → select first clip → verify discard popup → save video. Starts scanning at post #3 rather than assuming it's free: `email_ai` is a shared/persistent prod account, and once a post is Rated its chat/regenerate controls disappear from the UI permanently (verified via DOM inspection) — a hardcoded index would fail deterministically the moment that specific post gets rated by any run. """ > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:135: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals())
📸 Failure Screenshot:
Test failure screenshot
test_cbe03_replace_a_clip[chromium-stock_photo]
failed
⏱️ Duration: 20.21s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847c4c0> login_page = <pages.login_page.LoginPage object at 0x7fa074c18400> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074c18d60> base_url = 'https://test03.testingpromo.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 the first AI post from #3 onward that still offers CBE → open CBE → send clip-replacement prompt → verify media library → select first clip → verify discard popup → save video. Starts scanning at post #3 rather than assuming it's free: `email_ai` is a shared/persistent prod account, and once a post is Rated its chat/regenerate controls disappear from the UI permanently (verified via DOM inspection) — a hardcoded index would fail deterministically the moment that specific post gets rated by any run. """ > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:135: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals())
📸 Failure Screenshot:
Test failure screenshot
test_cbe03_replace_a_clip[chromium-uploaded_video]
failed
⏱️ Duration: 20.18s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847c130> login_page = <pages.login_page.LoginPage object at 0x7fa0784caa40> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa0784c8100> base_url = 'https://test03.testingpromo.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 the first AI post from #3 onward that still offers CBE → open CBE → send clip-replacement prompt → verify media library → select first clip → verify discard popup → save video. Starts scanning at post #3 rather than assuming it's free: `email_ai` is a shared/persistent prod account, and once a post is Rated its chat/regenerate controls disappear from the UI permanently (verified via DOM inspection) — a hardcoded index would fail deterministically the moment that specific post gets rated by any run. """ > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:135: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals
📸 Failure Screenshot:
Test failure screenshot
test_cbe03_replace_a_clip[chromium-uploaded_photo]
failed
⏱️ Duration: 20.23s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847c070> login_page = <pages.login_page.LoginPage object at 0x7fa075f9b6d0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa075f99db0> base_url = 'https://test03.testingpromo.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 the first AI post from #3 onward that still offers CBE → open CBE → send clip-replacement prompt → verify media library → select first clip → verify discard popup → save video. Starts scanning at post #3 rather than assuming it's free: `email_ai` is a shared/persistent prod account, and once a post is Rated its chat/regenerate controls disappear from the UI permanently (verified via DOM inspection) — a hardcoded index would fail deterministically the moment that specific post gets rated by any run. """ > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:135: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals
📸 Failure Screenshot:
Test failure screenshot
test_cbe04_upload_via_filestack_url[chromium-video]
failed
⏱️ Duration: 20.15s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847e170> login_page = <pages.login_page.LoginPage object at 0x7fa074ab8040> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074ab8820> base_url = 'https://test03.testingpromo.com', asset = 'video' @pytest.mark.parametrize("asset", ["video", "photo"]) def test_cbe04_upload_via_filestack_url( self, login_page, autopilot_page, base_url, asset ): """ CBE04 Upload via Filestack URL Login as AI user → open Planner → open 1st non-voice-over AI post with CBE → open CBE → send uploaded_video prompt → import asset via Filestack URL → verify progress bar + upload complete + tab redirect. """ url = filestack_upload_video_url if asset == "video" else filestack_upload_photo_url > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:160: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:648: in _fill await self._channel.send("fill", self._timeout, locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <playwright._impl
📸 Failure Screenshot:
Test failure screenshot
test_cbe04_upload_via_filestack_url[chromium-photo]
failed
⏱️ Duration: 20.15s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847caf0> login_page = <pages.login_page.LoginPage object at 0x7fa074eb89d0> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074ebbc40> base_url = 'https://test03.testingpromo.com', asset = 'photo' @pytest.mark.parametrize("asset", ["video", "photo"]) def test_cbe04_upload_via_filestack_url( self, login_page, autopilot_page, base_url, asset ): """ CBE04 Upload via Filestack URL Login as AI user → open Planner → open 1st non-voice-over AI post with CBE → open CBE → send uploaded_video prompt → import asset via Filestack URL → verify progress bar + upload complete + tab redirect. """ url = filestack_upload_video_url if asset == "video" else filestack_upload_photo_url > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:160: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:648: in _fill await self._channel.send("fill", self._timeout, locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <playwright._impl
📸 Failure Screenshot:
Test failure screenshot
test_cbe05_voice_changes_not_possible_for_non_narrated_videos[chromium]
failed
⏱️ Duration: 20.21s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847c400> login_page = <pages.login_page.LoginPage object at 0x7fa074b04100> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074b06c20> base_url = 'https://test03.testingpromo.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 non-voice-over AI post with CBE → 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()) tests/test_chat_based_editor.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:648: in _fill await self._channel.send("fill", self._timeout, locals_to_params(locals())) /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 0x7fa078462dd0> cb = <function Channel.send.<locals>.<lambda> at 0x7fa077942290> is_internal =
📸 Failure Screenshot:
Test failure screenshot
test_cbe06_upload_via_filestack_facebook_page[chromium]
failed
⏱️ Duration: 20.17s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fa07847e440> login_page = <pages.login_page.LoginPage object at 0x7fa074d41150> autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fa074d41210> base_url = 'https://test03.testingpromo.com' @pytest.mark.skip_smoke def test_cbe06_upload_via_filestack_facebook_page( self, login_page, autopilot_page, base_url ): """ CBE06 Upload via Filestack Facebook Page @skip_smoke Login as AI user → go to planner → open 1st non-voice-over AI post with CBE → open CBE → send 'uploaded_video' prompt → open Filestack FB Pages source → authenticate with FB test account → select first page/album/asset → upload and verify progress bar. """ > login_page.login_directly(base_url, email_ai, get_password()) tests/test_chat_based_editor.py:203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/login_page.py:109: in login_directly self.enter_email(email) pages/login_page.py:73: in enter_email self.page.locator(self.EMAIL_INPUT).fill(email) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:18242: in fill self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:219: in fill return await self._frame.fill(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:636: in fill await self._fill(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:648: in _fill await self._channel.send("fill", self._timeout, locals_to_params(locals())) /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 0x7fa078462dd0> cb = <functi
📸 Failure Screenshot:
Test failure screenshot