Test Results (23 tests)
⏱️ Duration: 75.32s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fcc834ccdf0>
login_page = <pages.login_page.LoginPage object at 0x7fcc82912e90>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fcc829138e0>
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:102:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.autopilot_page.AutopilotPage object at 0x7fcc829138e0>
timeout = 60000
def verify_cbe_save_enabled(self, timeout: int = 30_000):
"""
Veri
📸 Failure Screenshot:
⏱️ Duration: 67.37s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fcc834ccf10>
login_page = <pages.login_page.LoginPage object at 0x7fcc80d7d750>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7fcc80d7e6e0>
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])
tests/test_chat_based_editor.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.autopilot_page.AutopilotPage object at 0x7fcc80d7e6e0>
prompt = 'I want the first caption to be in a opposite corner'
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 pa
📸 Failure Screenshot:
⏱️ Duration: 458.51s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7fcc834d3d60>
page = <Page url='https://promo.com/planner/promoai?term=https%3A%2F%2Fwww.amazon.com%2Fdp%2FB00JXQ06X8&flow=video-settings&g...on_source=Homepage&ai_video_type=ECOMMERCE_ITEM&ai_session_id=0d0ef0c2-bdcc-47dc-8edb-e2e00ec2ccac&auto_generate=true'>
base_url = 'https://promo.com'
def test_cbe07_change_intro_amazon_product_video(
self, page, base_url
):
"""
CBE07 Change the intro for an Amazon product video.
Homepage TID=0 → Amazon URL → video settings → new account → skip survey
→ wait for generation (skip tutorial when it appears) → open first post
→ verify CBE + voice settings present → change intro via 'amazon_intro'
→ verify save enabled → open advanced settings → edit script → save
→ confirm regeneration → wait for regeneration → verify save enabled → save.
"""
main_page = MainPage(page)
signup_page = SignUpPage(page)
autopilot_page = AutopilotPage(page)
main_page.go_to_homepage_with_tid(base_url, "0")
main_page.provide_autopilot_input(amazon_product)
main_page.click_video_settings_next()
main_page.assert_ai_flow_login_loader()
signup_page.fill_signup_form_in_ai_flow(fullname, random_password)
signup_page.skip_survey()
# Wait up to 5 minutes for the skip-tutorial button to appear.
# Generation screen shows this button once backend processing starts;
# the window is generous because the first run after signup can be slow.
from playwright.sync_api import TimeoutError as PlaywrightTimeoutError
try:
autopilot_page.page.locator(autopilot_page.AI_GENERATOR_SKIP_VIDEO).wait_for(
state="visible", timeout=300_000
)
autopilot_page.page.locator(autopilot_page.AI_GENERATOR_SKIP_VIDEO).click()
autopilot_page.page.wait_for_url(
📸 Failure Screenshot: