name: ๐Ÿงช Integration Testing on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test-integration: name: ๐Ÿ”ง Test Integration runs-on: ubuntu-latest strategy: matrix: python-version: ['3.11', '3.12', '3.13'] home-assistant-version: ['2025.9.4'] steps: - name: ๐Ÿ“ฅ Checkout Code uses: actions/checkout@v4 - name: ๐Ÿ Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: ๐Ÿ—‚๏ธ Get pip cache directory id: pip-cache-dir run: | echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - name: ๐Ÿ“ฆ Cache pip dependencies uses: actions/cache@v4 id: pip-cache with: path: ${{ steps.pip-cache-dir.outputs.dir }} key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('**/requirements*.txt', 'setup.py', 'setup.cfg', 'pyproject.toml') }} restore-keys: | ${{ runner.os }}-pip-${{ matrix.python-version }}- ${{ runner.os }}-pip- - name: ๐Ÿ“ฆ Cache Home Assistant installation uses: actions/cache@v4 id: homeassistant-cache with: path: ${{ env.pythonLocation }} key: ${{ runner.os }}-ha-${{ matrix.python-version }}-${{ matrix.home-assistant-version }}-${{ hashFiles('**/requirements*.txt') }} restore-keys: | ${{ runner.os }}-ha-${{ matrix.python-version }}-${{ matrix.home-assistant-version }}- ${{ runner.os }}-ha-${{ matrix.python-version }}- - name: ๐Ÿ“ฆ Install Dependencies if: steps.homeassistant-cache.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip pip install homeassistant==${{ matrix.home-assistant-version }} pip install pytest pytest-homeassistant-custom-component pytest-asyncio pytest-cov - name: ๐Ÿ“ฆ Install additional dependencies (if cache miss) if: steps.pip-cache.outputs.cache-hit != 'true' run: | # Install any additional project-specific dependencies if [ -f requirements.txt ]; then pip install -r requirements.txt; fi if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; fi - name: ๐Ÿ“ Create custom_components directory run: | mkdir -p custom_components touch custom_components/__init__.py - name: ๐Ÿงช Run Integration Tests run: | python -m pytest tests/ -v \ --cov=custom_components/adguard_hub \ --cov-report=xml \ --cov-report=term-missing \ --asyncio-mode=auto