adaptive-lighting/tests
proscar87 55f871fd0c
Adopt has_entity_name to fix duplicated entity ids on HA 2026.4+ (#1499)
* Adopt has_entity_name to fix duplicated entity ids on HA 2026.4+

Since HA core 2026.4 (PR 166246) composes entity names as device name +
entity name, and only strips the device prefix when the entity name
starts with it. Adaptive Lighting's names ('Adaptive Lighting Sleep
Mode: stairs' on device 'Adaptive Lighting: stairs') never match, so
new installs get ids like
switch.adaptive_lighting_stairs_adaptive_lighting_sleep_mode_stairs.

Adopt has_entity_name: the main switch takes the device name
('Adaptive Lighting: <name>'), the simple switches use their role
('Sleep Mode', 'Adapt Brightness', 'Adapt Color'). Unique ids are
unchanged, so existing installs keep their entity ids via the registry.

Fixes #1459

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Test the new entity ids and that existing ones survive

The renamed constants were defined but never asserted, so neither the
fresh-install ids nor the registry-preservation claim were covered.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test: keep the apply-service test light on

Avoid generating brightness zero in the attribute-change helper, which turns the light off and makes the test depend on the current adaptive brightness.

---------

Co-authored-by: proscar87 <proscar87@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Bas Nijholt <bas@nijho.lt>
Co-authored-by: Bas Nijholt <basnijholt@gmail.com>
2026-09-06 09:18:49 +02:00
..
__init__.py Copy tests from https://github.com/home-assistant/core/pull/40626 2022-08-28 12:05:31 -07:00
conftest.py Bump to 1.27.0 for fixes in 2025.12 (#1293) 2025-11-27 09:06:41 -08:00
README.md docs: clarify Docker test setup requirements (#1383) 2026-01-11 21:57:52 +01:00
test_adaptation_utils.py fix: use quantization-aware comparison in skip_redundant_commands filter (#1513) 2026-09-06 06:53:06 +00:00
test_color_and_brightness.py fix: clamp() collapsed to minimum when min_brightness > max_brightness (#1507) 2026-09-06 00:10:21 -07:00
test_config_flow.py feat: add option to duplicate existing lighting instance (#1329) 2025-12-05 04:15:24 -08:00
test_hass_utils.py Test HA core v2023.6 until v2024.2 (#942) 2024-04-06 10:14:54 +02:00
test_init.py Test HA core v2023.6 until v2024.2 (#942) 2024-04-06 10:14:54 +02:00
test_switch.py Adopt has_entity_name to fix duplicated entity ids on HA 2026.4+ (#1499) 2026-09-06 09:18:49 +02:00

Developer notes for the tests directory

To run the tests, check out the CI configuration to see how they are executed in the CI pipeline. Alternatively, you can use the provided Docker image to run the tests locally or run them with VS Code directly in the dev container.

Prerequisites

Before running tests with Docker, you need a local Home Assistant core checkout with symlinks:

# Clone HA core (one-time setup)
git clone --depth 1 https://github.com/home-assistant/core.git core

# Setup symlinks (one-time setup)
./scripts/setup-symlinks

Running tests with Docker

Navigate to the adaptive-lighting repo folder and execute the following command.

Important: Mount the entire repo (-v $(pwd):/app), not individual directories, or the symlinks will break.

Linux / MacOS / Windows PowerShell:

docker run -v ${PWD}:/app basnijholt/adaptive-lighting:latest
  • In windows command prompt, the command is:
    docker run -v %cd%:/app basnijholt/adaptive-lighting:latest
    

This command will download the Docker image from the adaptive-lighting Docker Hub repo and run the tests.

If you prefer to build the image yourself, use the following command:

docker build -t basnijholt/adaptive-lighting:latest --no-cache --progress=plain .

This might be necessary if the image on Docker Hub is outdated or if the test_dependencies.py file is updated.

Passing arguments to pytest

You can pass arguments to pytest by appending them to the command:

For example, to run the tests with a custom log format, use the following command (this also gets rid of the captured stderr output):

docker run -v $(pwd):/app basnijholt/adaptive-lighting:latest --show-capture=log --log-format="%(asctime)s %(levelname)-8s %(name)s:%(filename)s:%(lineno)s %(message)s" --log-date-format="%H:%M:%S" tests/components/adaptive_lighting/