Repository navigation
test: await stable HA entry before connection strategy transition #271
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Validate | |
| on: | |
| push: | |
| pull_request: | |
| schedule: | |
| - cron: "0 0 * * *" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate-hacs: | |
| name: HACS Validation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: HACS validation | |
| uses: hacs/action@main | |
| with: | |
| category: integration | |
| hassfest: | |
| name: Hassfest | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Hassfest validation | |
| uses: home-assistant/actions/hassfest@master | |
| # Failure boundary 1: the STUB-BASED unit suite. It never installs Home | |
| # Assistant -- the suite runs against the fake `homeassistant.*` modules that | |
| # tests/ injects. Only the two genuine third-party libs the production modules | |
| # import are installed (see requirements-test.txt). | |
| quality-gate: | |
| name: Quality Gate | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| cache-dependency-path: requirements-test.txt | |
| - name: Install lightweight unit-suite dependencies | |
| run: | | |
| python3 -m pip install --upgrade pip | |
| python3 -m pip install -r requirements-test.txt | |
| - name: Run project quality gate | |
| run: python3 tools/quality_gate.py | |
| # Failure boundary 2: the REAL Home Assistant lifecycle. The current lane | |
| # runs on every change; the older compatibility lane remains a nightly and | |
| # manually-triggered release check. | |
| ha-current-tests: | |
| name: HA Runtime Tests (2026.9) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.14" | |
| cache: pip | |
| cache-dependency-path: requirements-test-ha-2026.9.txt | |
| - name: Install Home Assistant test stack | |
| run: | | |
| python3 -m pip install --upgrade pip | |
| python3 -m pip install -r requirements-test-ha-2026.9.txt | |
| - name: Show resolved Home Assistant stack | |
| run: python3 -m pip list | grep -Ei '^(homeassistant|pytest|pytest-asyncio|pytest-socket|pytest-homeassistant-custom-component|bleak) ' | |
| - name: Run Home Assistant integration tests | |
| # Explicit -c: the repo-root pytest.ini disables the Home Assistant | |
| # plugin for the stub-based suite, which this suite must NOT inherit. | |
| run: python3 -m pytest -c tests_ha/pytest.ini tests_ha -q | |
| ha-compatibility-tests: | |
| name: HA Compatibility Tests (2026.2) | |
| if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.13" | |
| cache: pip | |
| cache-dependency-path: requirements-test-ha-2026.2.txt | |
| - name: Install Home Assistant test stack | |
| run: | | |
| python3 -m pip install --upgrade pip | |
| python3 -m pip install -r requirements-test-ha-2026.2.txt | |
| - name: Show resolved Home Assistant stack | |
| run: python3 -m pip list | grep -Ei '^(homeassistant|pytest|pytest-asyncio|pytest-socket|pytest-homeassistant-custom-component|bleak) ' | |
| - name: Run Home Assistant integration tests | |
| run: python3 -m pytest -c tests_ha/pytest.ini tests_ha -q |