HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/anaconda3/Lib/site-packages/panel/tests/ui/widgets/test_time_picker.py
import datetime

import pytest

from panel.tests.util import serve_component, wait_until
from panel.widgets import TimePicker

pytestmark = pytest.mark.ui


def test_time_picker(page):

    time_picker = TimePicker(value="18:08", format="H:i")

    serve_component(page, time_picker)

    # test init corrected timezone
    locator = page.locator("#input")
    assert locator.get_attribute("value") == "18:08:00"

    # test UI change
    locator = page.locator("input.bk-input.form-control.input")
    locator.click()
    wait_until(lambda: page.locator("input.numInput.flatpickr-hour").is_visible())
    locator = page.locator("input.numInput.flatpickr-hour")
    locator.press("ArrowDown")
    locator.press("Enter")
    wait_until(lambda: time_picker.value == datetime.time(17, 8))

    # test str value change
    time_picker.value = "04:08"
    wait_until(lambda: time_picker.value == "04:08")
    locator = page.locator("#input")
    assert locator.get_attribute("value") == "04:08:00"

    # test datetime.time value change
    time_picker.value = datetime.time(18, 8)
    wait_until(lambda: time_picker.value == datetime.time(18, 8))
    locator = page.locator("#input")
    assert locator.get_attribute("value") == "18:08:00"


@pytest.mark.parametrize("timezone_id", [
    "America/New_York",
    "Europe/Berlin",
    "UTC",
])
def test_time_picker_timezone_different(page, timezone_id):
    context = page.context.browser.new_context(
        timezone_id=timezone_id,
    )
    page = context.new_page()

    time_picker = TimePicker(value="18:08", format="H:i")
    serve_component(page, time_picker)

    locator = page.locator("#input")
    assert locator.get_attribute("value") == "18:08:00"