Test Results (22 tests)
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
⏱️ 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(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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:
⏱️ 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: