Compare commits

...

4 Commits

Author SHA1 Message Date
Petar Petrov
a20067956f remove app from url 2026-01-20 15:25:55 +02:00
Petar Petrov
f740c59976 test coverage 2026-01-20 14:14:59 +02:00
Petar Petrov
e0c593ff15 update url 2026-01-20 14:09:31 +02:00
Paulus Schoutsen
01b1e34651 Migrate apps added to sidebar to use new app panel 2026-01-19 23:20:01 -05:00
2 changed files with 45 additions and 6 deletions

View File

@@ -6,7 +6,7 @@ from typing import Any
from aiohttp import web
from homeassistant.components import frontend, panel_custom
from homeassistant.components import frontend
from homeassistant.components.http import HomeAssistantView
from homeassistant.const import ATTR_ICON
from homeassistant.core import HomeAssistant
@@ -80,14 +80,12 @@ async def _register_panel(
hass: HomeAssistant, addon: str, data: dict[str, Any]
) -> None:
"""Init coroutine to register the panel."""
await panel_custom.async_register_panel(
frontend.async_register_built_in_panel(
hass,
"app",
frontend_url_path=addon,
webcomponent_name="hassio-main",
sidebar_title=data[ATTR_TITLE],
sidebar_icon=data[ATTR_ICON],
js_url="/api/hassio/app/entrypoint.js",
embed_iframe=True,
require_admin=data[ATTR_ADMIN],
config={"ingress": addon},
config={"addon": addon},
)

View File

@@ -130,3 +130,44 @@ async def test_hassio_addon_panel_api(
"test1",
{"enable": True, "title": "Test", "icon": "mdi:test", "admin": False},
)
@pytest.mark.usefixtures("hassio_env")
async def test_hassio_addon_panel_registration(
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
) -> None:
"""Test panel registration calls frontend.async_register_built_in_panel."""
aioclient_mock.get(
"http://127.0.0.1/ingress/panels",
json={
"result": "ok",
"data": {
"panels": {
"test_addon": {
"enable": True,
"title": "Test Addon",
"icon": "mdi:test-tube",
"admin": True,
},
}
},
},
)
with patch(
"homeassistant.components.hassio.addon_panel.frontend.async_register_built_in_panel"
) as mock_register:
await async_setup_component(hass, "hassio", {})
await hass.async_block_till_done()
# Verify that async_register_built_in_panel was called with correct arguments
# for our test addon
mock_register.assert_any_call(
hass,
"app",
frontend_url_path="test_addon",
sidebar_title="Test Addon",
sidebar_icon="mdi:test-tube",
require_admin=True,
config={"addon": "test_addon"},
)