⏱️ Duration: 39.80s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7ff913d1ab60>
login_page = <pages.login_page.LoginPage object at 0x7ff912db3700>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7ff912db0460>
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 0x7ff912db0460>
timeout = 30000
def verify_cbe_save_enabled(self, timeout: int = 30_000):
"""
Verif
📸 Failure Screenshot:
⏱️ Duration: 37.07s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7ff913d199f0>
login_page = <pages.login_page.LoginPage object at 0x7ff911827f40>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7ff9118271f0>
base_url = 'https://promo.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 AI post → 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())
autopilot_page.go_to_planner(base_url)
autopilot_page.ensure_ai_posts_exist(min_count=1)
autopilot_page.open_ai_post(1)
autopilot_page.open_cbe()
autopilot_page.send_cbe_prompt_and_wait(CBE_PROMPTS["uploaded_video"])
> autopilot_page.upload_via_filestack_facebook(base_url)
tests/test_chat_based_editor.py:199:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/autopilot_page.py:1704: in upload_via_filestack_facebook
self._find_filestack_locator(self.AICHAT_FILESTACK_1ST_FB_ALBUM, timeout=self.T_SLOW).click()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.autopilot_page.AutopilotPage object at 0x7ff9118271f0>
selector = '[data-qaid="facebook-album-item-0"]', timeout = 20000
def _find_filestack_locator(self, selector: str, timeout: int = 15_000):
"""
Returns a locator for `selector` that is actually visible — checking the
main page first, then all child frames (Filestack renders its picker in
an iframe on some configurations).
"""
import time as _time
deadline =
📸 Failure Screenshot: