FFF                                                                      [100%]
=================================== FAILURES ===================================
____________ test_dialog_focus_is_contained_and_returns_to_trigger _____________

ui = {'page': <Page url='http://127.0.0.1:54066/#l/today'>, 'posts': [], 'config': {'boards': [], 'priority': {}, 'priority...{}, ...}, 'task': {'uuid': 'task', 'title': 'Write an outline', 'status': 'incomplete', 'tags': ['writing'], ...}, ...}

    def test_dialog_focus_is_contained_and_returns_to_trigger(ui):
        page = ui["page"]
        page.locator("#prefs-btn").click()
>       page.wait_for_function("() => document.activeElement.id === 'pf-editor'", timeout=2000)

tests/test_dashboard_interactions.py:197: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.14/site-packages/playwright/sync_api/_generated.py:12436: in wait_for_function
    self._sync(
.venv/lib/python3.14/site-packages/playwright/_impl/_page.py:1136: in wait_for_function
    return await self._main_frame.wait_for_function(**locals_to_params(locals()))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.14/site-packages/playwright/_impl/_frame.py:910: in wait_for_function
    await self._channel.send("waitForFunction", self._timeout, params)
.venv/lib/python3.14/site-packages/playwright/_impl/_connection.py:69: in send
    return await self._connection.wrap_api_call(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <playwright._impl._connection.Connection object at 0x10a7a1010>
cb = <function Channel.send.<locals>.<lambda> at 0x10a7a9dd0>
is_internal = False, title = None

    async def wrap_api_call(
        self, cb: Callable[[], Any], is_internal: bool = False, title: str = None
    ) -> Any:
        if self._api_zone.get():
            return await cb()
        task = asyncio.current_task(self._loop)
        st: List[inspect.FrameInfo] = getattr(
            task, "__pw_stack__", None
        ) or inspect.stack(0)
    
        parsed_st = _extract_stack_trace_information_from_stack(st, is_internal, title)
        self._api_zone.set(parsed_st)
        try:
            return await cb()
        except Exception as error:
>           raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None
E           playwright._impl._errors.TimeoutError: Page.wait_for_function: Timeout 2000ms exceeded.

.venv/lib/python3.14/site-packages/playwright/_impl/_connection.py:559: TimeoutError
______________________ test_escape_closes_only_top_dialog ______________________

ui = {'page': <Page url='http://127.0.0.1:54066/#l/today'>, 'posts': [], 'config': {'boards': [], 'priority': {}, 'priority...{}, ...}, 'task': {'uuid': 'task', 'title': 'Write an outline', 'status': 'incomplete', 'tags': ['writing'], ...}, ...}

    def test_escape_closes_only_top_dialog(ui):
        page = ui["page"]
        page.locator("#prefs-btn").click()
        page.evaluate("() => openCmdk()")
        page.locator("#cmdk.show").wait_for()
        page.keyboard.press("Escape")
>       assert page.locator("#prefs-overlay").evaluate("el => el.classList.contains('show')") is True
E       assert False is True
E        +  where False = evaluate("el => el.classList.contains('show')")
E        +    where evaluate = <Locator frame=<Frame name= url='http://127.0.0.1:54066/#l/today'> selector='#prefs-overlay'>.evaluate
E        +      where <Locator frame=<Frame name= url='http://127.0.0.1:54066/#l/today'> selector='#prefs-overlay'> = locator('#prefs-overlay')
E        +        where locator = <Page url='http://127.0.0.1:54066/#l/today'>.locator

tests/test_dashboard_interactions.py:216: AssertionError
____________ test_create_dialog_has_named_fields_and_keyboard_close ____________

ui = {'page': <Page url='http://127.0.0.1:54066/#l/today'>, 'posts': [], 'config': {'boards': [], 'priority': {}, 'priority...{}, ...}, 'task': {'uuid': 'task', 'title': 'Write an outline', 'status': 'incomplete', 'tags': ['writing'], ...}, ...}

    def test_create_dialog_has_named_fields_and_keyboard_close(ui):
        page = ui["page"]
        page.locator("#add-btn").click()
>       assert page.get_by_role("dialog", name="New to-do", exact=False).is_visible()
E       assert False
E        +  where False = is_visible()
E        +    where is_visible = <Locator frame=<Frame name= url='http://127.0.0.1:54066/#l/today'> selector='internal:role=dialog[name="New to-do"i]'>.is_visible
E        +      where <Locator frame=<Frame name= url='http://127.0.0.1:54066/#l/today'> selector='internal:role=dialog[name="New to-do"i]'> = get_by_role('dialog', name='New to-do', exact=False)
E        +        where get_by_role = <Page url='http://127.0.0.1:54066/#l/today'>.get_by_role

tests/test_dashboard_interactions.py:225: AssertionError
=========================== short test summary info ============================
FAILED tests/test_dashboard_interactions.py::test_dialog_focus_is_contained_and_returns_to_trigger
FAILED tests/test_dashboard_interactions.py::test_escape_closes_only_top_dialog
FAILED tests/test_dashboard_interactions.py::test_create_dialog_has_named_fields_and_keyboard_close
3 failed, 10 deselected in 6.17s
