⏱️ Duration: 10.77s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f0140172b30>
login_page = <pages.login_page.LoginPage object at 0x7f0140027700>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f0140024100>
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])
tests/test_chat_based_editor.py:80:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.autopilot_page.AutopilotPage object at 0x7f0140024100>
prompt = 'Add a scene'
def send_cbe_prompt_and_wait(self, prompt: str):
"""
Types a prompt in the chat input, sends it, then waits for the AI response
and asserts no error message is shown.
The CBE chat history persists on the post across sessions, so on a post
that has already been through prior prompts (e.g. test_cbe01's chained
parametrized runs against the same post) the panel can already contain
icons/messag
📸 Failure Screenshot:
⏱️ Duration: 37.60s
❌ Error:
self = <tests.test_chat_based_editor.TestChatBasedEditor object at 0x7f0140171780>
login_page = <pages.login_page.LoginPage object at 0x7f013daf6050>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f013daf6bf0>
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 0x7f013daf6bf0>
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: