text: """HomeKit session fixtures."""
  from pyhap.accessory_driver import AccessoryDriver
  import pytest
  
  from homeassistant.components.homekit.const import EVENT_HOMEKIT_CHANGED
  from homeassistant.core import callback as ha_callback
  
  from tests.async_mock import patch
  
  
  @pytest.fixture(scope="session")
  def hk_driver():
      """Return a custom AccessoryDriver instance for HomeKit accessory init."""
      with patch("pyhap.accessory_driver.Zeroconf"), patch(
          "pyhap.accessory_driver.AccessoryEncoder"
      ), patch("pyhap.accessory_driver.HAPServer"), patch(
          "pyhap.accessory_driver.AccessoryDriver.publish"
      ), patch(
          "pyhap.accessory_driver.AccessoryDriver.persist"
      ):
          yield AccessoryDriver(pincode=b"123-45-678", address="127.0.0.1")
  
  
  @pytest.fixture
  def events(hass):
      """Yield caught homekit_changed events."""
      events = []
      hass.bus.async_listen(
          EVENT_HOMEKIT_CHANGED, ha_callback(lambda e: events.append(e))
      )
      yield events
  
  
  @pytest.fixture
  def mock_zeroconf():
      """Mock zeroconf."""
      with patch("homeassistant.components.zeroconf.HaZeroconf") as mock_zc:
          yield mock_zc.return_value
  