Improve ServerChooser UI and use server avatar#6990
All 2 517 tests pass, 1 skipped in 11m 36s
293 files 297 suites 11m 36s ⏱️
2 518 tests 2 517 ✅ 1 💤 0 ❌
2 562 runs 2 561 ✅ 1 💤 0 ❌
Results for commit c87bf3a.
Annotations
Check notice on line 0 in .github
github-actions / Test Results
1 skipped test found
There is 1 skipped test, see "Raw output" for the name of the skipped test.
Raw output
io.homeassistant.companion.android.onboarding.serverdiscovery.navigation.ServerDiscoveryNavigationTest ‑ Given API 37 with denied local network permission when entering ServerDiscovery then routes to ManualServer and back skips ServerDiscovery
Check notice on line 0 in .github
github-actions / Test Results
2518 tests found (test 1 to 372)
There are 2518 tests, see "Raw output" for the list of tests 1 to 372.
Raw output
io.homeassistant.companion.android.ApplicationModuleTest ‑ Given injected HasFcmPushSupport when checking the value it matches the flavor
io.homeassistant.companion.android.ApplicationModuleTest ‑ Given injected appVersionProvider when invoking it returns current version
io.homeassistant.companion.android.ApplicationModuleTest ‑ Given injected push websocket support when checking the value it is false
io.homeassistant.companion.android.ApplicationModuleTest ‑ Given injected push websocket support when checking the value it is true
io.homeassistant.companion.android.EntityListViewPreviewsTest ‑ PreviewEntityListView
io.homeassistant.companion.android.applock.AppLockStateManagerTest$IsAppLocked ‑ Given a missing server when checking app lock then returns false()
io.homeassistant.companion.android.applock.AppLockStateManagerTest$IsAppLocked ‑ Given a null server ID when checking app lock then uses SERVER_ID_ACTIVE()
io.homeassistant.companion.android.applock.AppLockStateManagerTest$IsAppLocked ‑ Given an invalid server when checking app lock then returns false()
io.homeassistant.companion.android.applock.AppLockStateManagerTest$IsAppLocked ‑ [1] true
io.homeassistant.companion.android.applock.AppLockStateManagerTest$IsAppLocked ‑ [2] false
io.homeassistant.companion.android.applock.AppLockStateManagerTest$SetAppActive ‑ Given a missing server when setting app active then does not call integration repository()
io.homeassistant.companion.android.applock.AppLockStateManagerTest$SetAppActive ‑ Given a null server ID when setting app active then uses SERVER_ID_ACTIVE()
io.homeassistant.companion.android.applock.AppLockStateManagerTest$SetAppActive ‑ Given an invalid server when setting app active then handles exception gracefully()
io.homeassistant.companion.android.applock.AppLockStateManagerTest$SetAppActive ‑ [1] true
io.homeassistant.companion.android.applock.AppLockStateManagerTest$SetAppActive ‑ [2] false
io.homeassistant.companion.android.assist.AssistAudioStrategyFactoryTest ‑ Given no wake word phrase When create called Then returns DefaultAssistAudioStrategy()
io.homeassistant.companion.android.assist.AssistAudioStrategyFactoryTest ‑ Given wake word phrase provided When create called Then returns WakeWordAssistAudioStrategy()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given blocked input mode when CLOSE_INACTIVE elapses then shouldFinish is false()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given not a wake word session when CLOSE_INACTIVE elapses then shouldFinish is false()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given started with wake word and TEXT mode when switching back to VOICE_INACTIVE then timer restarts()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given started with wake word and voice active mode when recording stops and response arrives then timer fires and shouldFinish is true()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given started with wake word and voice inactive mode and audio playing when playback stops then timer starts()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given started with wake word and voice inactive mode and non-placeholder message when CLOSE_INACTIVE elapses then shouldFinish is true()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given started with wake word and voice inactive mode when text input triggers a response then timer restarts()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given text input mode when CLOSE_INACTIVE elapses then shouldFinish is false()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given voice active mode when CLOSE_INACTIVE elapses then shouldFinish is false()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given voice inactive mode and audio playing when CLOSE_INACTIVE elapses then shouldFinish is false()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given voice inactive mode and non-placeholder message when less than CLOSE_INACTIVE elapses then shouldFinish is false()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given voice inactive mode when input mode changes to TEXT then timer is cancelled()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given voice inactive mode when onDestroy is called then timer is cancelled()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given voice inactive mode when onPause is called then timer is cancelled()
io.homeassistant.companion.android.assist.AssistViewModelTest$InactivityTimerTest ‑ Given voice inactive mode with placeholder message when CLOSE_INACTIVE elapses then shouldFinish is false()
io.homeassistant.companion.android.assist.WakeWordAssistAudioStrategyTest ‑ Given listener running When wake word detected Then flow emits wake word phrase()
io.homeassistant.companion.android.assist.WakeWordAssistAudioStrategyTest ‑ Given no audio manager When abandonFocus called Then does not throw()
io.homeassistant.companion.android.assist.WakeWordAssistAudioStrategyTest ‑ Given no audio manager When requestFocus called Then does not throw()
io.homeassistant.companion.android.assist.WakeWordAssistAudioStrategyTest ‑ Given no phrase When wakeWordDetected collected Then listener starts with first available model()
io.homeassistant.companion.android.assist.WakeWordAssistAudioStrategyTest ‑ Given onListenerStopped callback When strategy created Then passes it to listener factory()
io.homeassistant.companion.android.assist.WakeWordAssistAudioStrategyTest ‑ Given phrase matches available model When wakeWordDetected collected Then listener starts with matched model()
io.homeassistant.companion.android.assist.WakeWordAssistAudioStrategyTest ‑ Given recorder emitting audio When audioData collected Then emits ShortArray directly()
io.homeassistant.companion.android.assist.WakeWordAssistAudioStrategyTest ‑ Given unknown phrase When wakeWordDetected collected Then listener starts with first available model as fallback()
io.homeassistant.companion.android.assist.service.AssistRecognitionServiceTest ‑ Given onCheckRecognitionSupport when invoked then report client error
io.homeassistant.companion.android.assist.service.AssistRecognitionServiceTest ‑ Given onStartListening when invoked then report client error
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given RESUME_LISTENING action and wake word disabled then do not start listening
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given RESUME_LISTENING action and wake word enabled then start listening
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given START_LISTENING action then start listening
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given STOP_LISTENING action then stop listening
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given context when resumeListening then send RESUME_LISTENING broadcast with package
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given context when startListening then send START_LISTENING broadcast with package
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given context when stopListening then send STOP_LISTENING broadcast with package
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given no RECORD_AUDIO permission when start listening then do not start
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given no wake word selected when starting then use first model
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given null intent when onStartCommand then do nothing
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given receiver already unregistered when onShutdown then do not crash
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given selected wake word exists when starting then use selected model
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given service destroyed when onReady delivered again then do not register receiver
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given service not ready when onShutdown then do not crash
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given service not ready when wake word detected then do not show session
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given service ready when onShutdown then unregister action receiver
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given service shut down after ready when wake word detected then do not show session
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given service shut down when onReady delivered again then do not register receiver
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given service shut down when onReady delivered and wake word enabled then do not start listening
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given service when onReady then register action receiver for all actions
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given unknown wake word selected when starting then use first model
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given wake word detected when callback invoked then send broadcast
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given wake word detected when callback invoked then stop listener and show session
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given wake word disabled when onReady then do not start listening
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionServiceTest ‑ Given wake word enabled when onReady then start listening
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionSessionServiceTest ‑ Given service when onNewSession then return AssistVoiceInteractionSession
io.homeassistant.companion.android.assist.service.AssistVoiceInteractionSessionTest ‑ Given session when onShow then start AssistActivity and finish session
io.homeassistant.companion.android.assist.wakeword.MicroWakeWordModelTest ‑ loadsModelsFromAppAssets_verify_models_config_files
io.homeassistant.companion.android.assist.wakeword.MicroWakeWordModelTest ‑ microWakeWord_canResetState_withoutCrashing
io.homeassistant.companion.android.assist.wakeword.MicroWakeWordModelTest ‑ microWakeWord_loadsAndProcessesAudio_withAllModels
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$CooldownTests ‑ Given cooldown active when no detection in audio then still skips processing()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$CooldownTests ‑ Given cooldown expired then resumes processing audio()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$CooldownTests ‑ Given wake word detected then skips processing during cooldown period()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$DetectionTests ‑ Given no wake word detected then does not invoke callback()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$DetectionTests ‑ Given wake word detected then invokes onWakeWordDetected callback()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$DetectionTests ‑ Given wake word detected then resets detector()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$ErrorHandlingTests ‑ Given detector creation fails then throws()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$StartTests ‑ Given already listening then start cancels previous and starts new()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$StartTests ‑ Given start called then creates detector with model config()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$StartTests ‑ Given start called then invokes onListenerReady callback()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$StopTests ‑ Given stop called then closes detector()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$StopTests ‑ Given stop called then invokes onListenerStopped callback()
io.homeassistant.companion.android.assist.wakeword.WakeWordListenerTest$StopTests ‑ Given stop called when not listening then does nothing()
io.homeassistant.companion.android.common.LocalStorageImplTest ‑ Given observing key when cancelled then listener is unregistered()
io.homeassistant.companion.android.common.LocalStorageImplTest ‑ Given observing key when different key changes then nothing is emitted()
io.homeassistant.companion.android.common.LocalStorageImplTest ‑ Given observing key when matching key changes then key is emitted()
io.homeassistant.companion.android.common.LocalStorageImplTest ‑ Given observing keys with mapper when subscribing then mapper result is emitted immediately()
io.homeassistant.companion.android.common.LocalStorageImplTest ‑ Given observing multiple keys when any watched key changes then the changed key is emitted()
io.homeassistant.companion.android.common.assist.AssistAudioFocusImplTest ‑ Given audio manager When abandonFocus called after requestFocus Then abandons audio focus()
io.homeassistant.companion.android.common.assist.AssistAudioFocusImplTest ‑ Given audio manager When abandonFocus called without requestFocus Then does nothing()
io.homeassistant.companion.android.common.assist.AssistAudioFocusImplTest ‑ Given audio manager When requestFocus called Then requests audio focus()
io.homeassistant.companion.android.common.assist.AssistAudioFocusImplTest ‑ Given no audio manager When abandonFocus called Then does nothing()
io.homeassistant.companion.android.common.assist.AssistAudioFocusImplTest ‑ Given no audio manager When requestFocus called Then does not request focus()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given active recording When stopRecording with sendRecorded false Then no data is sent()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given active recording When stopRecording with sendRecorded true Then buffer is drained and empty byte array is sent()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given audio collection fails When recorder is running Then onError is called()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given external audio strategy When pipeline runs Then external audio is forwarded()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given external audio strategy When stopRecording called Then strategy abandonFocus is called()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given multiple audio chunks When STT starts Then all chunks are forwarded in order()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given no binaryHandlerId When stopRecording Then jobs are cancelled without sending()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given no wake word phrase When voice pipeline started Then phrase is null in WebSocket call()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given pipeline started When new audio arrives after STT_START Then it is forwarded immediately()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given recorder setup When pipeline sends RUN_START and STT_START Then buffered audio is forwarded()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given sending voice data fails When consumer forwards audio Then onError is called()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given voice pipeline When RUN_START received Then PipelineStarted event is emitted()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given voice pipeline When duplicate wake-up error received Then Dismiss event is emitted()
io.homeassistant.companion.android.common.assist.AssistViewModelBaseTest ‑ Given wake word phrase When voice pipeline started Then phrase is passed to WebSocket()
io.homeassistant.companion.android.common.assist.DefaultAssistAudioStrategyTest ‑ Given strategy When abandonFocus called Then delegates to AudioFocusHelper()
io.homeassistant.companion.android.common.assist.DefaultAssistAudioStrategyTest ‑ Given strategy When audioData accessed Then returns flow from VoiceAudioRecorder()
io.homeassistant.companion.android.common.assist.DefaultAssistAudioStrategyTest ‑ Given strategy When audioData collected Then emits samples from VoiceAudioRecorder()
io.homeassistant.companion.android.common.assist.DefaultAssistAudioStrategyTest ‑ Given strategy When requestFocus called Then delegates to AudioFocusHelper()
io.homeassistant.companion.android.common.assist.DefaultAssistAudioStrategyTest ‑ Given strategy When wakeWordDetected collected Then never emits()
io.homeassistant.companion.android.common.data.CompositeX509ExtendedTrustManagerTest ‑ Given primary throws a non-certificate error when checking server then it propagates without fallback()
io.homeassistant.companion.android.common.data.CompositeX509ExtendedTrustManagerTest ‑ When checking client certificate then it delegates to the primary only()
io.homeassistant.companion.android.common.data.CompositeX509ExtendedTrustManagerTest ‑ When getting accepted issuers then only the primary issuers are returned()
io.homeassistant.companion.android.common.data.CompositeX509ExtendedTrustManagerTest ‑ checkServerTrusted(chain, authType)
io.homeassistant.companion.android.common.data.CompositeX509ExtendedTrustManagerTest ‑ checkServerTrusted(chain, authType, engine)
io.homeassistant.companion.android.common.data.CompositeX509ExtendedTrustManagerTest ‑ checkServerTrusted(chain, authType, socket)
io.homeassistant.companion.android.common.data.TLSHelperTest ‑ Given an empty store when filtering then it returns null()
io.homeassistant.companion.android.common.data.TLSHelperTest ‑ Given only system CAs when filtering then it returns null()
io.homeassistant.companion.android.common.data.TLSHelperTest ‑ Given several user CAs when filtering then all of them are kept()
io.homeassistant.companion.android.common.data.TLSHelperTest ‑ Given user and system CAs when filtering then only the user CA is kept()
io.homeassistant.companion.android.common.data.authentication.ServerRegistrationRepositoryTest ‑ Given empty URL, when registering auth code, then return null()
io.homeassistant.companion.android.common.data.authentication.ServerRegistrationRepositoryTest ‑ Given invalid URL, when registering auth code, then return null without calling auth service()
io.homeassistant.companion.android.common.data.authentication.ServerRegistrationRepositoryTest ‑ Given valid URL and token with refresh token, when registering auth code, then return TemporaryServer and call service correctly()
io.homeassistant.companion.android.common.data.authentication.ServerRegistrationRepositoryTest ‑ Given valid URL and token without refresh token, when registering auth code, then return null()
io.homeassistant.companion.android.common.data.authentication.ServerRegistrationRepositoryTest ‑ Given valid registration, when token expires in future, then expiration is calculated correctly()
io.homeassistant.companion.android.common.data.authentication.ServerRegistrationRepositoryTest ‑ [1] true
io.homeassistant.companion.android.common.data.authentication.ServerRegistrationRepositoryTest ‑ [2] false
io.homeassistant.companion.android.common.data.authentication.ServerRegistrationRepositoryTest ‑ [3] null
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given DNS resolution fails when running checks then remaining checks are skipped()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given HTTP URL when running checks then default port 80 is used and TLS check is bypassed()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given HTTPS URL without port when running checks then default port 443 is used()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given URL with custom port when parsed then custom port is extracted()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given URL with path and query params when running checks then checks execute correctly()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given all checks succeed when running checks then states are emitted in order()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given any check fails when checking state then hasFailure returns true()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given flow emits states when running checks then InProgress states are emitted()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given flow emits states when running checks then initial state is emitted first()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given server is not Home Assistant when running checks then HA verification fails()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ Given successful DNS resolution when running checks then IP addresses are included in success details()
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ [1] "not a valid url"
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ [2] "://invalid"
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ [3] "ht!tp://bad.url"
io.homeassistant.companion.android.common.data.connectivity.ConnectivityCheckRepositoryImplTest ‑ [4] ""
io.homeassistant.companion.android.common.data.integration.EntityTest$ApplyCompressedStateDiff ‑ Given diff with attribute changes when applying then merges correctly()
io.homeassistant.companion.android.common.data.integration.EntityTest$ApplyCompressedStateDiff ‑ Given diff with lastChanged when applying then updates both timestamps()
io.homeassistant.companion.android.common.data.integration.EntityTest$ApplyCompressedStateDiff ‑ Given diff with only lastUpdated when applying then preserves lastChanged()
io.homeassistant.companion.android.common.data.integration.EntityTest$ApplyCompressedStateDiff ‑ Given diff with state change when applying then updates state()
io.homeassistant.companion.android.common.data.integration.EntityTest$ApplyCompressedStateDiff ‑ Given empty diff when applying then returns entity with same values()
io.homeassistant.companion.android.common.data.integration.EntityTest$Deserialization ‑ Given boolean state when deserializing then returns empty state()
io.homeassistant.companion.android.common.data.integration.EntityTest$Deserialization ‑ Given empty string state when deserializing then returns empty state()
io.homeassistant.companion.android.common.data.integration.EntityTest$Deserialization ‑ Given null state when deserializing then returns empty state()
io.homeassistant.companion.android.common.data.integration.EntityTest$Deserialization ‑ Given numeric state when deserializing then returns empty state()
io.homeassistant.companion.android.common.data.integration.EntityTest$Deserialization ‑ Given string state when deserializing then returns state value()
io.homeassistant.companion.android.common.data.integration.EntityTest$Deserialization ‑ Given string state when serializing round-trip then preserves state()
io.homeassistant.companion.android.common.data.integration.EntityTest$DomainProperty ‑ entityId="" -> domain=""
io.homeassistant.companion.android.common.data.integration.EntityTest$DomainProperty ‑ entityId=".light" -> domain=""
io.homeassistant.companion.android.common.data.integration.EntityTest$DomainProperty ‑ entityId="device_tracker.phone.location" -> domain="device_tracker"
io.homeassistant.companion.android.common.data.integration.EntityTest$DomainProperty ‑ entityId="invalid_entity_id" -> domain="invalid_entity_id"
io.homeassistant.companion.android.common.data.integration.EntityTest$DomainProperty ‑ entityId="light.living_room" -> domain="light"
io.homeassistant.companion.android.common.data.integration.EntityTest$GetIcon ‑ Given blank state and non-string state attribute when getting icon then does not throw()
io.homeassistant.companion.android.common.data.integration.EntityTest$GetIcon ‑ [1] "mdi:"
io.homeassistant.companion.android.common.data.integration.EntityTest$GetIcon ‑ [1] "mdicustom:abcdefgh"
io.homeassistant.companion.android.common.data.integration.EntityTest$GetIcon ‑ [2] "hue:bulb-filament"
io.homeassistant.companion.android.common.data.integration.EntityTest$GetIcon ‑ [2] "mdi:abcdefgh"
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given a valid response with a boolean when invoking renderTemplate then it returns a valid string()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given a valid response with a list when invoking renderTemplate then it returns a valid string()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given a valid response with a number when invoking renderTemplate then it returns a valid string()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given a valid response with a string when invoking renderTemplate then it returns a valid string()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given an empty response when invoking renderTemplate then it returns an empty string()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given different server IDs then notification permission is stored separately per server()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given no preference set when checking shouldAskNotificationPermission then returns null()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given preference set to false when checking shouldAskNotificationPermission then returns false()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given preference set to true when checking shouldAskNotificationPermission then returns true()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given setAskNotificationPermission called with false then stores false for server()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest ‑ Given setAskNotificationPermission called with true then stores true for server()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest$UpdateRegistrationTests ‑ Given known broken registration response when reregistration is not allowed then throws()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest$UpdateRegistrationTests ‑ Given success code but empty body when reregistration is allowed then new registration is tried()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest$UpdateRegistrationTests ‑ Given success when updating registration then registration is persisted()
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest$UpdateRegistrationTests ‑ [1] 404
io.homeassistant.companion.android.common.data.integration.impl.IntegrationRepositoryImplTest$UpdateRegistrationTests ‑ [2] 410
io.homeassistant.companion.android.common.data.integration.impl.entities.IntegrationRequestTest ‑ Given a valid IntegrationRequest when serializing then it generates a valid JSON()
io.homeassistant.companion.android.common.data.integration.impl.entities.RegisterDeviceRequestTest ‑ Given a valid JSON when deserializing it then it creates a valid RegisterDeviceRequest()
io.homeassistant.companion.android.common.data.integration.impl.entities.RegisterDeviceRequestTest ‑ Given a valid RegisterDeviceRequest when serializing it then it creates a valid JSON()
io.homeassistant.companion.android.common.data.integration.impl.entities.SensorRegistrationRequestTest ‑ Given a valid JSON when deserializing it then it creates a valid SensorRegistrationRequest()
io.homeassistant.companion.android.common.data.integration.impl.entities.SensorRegistrationRequestTest ‑ Given a valid SensorRegistrationRequest when serializing it then it creates a valid JSON()
io.homeassistant.companion.android.common.data.integration.impl.entities.UpdateLocationRequestTest ‑ Given a valid JSON when deserializing it then it creates a valid UpdateLocationRequest()
io.homeassistant.companion.android.common.data.integration.impl.entities.UpdateLocationRequestTest ‑ Given a valid UpdateLocationRequest when serializing it then it creates a valid JSON()
io.homeassistant.companion.android.common.data.network.NetworkChangeObserverImplTest ‑ Given active subscription when onAvailable called then emits()
io.homeassistant.companion.android.common.data.network.NetworkChangeObserverImplTest ‑ Given active subscription when onCapabilitiesChanged called then emits()
io.homeassistant.companion.android.common.data.network.NetworkChangeObserverImplTest ‑ Given active subscription when onLost called then emits()
io.homeassistant.companion.android.common.data.network.NetworkChangeObserverImplTest ‑ Given observer when all subscribers cancel then unregisters callback()
io.homeassistant.companion.android.common.data.network.NetworkChangeObserverImplTest ‑ Given observer when first subscriber collects then registers callback and emits initial value()
io.homeassistant.companion.android.common.data.network.NetworkChangeObserverImplTest ‑ Given two subscribers then registers and unregister callbacks are invoked only once()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given LAN-only network when network is not validated but external URL is local IP then state is READY_NET_LOCAL (issue 6099)()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given getExternalUrl throws when network is not validated then state is CONNECTING()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given network becomes ready when change emitted then state updates from UNAVAILABLE to READY_INTERNAL()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given network becomes ready when change emitted then state updates from UNAVAILABLE to READY_NET_VALIDATED()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given no active network when monitoring starts then state is UNAVAILABLE()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given observing network when network exists but not validated and no external URL then state is CONNECTING()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given on local setup when active network then state is READY_INTERNAL()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given on observing network on external setup when validated network then state is READY_NET_VALIDATED()
io.homeassistant.companion.android.common.data.network.NetworkStatusMonitorImplTest ‑ Given public URL when network is not validated then state is CONNECTING()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given approved tags stored when listing then returns them()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given approved tags when clearing then storage entry is removed()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given collecting flow when autoplay key changes then updated value is emitted()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given collecting flow when full screen changes then updated full screen enabled is emitted()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given collecting flow when keep screen on changes then updated keep screen on enabled is emitted()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given collecting flow when screen orientation changes then typed value is emitted()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given migration already at current version when accessing prefs multiple times then migration check only runs once()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given new tag when approving then it is added to the stored set()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given no approved tags when approving then writes a single-entry set()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given no approved tags when listing then returns empty list()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given no preference set when checking change log popup enabled then default is true()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given tag already approved when approving again then storage is not written()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given user customized gesture action when getting pref then user action is returned()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given user sets change log popup enabled to false when retrieving then value is false()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ Given user sets change log popup enabled to true when retrieving then value is true()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ [1] "SWIPE_UP_THREE", "SERVER_LIST"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ [1] "SWIPE_UP_TWO"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ [2] "SWIPE_DOWN_THREE", "QUICKBAR_DEFAULT"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ [2] "SWIPE_DOWN_TWO"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ [3] "SWIPE_LEFT_THREE", "SERVER_PREVIOUS"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ [3] "SWIPE_LEFT_TWO"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ [4] "SWIPE_RIGHT_THREE", "SERVER_NEXT"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest ‑ [4] "SWIPE_RIGHT_TWO"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$GetScreenOrientation ‑ Given null storage value when get then returns SYSTEM()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$GetScreenOrientation ‑ Given unknown storage value when get then returns SYSTEM()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$GetScreenOrientation ‑ [1] "system", "SYSTEM"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$GetScreenOrientation ‑ [2] "portrait", "PORTRAIT"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$GetScreenOrientation ‑ [3] "landscape", "LANDSCAPE"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$SaveScreenOrientation ‑ [1] "SYSTEM", "system"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$SaveScreenOrientation ‑ [2] "PORTRAIT", "portrait"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$SaveScreenOrientation ‑ [3] "LANDSCAPE", "landscape"
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$ZoomSettingsFlow ‑ Given collecting flow when pinch to zoom key changes then updated settings are emitted()
io.homeassistant.companion.android.common.data.prefs.PrefsRepositoryImplTest$ZoomSettingsFlow ‑ Given collecting flow when zoom key changes then updated settings are emitted()
io.homeassistant.companion.android.common.data.prefs.WearPrefsRepositoryImplTest ‑ Given json for tile when retrieving it then it properly deserialize it from the local storage()
io.homeassistant.companion.android.common.data.prefs.WearPrefsRepositoryImplTest ‑ Given template for tile when storing then it properly serialize it into the local storage()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$CanSafelySendCredentials ‑ Given HTTP URL belonging to server and allowInsecure false and not internal when calling canSafelySendCredentials then returns false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$CanSafelySendCredentials ‑ Given HTTP URL belonging to server and allowInsecure false but on home network when calling canSafelySendCredentials then returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$CanSafelySendCredentials ‑ Given HTTP URL belonging to server and allowInsecure null when calling canSafelySendCredentials then returns true for backwards compatibility()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$CanSafelySendCredentials ‑ Given HTTP URL belonging to server and allowInsecure true when calling canSafelySendCredentials then returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$CanSafelySendCredentials ‑ Given HTTP URL not belonging to server when calling canSafelySendCredentials then returns false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$CanSafelySendCredentials ‑ Given HTTPS URL when calling canSafelySendCredentials then returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given HTTP external URL and allowInsecure false and not on home network when calling getApiUrls then external URL is excluded()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given HTTP external URL and allowInsecure true and not on home network when calling getApiUrls then external URL is included()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given HTTP internal URL and prioritizeInternal true and allowInsecure false and not on home network when calling getApiUrls then internal URL is excluded()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given HTTPS external URL and allowInsecure false and not on home network when calling getApiUrls then external URL is included()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given HTTPS internal URL and prioritizeInternal true and allowInsecure false and not on home network when calling getApiUrls then internal URL is included()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given not on home network and has cloudhookUrl when calling getApiUrls then cloudhookUrl is first()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given on home network when calling getApiUrls then internal URL is first()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given on home network with cloudhookUrl when calling getApiUrls then internal is first followed by cloudhookUrl()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ Given prioritizeInternal true when calling getApiUrls then internal URL is first()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ getApiUrls returns empty list when webhookId=" "
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ getApiUrls returns empty list when webhookId=""
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetApiUrls ‑ getApiUrls returns empty list when webhookId=null
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetExternalUrl ‑ Given invalid external URL when calling getExternalUrl then returns null()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetExternalUrl ‑ Given useCloud true and cloudUrl available when calling getExternalUrl then returns cloud URL()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetExternalUrl ‑ getExternalUrl returns external URL: useCloud="false", cloudUrl="https://cloud.example.com"
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetExternalUrl ‑ getExternalUrl returns external URL: useCloud="true", cloudUrl="null"
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given both location permission denied and services disabled then locationEnabled is false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given device is on home network via SSID then isOnHomeNetwork returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given device is on home network via VPN then isOnHomeNetwork returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given device is on home network via ethernet then isOnHomeNetwork returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given location permission denied then locationEnabled is false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given location services disabled then locationEnabled is false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given no internalSsids and null internalVpn and internalEthernet then hasHomeSetup is false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given not on home network and Ethernet enabled then hasHomeSetup is true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given not on home network and VPN enabled then hasHomeSetup is true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given not on home network and has internalSSID then hasHomeSetup is true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$GetSecurityState ‑ Given not on home network and no home setup then hasHomeSetup is false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$IsInternal ‑ Given SSID configured and using matching WiFi when calling isInternal then returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$IsInternal ‑ Given SSID configured but not using WiFi when calling isInternal then returns false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$IsInternal ‑ Given VPN enabled and using VPN when calling isInternal then returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$IsInternal ‑ Given ethernet enabled and using ethernet when calling isInternal then returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$IsInternal ‑ Given no home network configuration when calling isInternal then returns false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$IsInternal ‑ Given requiresUrl false and no internal URL but using ethernet when calling isInternal then checks network state and returns true()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$IsInternal ‑ Given requiresUrl true and no internal URL when calling isInternal then returns false()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$UrlFlow ‑ Given HTTP URL with allowInsecure false and not internal when collecting urlFlow then emits InsecureState()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$UrlFlow ‑ Given HTTP URL with allowInsecure false but on home network when collecting urlFlow then emits HasUrl()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$UrlFlow ‑ Given HTTP URL with allowInsecure null when collecting urlFlow then emits HasUrl for backwards compatibility()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$UrlFlow ‑ Given HTTP URL with allowInsecure true when collecting urlFlow then emits HasUrl()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$UrlFlow ‑ Given HTTPS URL when collecting urlFlow then emits HasUrl()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$UrlFlow ‑ Given isInternalOverride returns true when collecting urlFlow then uses internal URL()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$UrlFlow ‑ Given on home network when collecting urlFlow then uses internal URL()
io.homeassistant.companion.android.common.data.servers.ServerConnectionStateProviderImplTest$UrlFlow ‑ Given useCloud true and cloudUrl available when collecting urlFlow then uses cloud URL()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$ActivateServerTest ‑ Given SERVER_ID_ACTIVE when activateServer then does nothing()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$ActivateServerTest ‑ Given valid id when activateServer then stores in localStorage()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$AddServerTest ‑ Given TemporaryServer when addServer then adds to DAO and return new ID()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$AuthenticationRepositoryTest ‑ Given SERVER_ID_ACTIVE when authenticationRepository then resolves to active server()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$AuthenticationRepositoryTest ‑ Given no server exists when authenticationRepository then throws()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$AuthenticationRepositoryTest ‑ Given repository already created when authenticationRepository called again then returns cached instance()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$AuthenticationRepositoryTest ‑ Given slow factory when concurrent authenticationRepository calls then creates only one instance()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$AuthenticationRepositoryTest ‑ Given valid serverId when authenticationRepository then returns repository()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$ConnectionStateProviderTest ‑ Given no server exists when connectionStateProvider then throws()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$ConnectionStateProviderTest ‑ Given slow factory when concurrent connectionStateProvider calls then creates only one instance()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$ConnectionStateProviderTest ‑ Given valid serverId when connectionStateProvider then returns provider()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$GetServerByIdTest ‑ Given active server set when getServer with SERVER_ID_ACTIVE then returns active server()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$GetServerByIdTest ‑ Given no active server and no servers when getServer with SERVER_ID_ACTIVE then returns null()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$GetServerByIdTest ‑ Given no active server but servers exist when getServer with SERVER_ID_ACTIVE then returns last server()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$GetServerByIdTest ‑ Given server exists when getServer with id then returns server()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$GetServerByIdTest ‑ Given server not found when getServer with id then returns null()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$GetServerByWebhookIdTest ‑ Given server exists when getServer with webhookId then returns server()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$GetServerByWebhookIdTest ‑ Given server not found when getServer with webhookId then returns null()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$IntegrationRepositoryTest ‑ Given no server exists when integrationRepository then throws()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$IntegrationRepositoryTest ‑ Given slow factory when concurrent integrationRepository calls then creates only one instance()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$IntegrationRepositoryTest ‑ Given valid serverId when integrationRepository then returns repository()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$IsRegisteredTest ‑ Given multiple servers with one connected when isRegistered then returns true()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$IsRegisteredTest ‑ Given no servers when isRegistered then returns false()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$IsRegisteredTest ‑ Given server has no webhookId when isRegistered then returns false()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$IsRegisteredTest ‑ Given server with webhookId and with anonymous session when isRegistered then returns false()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$IsRegisteredTest ‑ Given server with webhookId and with connected session when isRegistered then returns true()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$RemoveServerTest ‑ Given active server when removeServer then clears active server from localStorage()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$RemoveServerTest ‑ Given non-active server when removeServer then does not clear active server()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$RemoveServerTest ‑ Given server when removeServer then cleans up all resources in order()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$RemoveServerTest ‑ Given server with webSocketRepo when removeServer then shuts down webSocket()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$ServersFlowTest ‑ Given serversFlow then returns flow from DAO()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$ServersTest ‑ Given no servers when servers then returns empty list()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$ServersTest ‑ Given servers exist when servers then returns all servers from DAO()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$UpdateServerTest ‑ Given server when updateServer then updates in DAO()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$WebSocketRepositoryTest ‑ Given no server exists when webSocketRepository then throws()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$WebSocketRepositoryTest ‑ Given slow factory when concurrent webSocketRepository calls then creates only one instance()
io.homeassistant.companion.android.common.data.servers.ServerManagerImplTest$WebSocketRepositoryTest ‑ Given valid serverId when webSocketRepository then returns repository()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given Active subscription When connection is lost Then subscription is maintained for reconnection()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given InsecureState When connect is invoked Then it returns false and connection state is ClosedOther()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given InsecureState while authenticating When connect in progress Then it fails connection()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given URL changes to null while authenticating When connect in progress Then it fails connection()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given URL flow completes without emitting before connection established When connect is invoked Then it returns false()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given URL observer Active When shutdown called Then URL observer is cancelled()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a connection When shutdown is invoked Then it closes the connection()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a connection When subscribeTo is invoked Then it emits events()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a connection When subscribeTo is invoked and the message is sent properly without any subscriber Then it returns a flow and keeps one Active message subscriber()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a connection When subscribeTo is invoked but the message is not sent properly Then it returns null and removes the message from activeMessages()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a connection When subscribeTo is invoked with a subscriber Then it keeps one Active subscriber until unsubscribed, sends unsubscribe message, and closes the connection()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a connection with an Active message When subscribeTo is invoked and unsubscribed Then it doesn't close the connection()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a connection with an existing subscription When subscribeTo is invoked for the same subscription Then it doesn't send a message again and unsubscribes only when the last subscriber unsubscribe()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a disconnection When sendMessage is invoked Then it returns null()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a message received response When duplicate response arrives Then warning is logged and no crash occurs()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a message waiting for response When response arrives after cancel Then it is handled gracefully()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a message waiting for response When response arrives after timeout Then it is handled gracefully()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a not connected connection When sendBytes is invoked Then it reconnects()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a not connected connection When sendMessage is invoked Then it reconnects()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a valid configuration for 2020 1 1 server When connect is invoked Then it returns true and connection state is Active()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given a valid configuration for 2023 1 1 server When connect is invoked Then it returns true, sends the supported_features message, and connection state is Active()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active connection When URL changes to a different URL Then it cancels the connection()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active connection When URL emits the same value Then it does not cancel the connection()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active connection When multiple sendMessage calls are made concurrently Then messages are serialized in order()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active connection When sendBytes is invoked Then it returns the connection send result()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active connection When state changes to InsecureState Then it cancels without attempt to create a new socket()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active connection that does not respond within timeout When sendMessage is invoked Then it returns null()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active connection that responds to a request When sendMessage is invoked Then it returns a socketResponse and removes the Active message()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active connection waiting for response When sendMessage coroutine is cancelled Then message is removed from activeMessages()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active subscription When URL changes Then it reconnects immediately without delay()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active subscription When disconnection occurs Then it re-sends a request to get events()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active subscription When disconnection occurs Then it waits before reconnecting()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an Active subscription When unsubscribing Then subscription remains in activeMessages until unsubscribe is acknowledged()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an invalid url When sendMessage is invoked Then it returns null and connection state is ClosedOther()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an invalid url When sendBytes is invoked Then it returns false and connection state is ClosedOther()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given an unknown event received When listening for messages Then it unsubscribes from the event()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given auth fails When reconnecting with valid auth Then it connects()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given auth timeout When 30 seconds pass without auth response Then connect fails()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given connection becomes null during send When sendMessage is invoked Then it returns null()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given failure at socket creation When connect is invoked Then it returns false and connection state is ClosedOther()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given failure to send auth message after socket creation When connect is invoked Then it returns false and connection state is ClosedOther()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given invalid authentication When connect is invoked Then it returns false and connection state is CLOSED_AUTH()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given network failure after auth sent When onFailure called Then connect fails gracefully()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given no URL When connect is invoked Then it returns false and connection state is ClosedOther()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given no connection When multiple connect calls are made Then only one connection is created()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given pending simple messages When connection closes during URL change Then they complete with exception()
Check notice on line 0 in .github
github-actions / Test Results
2518 tests found (test 373 to 757)
There are 2518 tests, see "Raw output" for the list of tests 373 to 757.
Raw output
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given reconnection to a closed connection When sendMessage is invoked Then the unique ID is not reset()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given sendMessage called while authenticating When auth not complete Then it waits for auth and sends()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ Given subscription setup in progress When coroutine is cancelled Then activeMessages is cleaned up()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ [1] ""
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ [1] "http://io.ha"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ [2] "htt://io.ha"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ [2] "https://io.ha"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ [3] "http://192.168.0.42:8123"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ [3] "ws://io.ha"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ [4] "https://192.168.0.42:8123"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketCoreImplTest ‑ [4] "wss://io.ha"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given conversationId When running pipeline Then conversation_id is included()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given no pipelineId When running pipeline Then pipeline is not included()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given no wake word When running pipeline Then wake_word_phrase is not included()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given outputTts="false" When running pipeline Then end_stage is "intent"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given outputTts="true" When running pipeline Then end_stage is "tts"
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given pipelineId When running pipeline Then pipeline is included()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given sampleRate When running pipeline Then sample_rate is included in input()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given server with deviceRegistryId When running pipeline Then device_id is included()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given server without deviceRegistryId When running pipeline Then device_id is not included()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ Given wake word When running pipeline Then wake_word_phrase is included in input()
io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImplTest$RunAssistPipelineForVoice ‑ When running pipeline Then start_stage is always stt()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest ‑ CompressedEntityState decoding with empty attributes()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest ‑ CompressedEntityState decoding with empty data()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest ‑ CompressedEntityState decoding with random data()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest$StateDeserialization ‑ Given absent state when deserializing then returns null()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest$StateDeserialization ‑ Given null state when deserializing then returns null()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest$StateDeserialization ‑ Given numeric state when converting to entity then returns empty state()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest$StateDeserialization ‑ Given numeric state when deserializing then preserves JsonPrimitive()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest$StateDeserialization ‑ Given string state when converting to entity then returns state value()
io.homeassistant.companion.android.common.data.websocket.impl.entities.CompressedEntityTest$StateDeserialization ‑ Given string state when deserializing then preserves JsonPrimitive()
io.homeassistant.companion.android.common.data.websocket.impl.entities.ConversationResponseTest ‑ deserialize ConversationResponse with continueConversation field()
io.homeassistant.companion.android.common.data.websocket.impl.entities.ConversationResponseTest ‑ deserialize ConversationResponse with extra fields()
io.homeassistant.companion.android.common.data.websocket.impl.entities.ConversationResponseTest ‑ deserialize ConversationResponse with missing continueConversation field()
io.homeassistant.companion.android.common.data.websocket.impl.entities.SocketResponseTest ‑ Given a known type when deserializing then it returns proper SocketResponse()
io.homeassistant.companion.android.common.data.websocket.impl.entities.SocketResponseTest ‑ Given an unknown type when deserializing then it returns an UnknownTypeSocketResponse()
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given SDK at or above P when requesting update then min comes from AudioManager
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given SDK below P when requesting update then min defaults to 0
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given changed max attribute when requesting update then force update
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given mismatched attributes when requesting update three times then cache kicks in after force update succeeds
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given mismatched max attribute when requesting update twice then force update each time
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given missing min and max attributes when requesting update then force update with min and max attributes
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given multi-server with all servers having matching attributes then does not force update
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given multi-server with one server having mismatched attributes then force update
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given unchanged attributes when requesting update twice then getFull is only called once
io.homeassistant.companion.android.common.sensors.AudioSensorManagerTest ‑ Given unchanged min and max attributes when requesting update then does not force update
io.homeassistant.companion.android.common.util.AppNotifChannelsTest ‑ Given appCreatedChannels when checking for duplicates then none exist()
io.homeassistant.companion.android.common.util.AppVersionTest ‑ Given AppVersion when serialize to JSON then it works()
io.homeassistant.companion.android.common.util.AppVersionTest ‑ Given JSON when deserialize to AppVersion then it works()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given audio focus request fails when playAudio then still plays audio()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given getStreamVolume throws RuntimeException when playAudio then still plays audio()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given isAssistant false when playAudio then uses media audio attributes()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given null audioManager when playAudio then does not play audio nor create an instance of ExoPlayer()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given player error when playAudio then releases player without emitting states()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given stream ends with EOF when playAudio then emits STOP_PLAYING()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given successful playback when flow completes then player is released and focus abandoned with same request()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given volume above 0 and url when playAudio then emits READY, PLAYING, STOP_PLAYING()
io.homeassistant.companion.android.common.util.AudioUrlPlayerTest ‑ Given volume equal to 0 when playAudio then emits nothing and no audio is played()
io.homeassistant.companion.android.common.util.BroadcastReceiverExtTest ‑ Given a block completing just before timeout when launchAsync then block completes and finish is called()
io.homeassistant.companion.android.common.util.BroadcastReceiverExtTest ‑ Given a block exceeding timeout when launchAsync then block is cancelled and finish is called()
io.homeassistant.companion.android.common.util.BroadcastReceiverExtTest ‑ Given a failing block when launchAsync then finish is still called()
io.homeassistant.companion.android.common.util.BroadcastReceiverExtTest ‑ Given a short task when launchAsync then block executes and finish is called()
io.homeassistant.companion.android.common.util.CheckLocalNetworkPermissionUseCaseTest ‑ Given permission flips from missing to granted between calls when invoked twice then second call cancels notification()
io.homeassistant.companion.android.common.util.CheckLocalNetworkPermissionUseCaseTest ‑ Given permission granted when invoked then returns true and cancels notification()
io.homeassistant.companion.android.common.util.CheckLocalNetworkPermissionUseCaseTest ‑ Given permission missing and a server with local external URL when invoked then returns false and shows notification()
io.homeassistant.companion.android.common.util.CheckLocalNetworkPermissionUseCaseTest ‑ Given permission missing and a server with local internal URL when invoked then returns false and shows notification()
io.homeassistant.companion.android.common.util.CheckLocalNetworkPermissionUseCaseTest ‑ Given permission missing and no servers when invoked then returns true and cancels notification()
io.homeassistant.companion.android.common.util.CheckLocalNetworkPermissionUseCaseTest ‑ Given permission missing and only remote servers when invoked then returns true and cancels notification()
io.homeassistant.companion.android.common.util.CheckLocalNetworkPermissionUseCaseTest ‑ Given pre-API-37 device when invoked then returns true and notification handler untouched()
io.homeassistant.companion.android.common.util.FailFastTest ‑ Given a throw when invoking failOnCatch then properly propagate the error and returns fallback value()
io.homeassistant.companion.android.common.util.FailFastTest ‑ Given a throw when invoking failOnCatch then properly propagate the error with custom stacktrace()
io.homeassistant.companion.android.common.util.FailFastTest ‑ Given condition met when invoking failWhen then properly propagate the error()
io.homeassistant.companion.android.common.util.FailFastTest ‑ Given condition not met when invoking failWhen then returns value()
io.homeassistant.companion.android.common.util.FailFastTest ‑ Given no throw when invoking failOnCatch then returns value()
io.homeassistant.companion.android.common.util.IntentExtTest ‑ Given an intent URI targeting our own non-exported component when parsed then redirection is neutralized
io.homeassistant.companion.android.common.util.IntentExtTest ‑ Given intent targeting another app non-exported component when stripped then intent is left untouched
io.homeassistant.companion.android.common.util.IntentExtTest ‑ Given intent targeting our own exported component when stripped then component is kept
io.homeassistant.companion.android.common.util.IntentExtTest ‑ Given intent targeting our own non-exported component when stripped then explicit targeting is removed
io.homeassistant.companion.android.common.util.IntentExtTest ‑ Given intent with an unresolvable component when stripped then intent is left untouched
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given LocalDateTime when serializing then generate valid JSON()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a JsonArray when jsonArrayOrNull is called then returns current element as JsonArray()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a JsonObject when jsonObjectOrNull is called then returns current element as JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a JsonObject with a JsonNull element when jsonArrayOrNull is called then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a JsonObject with a JsonNull element when jsonObjectOrNull is called then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a JsonObject with a JsonPrimitive element when jsonArrayOrNull is called then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a JsonObject with a JsonPrimitive element when jsonObjectOrNull is called then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a json array of strings when toStringList is called then returns a list of strings()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of booleans when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of list of serializable objects when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of list of strings when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of map of strings when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of map with an int key when toJsonObject is called then throws exception()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of numbers(float) when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of numbers(int) when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of objects when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of serializable objects when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map of strings when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map with an object when serializing then it throws()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a map with mixed value types when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getBooleanOrElse on JsonObject then returns fallback()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getBooleanOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getDoubleOrElse on JsonObject then returns fallback()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getDoubleOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getFloatOrElse on JsonObject then returns fallback()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getFloatOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getIntOrElse on JsonObject then returns fallback()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getIntOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getStringOrElse on JsonObject then returns fallback()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a non existing key when getStringOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a string of a date when deserializing then generate a LocalDateTime()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a valid json of a map with Any when deserializing then generates a valid map()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a valid json string that cannot be mapped to a JsonObject when toJsonObjectOrNull is called then returns a null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a valid json string when toJsonObjectOrNull is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given a valid map when serializing then it generates a valid JSON()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an empty map when toJsonObject is called then returns a JsonObject()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an empty string when toJsonObjectOrNull is called then returns a null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with boolean value when getBooleanOrElse on JsonObject then returns value()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with double value when getDoubleOrElse on JsonObject then returns value()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with double value when getDoubleOrNull on JsonObject then returns the value()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with float value when getFloatOrElse on JsonObject then returns value()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with float value when getFloatOrNull on JsonObject then returns the value()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with integer value when getIntOrElse on JsonObject then returns value()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value 1 when getIntOrNull on JsonObject then returns 1()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value empty string when getStringOrElse on JsonObject then returns empty string()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value empty string when getStringOrNull on JsonObject then returns empty string()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value false when getBooleanOrNull on JsonObject then returns false()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value null when getBooleanOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value null when getDoubleOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value null when getFloatOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value null when getIntOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value null when getStringOrNull on JsonObject then returns null()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value true when getBooleanOrNull on JsonObject then returns true()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value when getStringOrElse on JsonObject then returns value()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an existing key with value when getStringOrNull on JsonObject then returns value()
io.homeassistant.companion.android.common.util.JsonUtilTest ‑ Given an invalid json string when toJsonObjectOrNull is called then returns a null()
io.homeassistant.companion.android.common.util.LifecycleExtTest ‑ Given DESTROYED state when calling cancelOnLifecycle then throws IllegalArgumentException()
io.homeassistant.companion.android.common.util.LifecycleExtTest ‑ Given job completes before lifecycle event then job returns normally()
io.homeassistant.companion.android.common.util.LifecycleExtTest ‑ Given job does not complete before lifecycle event then job is canceled()
io.homeassistant.companion.android.common.util.LifecycleExtTest ‑ Given lifecycle in STARTED state when block executes then job completes normally()
io.homeassistant.companion.android.common.util.LocalNetworkPermissionWarningTest ‑ Given cancel when nothing posted then no error
io.homeassistant.companion.android.common.util.LocalNetworkPermissionWarningTest ‑ Given show called twice when one is already visible then second call is a no-op
io.homeassistant.companion.android.common.util.LocalNetworkPermissionWarningTest ‑ Given show called when single server then posts ongoing notification with content intent
io.homeassistant.companion.android.common.util.LocalNetworkPermissionWarningTest ‑ Given show then cancel when called then notification is removed
io.homeassistant.companion.android.common.util.LocalNetworkPermissionWarningTest ‑ Given show when called then channel is registered
io.homeassistant.companion.android.common.util.MessagingTokenTest ‑ Given JSON when deserialize to MessagingToken then it works()
io.homeassistant.companion.android.common.util.MessagingTokenTest ‑ Given MessagingToken when serialize to JSON then it works()
io.homeassistant.companion.android.common.util.PlatformTestSupportJUnit4Test ‑ 1 Given listener-managed test execution when overriding fail-fast handler then current test sees override
io.homeassistant.companion.android.common.util.PlatformTestSupportJUnit4Test ‑ 2 Given previous test changed handler when next Jupiter test starts then listener installs test fail-fast handler
io.homeassistant.companion.android.common.util.PlatformTestSupportJUnitJupiterTest ‑ Given listener-managed test execution when overriding fail-fast handler then current test sees override()
io.homeassistant.companion.android.common.util.PlatformTestSupportJUnitJupiterTest ‑ Given previous test changed handler when next Jupiter test starts then listener installs test fail-fast handler()
io.homeassistant.companion.android.common.util.ResyncRegistrationWorkerTest ‑ Given no servers registered when doWork then return success()
io.homeassistant.companion.android.common.util.ResyncRegistrationWorkerTest ‑ Given servers registered but one throws while getting integration repository when doWork then return failure and update registration and cache only for one server()
io.homeassistant.companion.android.common.util.ResyncRegistrationWorkerTest ‑ Given servers registered but one throws while getting websocket repository when doWork then return failure and update registration and cache only for one server()
io.homeassistant.companion.android.common.util.ResyncRegistrationWorkerTest ‑ Given servers registered when doWork then return success and update registration and cache()
io.homeassistant.companion.android.common.util.ResyncRegistrationWorkerTest ‑ [1] true
io.homeassistant.companion.android.common.util.ResyncRegistrationWorkerTest ‑ [2] false
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given awaitResult when caller is cancelled before resolve then slot is cleared()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given awaitResult when resolve is called then suspend returns the value and slot is cleared()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given awaitResult when resolve is called twice then only the first invocation is used()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given empty queue when emit then slot holds the item()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given empty slot when clear then no-op()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given full slot when second emit then suspends until clear()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given multiple suspended emitters when slot frees then they fill in FIFO order()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given pending emit when awaitResult called then it suspends until the slot is free()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given subscribers when slot transitions then state flow emits each value()
io.homeassistant.companion.android.common.util.SingleSlotQueueTest ‑ Given suspended emitter when its scope cancels then other waiters can still progress()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Audio recording lifecycle ‑ Given 16kHz throws When factory catches and returns 44100Hz recorder Then emits downsampled chunks()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Audio recording lifecycle ‑ Given all collectors cancelled When WhileSubscribed stops Then recorder is stopped and released()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Audio recording lifecycle ‑ Given recorder When multiple chunks read Then emits each chunk()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Audio recording lifecycle ‑ Given recorder with read error When audioData collected Then stops emitting()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Audio recording lifecycle ‑ Given uninitialized recorder When audioData collected Then does not emit()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Downsampling ‑ Given 44100Hz input When downsampled to 16000Hz Then output size is correct()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Downsampling ‑ Given constant signal When downsampled Then output preserves constant value()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Downsampling ‑ Given empty input When downsampled Then returns empty array()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Downsampling ‑ Given linear ramp When downsampled Then interpolates between samples()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Downsampling ‑ Given recorder at fallback rate When audioData collected Then emits downsampled chunks()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Shared flow behavior ‑ Given recorder When audioData called multiple times Then returns same flow instance()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$Shared flow behavior ‑ Given two collectors When both collect Then both receive same audio data()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$toAudioBytes conversion ‑ Given ShortArray When toAudioBytes called Then converts to little-endian ByteArray()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$toAudioBytes conversion ‑ Given ShortArray with negative values When toAudioBytes called Then converts correctly()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$toAudioBytes conversion ‑ Given empty ShortArray When toAudioBytes called Then returns empty ByteArray()
io.homeassistant.companion.android.common.util.VoiceAudioRecorderTest$toAudioBytes conversion ‑ Given multiple samples When toAudioBytes called Then converts all correctly()
io.homeassistant.companion.android.compose.composable.HABannerScreenshotTest ‑ HAHint with content closable_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HABannerScreenshotTest ‑ HAHint with content closable_Light
io.homeassistant.companion.android.compose.composable.HABannerScreenshotTest ‑ HAHint with content not closable_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HABannerScreenshotTest ‑ HAHint with content not closable_Light
io.homeassistant.companion.android.compose.composable.HABannerScreenshotTest ‑ Simple HABanner with content_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HABannerScreenshotTest ‑ Simple HABanner with content_Light
io.homeassistant.companion.android.compose.composable.HAButtonScreenshotTest ‑ HAAccentButton variants_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HAButtonScreenshotTest ‑ HAAccentButton variants_Light
io.homeassistant.companion.android.compose.composable.HAButtonScreenshotTest ‑ HAFilledButton variants_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HAButtonScreenshotTest ‑ HAFilledButton variants_Light
io.homeassistant.companion.android.compose.composable.HAButtonScreenshotTest ‑ HAIconButton variants_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HAButtonScreenshotTest ‑ HAIconButton variants_Light
io.homeassistant.companion.android.compose.composable.HAButtonScreenshotTest ‑ HAPlainButton variants_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HAButtonScreenshotTest ‑ HAPlainButton variants_Light
io.homeassistant.companion.android.compose.composable.HACheckboxScreenshotTest ‑ Simple HACheckbox_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HACheckboxScreenshotTest ‑ Simple HACheckbox_Light
io.homeassistant.companion.android.compose.composable.HADetailsScreenshotTest ‑ HADetails collapsed_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HADetailsScreenshotTest ‑ HADetails collapsed_Light
io.homeassistant.companion.android.compose.composable.HADetailsScreenshotTest ‑ HADetails expanded_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HADetailsScreenshotTest ‑ HADetails expanded_Light
io.homeassistant.companion.android.compose.composable.HADropdownMenuScreenshotTest ‑ HADropdownMenu collapsed_phoneLTR_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.compose.composable.HADropdownMenuScreenshotTest ‑ HADropdownMenu collapsed_phoneRTL_{device=spec:width=411.4dp,height=923.4dp, group=phone, locale=ar}
io.homeassistant.companion.android.compose.composable.HADropdownMenuScreenshotTest ‑ HADropdownMenu collapsed_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.compose.composable.HADropdownMenuScreenshotTest ‑ HADropdownMenu expanded_phoneLTR_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.compose.composable.HADropdownMenuScreenshotTest ‑ HADropdownMenu expanded_phoneRTL_{device=spec:width=411.4dp,height=923.4dp, group=phone, locale=ar}
io.homeassistant.companion.android.compose.composable.HADropdownMenuScreenshotTest ‑ HADropdownMenu expanded_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.compose.composable.HAHorizontalDividerScreenshotTest ‑ HAHorizontalDivider default_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HAHorizontalDividerScreenshotTest ‑ HAHorizontalDivider default_Light
io.homeassistant.companion.android.compose.composable.HALabelScreenshottest ‑ HALabel variants_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HALabelScreenshottest ‑ HALabel variants_Light
io.homeassistant.companion.android.compose.composable.HAModalScreenshotTest ‑ HAModalBottomSheet expanded_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HAModalScreenshotTest ‑ HAModalBottomSheet expanded_Light
io.homeassistant.companion.android.compose.composable.HAModalScreenshotTest ‑ HAModalBottomSheet hidden_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HAModalScreenshotTest ‑ HAModalBottomSheet hidden_Light
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HALoading_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HALoading_Light
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HAProgress for fixed value_Dark_{uiMode=33}_[{provider=io.homeassistant.companion.android.compose.composable.ProgressProvider}]_0
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HAProgress for fixed value_Dark_{uiMode=33}_[{provider=io.homeassistant.companion.android.compose.composable.ProgressProvider}]_1
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HAProgress for fixed value_Dark_{uiMode=33}_[{provider=io.homeassistant.companion.android.compose.composable.ProgressProvider}]_2
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HAProgress for fixed value_Dark_{uiMode=33}_[{provider=io.homeassistant.companion.android.compose.composable.ProgressProvider}]_3
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HAProgress for fixed value_Light_[{provider=io.homeassistant.companion.android.compose.composable.ProgressProvider}]_0
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HAProgress for fixed value_Light_[{provider=io.homeassistant.companion.android.compose.composable.ProgressProvider}]_1
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HAProgress for fixed value_Light_[{provider=io.homeassistant.companion.android.compose.composable.ProgressProvider}]_2
io.homeassistant.companion.android.compose.composable.HAProgressScreenshotTest ‑ HAProgress for fixed value_Light_[{provider=io.homeassistant.companion.android.compose.composable.ProgressProvider}]_3
io.homeassistant.companion.android.compose.composable.HARadioGroupScreenshotTest ‑ HARadioGroup no selection_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HARadioGroupScreenshotTest ‑ HARadioGroup no selection_Light
io.homeassistant.companion.android.compose.composable.HARadioGroupScreenshotTest ‑ HARadioGroup with selection_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HARadioGroupScreenshotTest ‑ HARadioGroup with selection_Light
io.homeassistant.companion.android.compose.composable.HASettingsCardScreenshotTest ‑ Simple HASettingsCard with content_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HASettingsCardScreenshotTest ‑ Simple HASettingsCard with content_Light
io.homeassistant.companion.android.compose.composable.HASwitchScreenshotTest ‑ HASwitch_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HASwitchScreenshotTest ‑ HASwitch_Light
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField disabled_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField disabled_Light
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField with error_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField with error_Light
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField with label_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField with label_Light
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField with placeholder_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField with placeholder_Light
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField_Dark_{uiMode=33}
io.homeassistant.companion.android.compose.composable.HATextFieldScreenshotTest ‑ HATextField_Light
io.homeassistant.companion.android.data.WearDnsTest ‑ Given a cached hostname when making DNS lookup then returns cached results()
io.homeassistant.companion.android.data.WearDnsTest ‑ Given a hostname when making DNS lookup then fails when mobile fails()
io.homeassistant.companion.android.data.WearDnsTest ‑ Given a hostname when making DNS lookup then fails when mobile not present()
io.homeassistant.companion.android.data.WearDnsTest ‑ Given a hostname when making DNS lookup then falls back to mobile dns when present()
io.homeassistant.companion.android.data.WearDnsTest ‑ Given a hostname when making DNS lookup then returns DNS entry()
io.homeassistant.companion.android.data.WearDnsTest ‑ Given a stale cached hostname when making DNS lookup then fetches fresh results()
io.homeassistant.companion.android.data.WearDnsTest ‑ Given an UnknownHostException when making DNS lookup then returns cached failure()
io.homeassistant.companion.android.data.wear.WearDnsRequestListenerTest ‑ Given a request with a DNS lookup path when a request is made the IP address is returned()
io.homeassistant.companion.android.data.wear.WearDnsRequestListenerTest ‑ Given a request without a DNS lookup path when a request is made then no task is returned()
io.homeassistant.companion.android.database.migration.AppDatabaseMigrationTest ‑ migrateFromVersion24ToLatest
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$CanUseCloud ‑ Given blank cloudUrl then canUseCloud is false()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$CanUseCloud ‑ Given no cloudUrl then canUseCloud is false()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$CanUseCloud ‑ Given valid cloudUrl then canUseCloud is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasAtLeastOneUrl ‑ Given all invalid URLs then hasAtLeastOneUrl is false()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasAtLeastOneUrl ‑ Given invalid externalUrl but valid cloudUrl then hasAtLeastOneUrl is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasAtLeastOneUrl ‑ Given invalid externalUrl but valid cloudhookUrl then hasAtLeastOneUrl is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasAtLeastOneUrl ‑ Given invalid externalUrl but valid internalUrl then hasAtLeastOneUrl is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasAtLeastOneUrl ‑ Given valid externalUrl then hasAtLeastOneUrl is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasHomeNetworkSetup ‑ Given internalEthernet enabled then hasHomeNetworkSetup is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasHomeNetworkSetup ‑ Given internalSsids configured then hasHomeNetworkSetup is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasHomeNetworkSetup ‑ Given internalVpn enabled then hasHomeNetworkSetup is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasHomeNetworkSetup ‑ Given multiple home network options configured then hasHomeNetworkSetup is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasHomeNetworkSetup ‑ Given no home network configuration then hasHomeNetworkSetup is false()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasHomeNetworkSetup ‑ Given no internalSsids and internalVpn disabled then hasHomeNetworkSetup is false()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasHomeNetworkSetup ‑ Given no internalSsids and internalVpn null and internalEthernet disabled then hasHomeNetworkSetup is false()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasPlainTextUrl ‑ hasPlainTextUrl is false: external="https://example.com", internal="https://192.168.1.1:8123", cloud="https://cloud.example.com"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasPlainTextUrl ‑ hasPlainTextUrl is false: external="https://example.com", internal="null", cloud="null"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasPlainTextUrl ‑ hasPlainTextUrl is true: external="http://example.com", internal="null", cloud="null"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasPlainTextUrl ‑ hasPlainTextUrl is true: external="https://example.com", internal="http://192.168.1.1:8123", cloud="null"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$HasPlainTextUrl ‑ hasPlainTextUrl is true: external="https://example.com", internal="null", cloud="http://cloud.example.com"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$InternalSsidTypeConverterTest ‑ Given JSON array string then fromStringToList returns list()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$InternalSsidTypeConverterTest ‑ Given empty list then fromListToString returns empty array()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$InternalSsidTypeConverterTest ‑ Given invalid JSON then fromStringToList returns empty list()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$InternalSsidTypeConverterTest ‑ Given list with values then fromListToString returns JSON array()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$InternalSsidTypeConverterTest ‑ Given round trip conversion then values are preserved()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$InternalSsidTypeConverterTest ‑ [1] " "
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$InternalSsidTypeConverterTest ‑ [2] "[]"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsKnownUrl ‑ [1] "https://external.example.com/api/states"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsKnownUrl ‑ [1] "https://unknown.example.com/api"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsKnownUrl ‑ [2] "http://192.168.1.1:8123/api/webhook/abc"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsKnownUrl ‑ [2] "not-a-valid-url"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsKnownUrl ‑ [3] "https://cloud.example.com/some/path"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsRegistered ‑ Given webhookId and valid cloudhookUrl then isRegistered is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsRegistered ‑ Given webhookId and valid externalUrl then isRegistered is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsRegistered ‑ Given webhookId and valid internalUrl then isRegistered is true()
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsRegistered ‑ isRegistered is false: externalUrl="https://example.com", webhookId=" "
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsRegistered ‑ isRegistered is false: externalUrl="https://example.com", webhookId="null"
io.homeassistant.companion.android.database.server.ServerConnectionInfoTest$IsRegistered ‑ isRegistered is false: externalUrl="not-a-valid-url", webhookId="webhook123"
io.homeassistant.companion.android.database.server.ServerTest$FriendlyName ‑ Given nameOverride set then friendlyName returns nameOverride()
io.homeassistant.companion.android.database.server.ServerTest$FriendlyName ‑ Given no nameOverride and blank name then friendlyName returns externalUrl()
io.homeassistant.companion.android.database.server.ServerTest$FriendlyName ‑ Given no nameOverride and name set then friendlyName returns name()
io.homeassistant.companion.android.database.server.ServerTest$FriendlyName ‑ Given no nameOverride and whitespace-only name then friendlyName returns externalUrl()
io.homeassistant.companion.android.database.server.ServerTest$FromTemporaryServer ‑ Given TemporaryServer then Server has default id of 0()
io.homeassistant.companion.android.database.server.ServerTest$FromTemporaryServer ‑ Given TemporaryServer then Server has empty user info()
io.homeassistant.companion.android.database.server.ServerTest$FromTemporaryServer ‑ Given TemporaryServer then creates Server with correct values()
io.homeassistant.companion.android.database.server.ServerTest$FromTemporaryServer ‑ Given TemporaryServer with null allowInsecureConnection then Server preserves null()
io.homeassistant.companion.android.database.server.ServerTest$Version ‑ Given invalid version string then version returns null()
io.homeassistant.companion.android.database.server.ServerTest$Version ‑ Given null version then version returns null()
io.homeassistant.companion.android.database.server.ServerTest$Version ‑ Given valid version string then version returns HomeAssistantVersion()
io.homeassistant.companion.android.database.widget.TodoWidgetEntityTest ‑ Given JSON legacy when parsing to LastUpdateData then it properly parse it()
io.homeassistant.companion.android.database.widget.TodoWidgetEntityTest ‑ Given LastUpdateData when serializing to JSON then it properly serialize it()
io.homeassistant.companion.android.database.widget.TodoWidgetEntityTest ‑ Given two todo widget entity when configuration is not the same and invoking isSameConfiguration then it returns false()
io.homeassistant.companion.android.database.widget.TodoWidgetEntityTest ‑ Given two todo widget entity when configuration is the same and invoking isSameConfiguration then it returns true()
io.homeassistant.companion.android.developer.HAComposeCatalogScreenshotTest ‑ HAButtonsAndIndicatorsScreen_Dark_{device=spec:width=1280dp,height=800dp,dpi=240, uiMode=33}
io.homeassistant.companion.android.developer.HAComposeCatalogScreenshotTest ‑ HAButtonsAndIndicatorsScreen_Light_{device=spec:width=1280dp,height=800dp,dpi=240}
io.homeassistant.companion.android.developer.HAComposeCatalogScreenshotTest ‑ HATextAndBannersScreen_Dark_{device=spec:width=1280dp,height=800dp,dpi=240, uiMode=33}
io.homeassistant.companion.android.developer.HAComposeCatalogScreenshotTest ‑ HATextAndBannersScreen_Light_{device=spec:width=1280dp,height=800dp,dpi=240}
io.homeassistant.companion.android.developer.HAComposeCatalogScreenshotTest ‑ HAUserInputScreen_Dark_{device=spec:width=1280dp,height=800dp,dpi=240, uiMode=33}
io.homeassistant.companion.android.developer.HAComposeCatalogScreenshotTest ‑ HAUserInputScreen_Light_{device=spec:width=1280dp,height=800dp,dpi=240}
io.homeassistant.companion.android.frontend.CheckLocationDisabledUseCaseTest ‑ Given location is disabled and SSID is used when invoked then shows notification()
io.homeassistant.companion.android.frontend.CheckLocationDisabledUseCaseTest ‑ Given location is disabled and sensor requires location when invoked then shows notification()
io.homeassistant.companion.android.frontend.CheckLocationDisabledUseCaseTest ‑ Given location is disabled but no feature needs it when invoked then removes warning()
io.homeassistant.companion.android.frontend.CheckLocationDisabledUseCaseTest ‑ Given location is enabled when invoked then removes warning()
io.homeassistant.companion.android.frontend.CheckLocationDisabledUseCaseTest ‑ Given sensor does not require location when invoked then removes warning()
io.homeassistant.companion.android.frontend.CheckLocationDisabledUseCaseTest ‑ Given sensor requires location but is disabled when invoked then removes warning()
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv ConfiguringDevice_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv ConfiguringDevice_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv ConfiguringDevice_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv ConfiguringDevice_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv ConfiguringDevice_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv ConfiguringDevice_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored not authorized_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored not authorized_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored not authorized_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored not authorized_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored not authorized_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored not authorized_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored unable to connect_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored unable to connect_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored unable to connect_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored unable to connect_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored unable to connect_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Errored unable to connect_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioned_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioned_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioned_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioned_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioned_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioned_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning authorization required_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning authorization required_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning authorization required_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning authorization required_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning authorization required_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning authorization required_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning connecting_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning connecting_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning connecting_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning connecting_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning connecting_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning connecting_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning sending wifi_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning sending wifi_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning sending wifi_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning sending wifi_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning sending wifi_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv Provisioning sending wifi_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv SearchingDevice_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv SearchingDevice_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv SearchingDevice_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv SearchingDevice_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv SearchingDevice_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv SearchingDevice_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth and Location_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth and Location_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth and Location_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth and Location_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth and Location_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth and Location_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth only_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth only_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth only_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth only_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth only_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Bluetooth only_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Location only_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Location only_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Location only_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Location only_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Location only_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenImprovScreenshotTest ‑ FrontendScreen Improv permission rationale Location only_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
Check notice on line 0 in .github
github-actions / Test Results
2518 tests found (test 758 to 1121)
There are 2518 tests, see "Raw output" for the list of tests 758 to 1121.
Raw output
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state with custom view overlay_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state with custom view overlay_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state with custom view overlay_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state with custom view overlay_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state with custom view overlay_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state with custom view overlay_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content state_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog in error state_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog in error state_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog in error state_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog in error state_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog in error state_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog in error state_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with HTTP auth dialog_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with JS confirm dialog_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with JS confirm dialog_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with JS confirm dialog_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with JS confirm dialog_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with JS confirm dialog_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with JS confirm dialog_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with notification permission prompt_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with notification permission prompt_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with notification permission prompt_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with notification permission prompt_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with notification permission prompt_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Content with notification permission prompt_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Error_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Error_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Error_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Error_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Error_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Error_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Insecure state_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Insecure state_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Insecure state_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Insecure state_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Insecure state_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Insecure state_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen LoadServer state_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen LoadServer state_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen LoadServer state_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen LoadServer state_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen LoadServer state_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen LoadServer state_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Loading state_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Loading state_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Loading state_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Loading state_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Loading state_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen Loading state_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen SecurityLevelRequired state_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen SecurityLevelRequired state_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen SecurityLevelRequired state_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen SecurityLevelRequired state_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen SecurityLevelRequired state_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen SecurityLevelRequired state_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner notify dialog_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner notify dialog_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner notify dialog_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner notify dialog_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner notify dialog_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner notify dialog_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner overlay_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner overlay_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner overlay_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner overlay_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner overlay_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.FrontendScreenScreenshotTest ‑ FrontendScreen barcode scanner overlay_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content state then webview is displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content state with customView then overlay is displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content state without customView then overlay is not displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content with ConfiguringDevice when continue clicked then onImprovConnectDevice is called with credentials
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content with Errored when try again clicked then onImprovRestart is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content with Provisioned when continue clicked then onImprovDismiss is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content with SearchingDevice then Improv sheet shows connecting caption
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content with barcodeScanner then scanner overlay is shown
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content with customView when reporter runs then PipReadiness is published with default aspect
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Content with null Improv state then Improv sheet is not displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Error state then error screen with retry button and webview are displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Insecure state then block insecure screen is displayed and webview displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Insecure state when change security level clicked then onChangeSecurityLevel is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Insecure state when help clicked then onHelpClick is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Insecure state when open settings clicked then onOpenSettings is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Insecure state when retry clicked then onRetry is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Insecure state with missingHomeSetup when configure home clicked then onConfigureHomeNetwork is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given LoadServer state then loading indicator and webview are displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given Loading state then loading indicator and webview are displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given SecurityLevelRequired state then security level screen is displayed and webview displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given SecurityLevelRequired state when close clicked then onSecurityLevelDone is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given SecurityLevelRequired state when help clicked then onSecurityLevelHelpClick is called
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given WebView requests camera when permission not granted then system permission dialog is launched for CAMERA
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given WebView requests mic when permission denied then WebView request is denied
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given WebViewCreationError state then error screen with open settings button is displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given a notification dialog over the scanner then it is shown and dismiss invokes callback
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given barcode overlay when back pressed then onBarcodeCancelled false
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given barcode overlay when close icon tapped then onBarcodeCancelled false
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given keepScreenOnEnabled is false then host view keepScreenOn is cleared
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given keepScreenOnEnabled is true then host view keepScreenOn is set
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given keepScreenOnEnabled is true when content leaves composition then keepScreenOn is cleared
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given keepScreenOnEnabled toggles at runtime then host view keepScreenOn follows
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given no customView and no fullscreen player when reporter runs then PipReadiness is null
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given no pending notification permission then notification prompt is not displayed
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given notification prompt displayed when allow clicked and denied then onPermissionResult is called with false
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given notification prompt displayed when allow clicked and granted then onPermissionResult is called with true
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given notification prompt displayed when deny clicked then onPermissionResult is called with false
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given screenOrientation is PORTRAIT when content leaves composition then previous orientation is restored
io.homeassistant.companion.android.frontend.FrontendScreenTest ‑ Given screenOrientation toggles at runtime then activity requestedOrientation follows
io.homeassistant.companion.android.frontend.FrontendViewModelTest$AutoPlayVideoSetting ‑ Given pref flow emits new value when collected then exposed StateFlow reflects it()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$AutoPlayVideoSetting ‑ [1] true
io.homeassistant.companion.android.frontend.FrontendViewModelTest$AutoPlayVideoSetting ‑ [2] false
io.homeassistant.companion.android.frontend.FrontendViewModelTest$BackNavigation ‑ Given Content state when WebView reports back availability then canGoBack reflects it()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$BackNavigation ‑ Given WebView covered by an overlay when it can go back then canGoBack is false()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$BackNavigation ‑ Given a connected server with back history when switching servers then history is cleared and canGoBack is false()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$BackNavigation ‑ Given the frontend connects when content is shown then webViewActions emits ClearHistory()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ConnectionTimeout ‑ Given loading state when connected before timeout then no timeout error()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ConnectionTimeout ‑ Given loading state when connection times out then error state with timeout error()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ConnectivityChecks ‑ Given connectivity checks requested when error occurs then repository is called()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ConnectivityChecks ‑ Given connectivity checks running when repository emits state then viewModel updates state()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ConnectivityChecks ‑ Given connectivity checks with failure when repository emits state then viewModel has failure state()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$CustomView ‑ Given factory client when onHideCustomView then RequestFullscreen false emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$CustomView ‑ Given factory client when onHideCustomView then provided hide callback is invoked()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$CustomView ‑ Given factory client when onShowCustomView then RequestFullscreen true emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$CustomView ‑ Given factory client when onShowCustomView then provided show callback receives the View()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$DerivedFlows ‑ Given error state then errorFlow value matches viewState error without subscribers()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$DerivedFlows ‑ Given url manager returns success then urlFlow value matches viewState url without subscribers()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$DownloadHandling ‑ Given download error result when download requested then emits ShowSnackbar UI event()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$DownloadHandling ‑ Given download requested when downloadManager called then passes current serverId()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$DownloadHandling ‑ Given forwarded result when download requested then no UI event emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$DownloadHandling ‑ Given open with system result when download requested then emits OpenExternalLink event()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$DownloadHandling ‑ Given storage permission denied when download requested then does not call downloadManager()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$DownloadHandling ‑ Given storage permission granted when download requested then proceeds with download()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ErrorFlow ‑ Given WebViewCreationError state when url flow emits new url then error state is preserved()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ErrorFlow ‑ Given error state when onRetry called then error flow is cleared if no error()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ErrorFlow ‑ Given loading state when error occurs then error flow is updated()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ErrorFlow ‑ Given loading state when onWebViewCreationFailed called then state transitions to Error with WebViewCreationError()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ExoPlayer ‑ Given Content state when state transitions out of Content then player is closed()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ExoPlayer ‑ Given ExoPlayerAction message when handled then manager handle is called()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ExoPlayer ‑ Given ViewModel is cleared when onCleared then manager is closed()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ExoPlayer ‑ Given fullscreen false when onExoPlayerFullscreenChanged then manager is notified and RequestFullscreen false emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ExoPlayer ‑ Given fullscreen true when onExoPlayerFullscreenChanged then manager is notified and RequestFullscreen true emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ExoPlayer ‑ Given player is in fullscreen when player state becomes null then RequestFullscreen false is emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ExoPlayer ‑ Given player never entered fullscreen when player state becomes null then no RequestFullscreen is emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FileChooser ‑ Given file chooser triggered then pendingFileChooser exposes the params()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FileChooser ‑ Given pending file chooser when result delivered then filePathCallback receives uris and slot clears()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FileChooser ‑ Given pending file chooser when user cancels then filePathCallback receives null and slot clears()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FirstViewOnStart ‑ Given app not in background when onLeavingApp then does nothing()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FirstViewOnStart ‑ Given config dashboard url when onLeavingApp then navigates()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FirstViewOnStart ‑ Given excluded config url when onLeavingApp then does nothing()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FirstViewOnStart ‑ Given excluded hassio url when onLeavingApp then does nothing()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FirstViewOnStart ‑ Given pref off when onLeavingApp then does nothing()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FirstViewOnStart ‑ Given pref on and allowed url on 2025_6 server when onLeavingApp then clears history and sends navigate()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$FirstViewOnStart ‑ Given pref on and allowed url on old server when onLeavingApp then clears history and emits sidebar fallback()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$HttpAuth ‑ Given auth dialog shown when cancel then snackbar event emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$HttpAuth ‑ Given no stored credentials when auth requested then dialog is shown()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$HttpAuth ‑ Given stored credentials when auth requested then auto-proceeds without dialog()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given ConfigureImprovDevice event when received then handler is invoked with name()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given StartImprovScan event when received then handler is invoked()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given handler emits ReloadAtPath event when collected then state transitions to LoadServer()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given handler emits uiState when collected then Content improvUiState is updated()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given improvScanRequested exposed when collected then mirrors handler scanRequested()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given onImprovConnectDevice when called then forwards to handler()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given onImprovRestart when called then forwards to handler()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given onImprovSheetDismissed when called then handler onDismissed is invoked()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Improv ‑ Given processImprovScanRequests when called then forwards to handler()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$JsConfirm ‑ Given JS confirm received then dialog is exposed via pendingDialog()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$JsConfirm ‑ Given a dialog already shown when second JS confirm arrives then it queues until first is resolved()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$JsConfirm ‑ Given dialog cancelled then JsResult is cancelled and slot clears()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$JsConfirm ‑ Given dialog confirmed then JsResult is confirmed and slot clears()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$KeepScreenOnSetting ‑ Given pref flow emits new value when collected then exposed StateFlow reflects it()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$KeepScreenOnSetting ‑ [1] true
io.homeassistant.companion.android.frontend.FrontendViewModelTest$KeepScreenOnSetting ‑ [2] false
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given EntityAddToActionsSent when collected then no event is emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given EntityAddToExecuted with event when collected then event is forwarded()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given EntityAddToExecuted with null event when collected then no event is emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given NAVIGATE_DASHBOARD gesture on 2025_6 server then clears history and sends navigate()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given WriteNfcTag handler event when collected then NavigateToNfcWrite is emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given an active barcode scan when CloseBarcodeScanner then barcodeScanner is cleared()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given an active barcode scan when NotifyBarcodeScanner then an information dialog is shown()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given an active barcode scan when onBarcodeScanned then result is sent and scanner stays open()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given auth error message result when collected then state transitions to Error()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given connected message result when collected then state transitions to Content()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given content when ShowBarcodeScanner then Content barcodeScanner is set()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given gesture returns SwitchServer when handled then viewState transitions to new server()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given haptic message when collected then webViewActions emits Haptic action()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given onNfcWriteCompleted when called then sends empty-result ResultMessage back to frontend()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given open assist settings message result when collected then NavigateToAssistSettings event is emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given open settings message result when collected then NavigateToSettings event is emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$MessageHandling ‑ Given show assist message result when collected then NavigateToAssist event is emitted()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$NotificationPermission ‑ Given connected then checks notification permission via permission manager()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Permission ‑ Given pending permission then viewModel exposes it from permission manager()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ScreenOrientationSetting ‑ Given pref flow emits new value when collected then exposed StateFlow reflects it()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$ScreenOrientationSetting ‑ Given pref flow seeded with portrait when ViewModel constructed then exposed StateFlow has portrait()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$SecurityLevel ‑ Given insecure state when onShowSecurityLevelScreen called then state transitions to SecurityLevelRequired()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$SecurityLevel ‑ Given security level configured when called then url manager is notified and server reloads()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$SecurityLevel ‑ Given security level required when url result received then show security level state()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$StateTransitions ‑ Given error state when onRetry called then state transitions to LoadServer then Loading()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$StateTransitions ‑ Given multiple servers when switchServer called then state updates to new server()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$StateTransitions ‑ Given url state changes from success to insecure when collecting then insecure state()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlInterception ‑ Given app scheme url when intercepted then emits LaunchApp event and intercepts()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlInterception ‑ Given external url not matching server origin when intercepted then emits OpenExternalLink and intercepts()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlInterception ‑ Given intent scheme url when intercepted then emits LaunchIntent event and intercepts()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlInterception ‑ Given url matching server origin when intercepted then emits no event and lets WebView load()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlLoading ‑ Given url manager returns insecure blocked when initialized then insecure state()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlLoading ‑ Given url manager returns no url available when collecting then error state()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlLoading ‑ Given url manager returns server not found when initialized then error state()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlLoading ‑ Given url manager returns session not connected when initialized then error state()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlLoading ‑ Given url manager returns success when initialized then state is Loading with url()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$UrlLoading ‑ Given url manager returns success with path when initialized then loading state includes path()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Zoom ‑ Given page finishes again then observer restarts with fresh values()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Zoom ‑ Given page finishes then ApplyZoom action is emitted with current settings()
io.homeassistant.companion.android.frontend.FrontendViewModelTest$Zoom ‑ Given page loaded when settings change then ApplyZoom action is emitted without page finish()
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given customView shown when computed then result uses 16 to 9 default
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given fullscreen player and customView when computed then player aspect wins
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given fullscreen player with 1 to 3 ultra-tall aspect when computed then aspect is clamped to min
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given fullscreen player with 16 to 9 aspect when computed then aspect is preserved
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given fullscreen player with 3 to 1 ultra-wide aspect when computed then aspect is clamped to max
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given fullscreen player with 4 to 3 aspect when computed then aspect is preserved
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given fullscreen player without aspect ratio when computed then result uses 16 to 9 default
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given neither customView nor fullscreen player when computed then result is null
io.homeassistant.companion.android.frontend.PipReadinessTest ‑ Given non-fullscreen player without customView when computed then result is null
io.homeassistant.companion.android.frontend.WebViewActionTest ‑ Given ClearHistory when run then clearHistory is called and result completes()
io.homeassistant.companion.android.frontend.WebViewActionTest ‑ Given EvaluateScript when run and callback returns null then result completes with null()
io.homeassistant.companion.android.frontend.WebViewActionTest ‑ Given EvaluateScript when run then evaluateJavascript is called and result completes with callback value()
io.homeassistant.companion.android.frontend.WebViewActionTest ‑ Given Forward when run and canGoForward is false then goForward is not called but result completes()
io.homeassistant.companion.android.frontend.WebViewActionTest ‑ Given Forward when run and canGoForward is true then goForward is called and result completes()
io.homeassistant.companion.android.frontend.WebViewActionTest ‑ Given Haptic when run then HapticFeedbackPerformer is invoked with the type and result completes()
io.homeassistant.companion.android.frontend.WebViewActionTest ‑ Given NavigateToDefaultPanelViaSidebar when run then evaluateJavascript is called and result completes()
io.homeassistant.companion.android.frontend.WebViewActionTest ‑ Given Reload when run then reload is called and result completes()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given AndroidAutoFavorite action when executing then it adds favorite and returns ShowSnackbar()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given CameraWidget action when executing then returns NavigateToWidgetConfig with Camera type()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given EntityWidget action when executing then returns NavigateToWidgetConfig with Entity type()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given MediaPlayerWidget action when executing then returns NavigateToWidgetConfig with MediaPlayer type()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given Shortcut action when executing then returns null()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given Tile action when executing then returns null()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given TodoWidget action when executing then returns NavigateToWidgetConfig with Todo type()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given Watch action when executing then returns null()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given alarm_control_panel entityId on full flavor when getting actionsForEntity then returns EntityWidget and AndroidAutoFavorite()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given alarm_control_panel entityId on minimal flavor when getting actionsForEntity then returns EntityWidget()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given camera entityId when getting actionsForEntity then returns EntityWidget and CameraWidget()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given entity returns null when getting actionsForEntity then return empty list()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given entity throws when getting actionsForEntity then return empty list()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given image entityId when getting actionsForEntity then returns EntityWidget and CameraWidget()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given media player entityId when getting actionsForEntity then returns EntityWidget and MediaPlayerWidget()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given null server when adding AndroidAutoFavorite then call FailFast and returns ShowSnackbar in release()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given null server when getting actionsForEntity then return empty list()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given standard entityId when getting actionsForEntity then returns EntityWidget()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ Given todo entityId when getting actionsForEntity then returns EntityWidget and TodoWidget()
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [1] "light.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [1] "media_player.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [1] "true", "light.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [2] "alarm_control_panel.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [2] "false", "light.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [2] "todo.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [3] "camera.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [3] "media_player.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [3] "true", "alarm_control_panel.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [4] "false", "alarm_control_panel.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [4] "image.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [4] "todo.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [5] "camera.test"
io.homeassistant.companion.android.frontend.addto.FrontendEntityAddToManagerTest ‑ [6] "image.test"
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$AutoProceed ‑ Given no stored credentials when auth requested then shows dialog()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$AutoProceed ‑ Given stored credentials when auth requested then auto-proceeds()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$CredentialPersistence ‑ Given dialog shown when user cancels then handler is cancelled and result is Cancelled()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$CredentialPersistence ‑ Given no stored credentials when user proceeds with remember then inserts into dao()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$CredentialPersistence ‑ Given no stored creds and prior manual proceed when rapid reauth with remember then inserts into dao()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$CredentialPersistence ‑ Given rapid reauth when user proceeds with remember then updates in dao()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$CredentialPersistence ‑ Given rapid reauth when user proceeds without remember then nothing is persisted()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$CredentialPersistence ‑ Given user proceeds without remember then credentials are not persisted()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$MessageFormatting ‑ Given http resource when dialog shown then message contains http and not private warning()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$MessageFormatting ‑ Given https resource when dialog shown then message contains https and required fields()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$RapidReauth ‑ Given no stored credentials when auth requested then dialog is not in auth-error state()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$RapidReauth ‑ Given proceed on resource A when resource B challenges right after then dialog is not in auth-error state()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$RapidReauth ‑ Given stored credentials when auth requested after threshold then auto-proceeds()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$RapidReauth ‑ Given stored credentials when rapid reauth then shows dialog instead of auto-proceeding()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$RapidReauth ‑ Given user cancels when same key challenges right after then dialog is not in auth-error state()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$RapidReauth ‑ Given user proceeds without remember when rapid reauth then dialog shows auth-error()
io.homeassistant.companion.android.frontend.auth.FrontendHttpAuthHandlerTest$RapidReauth ‑ Given user proceeds without remember when same key challenges after threshold then dialog still shows auth-error()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given a notify dialog when dismissed then it clears but scan stays active()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given a scanned format when onScanned then it maps to the frontend wire string()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given an active scan when close then state clears and nothing is sent()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given an active scan when notify then an information dialog is shown with the message()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given an active scan when onCancelled forAction false then sends aborted with canceled()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given an active scan when onCancelled forAction true then sends aborted with alternative_options()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given an active scan when onScanned then sends scan_result and keeps the scanner open()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given an active scan when show is called again then it replaces the state()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given no active scan when notify then no dialog is shown()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given no active scan when onCancelled then nothing is sent()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given no active scan when onScanned then nothing is sent()
io.homeassistant.companion.android.frontend.barcode.FrontendBarcodeScannerHandlerTest ‑ Given show when called then state carries the scan request()
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner camera permission denied_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner camera permission denied_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner camera permission denied_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner camera permission denied_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner camera permission denied_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner camera permission denied_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner with flashlight OFF and action_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner with flashlight OFF and action_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner with flashlight OFF and action_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner with flashlight OFF and action_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner with flashlight OFF and action_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner with flashlight OFF and action_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner with flashlight ON and action
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner without flashlight without action_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner without flashlight without action_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner without flashlight without action_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner without flashlight without action_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner without flashlight without action_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerScreenshotTest ‑ BarcodeScanner without flashlight without action_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission denied when action button tapped then onRequestPermission is called
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission denied when close icon tapped then onCancel is called with false
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission denied when rendered then rationale and action button are displayed
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission granted and alternativeOptionLabel set then action button is displayed
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission granted and device has flashlight then flashlight button is displayed
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission granted and device has no flashlight then flashlight button is not displayed
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission granted and title and description then both are displayed
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission granted when alternative action button tapped then onCancel is called with true
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission granted when close icon tapped then onCancel is called with false
io.homeassistant.companion.android.frontend.barcode.ui.BarcodeScannerTest ‑ Given permission granted when flashlight button tapped then onToggleFlashlight is called
io.homeassistant.companion.android.frontend.dialog.FrontendDialogManagerTest ‑ Given HTTP auth shown when user cancels then suspend returns Cancel()
io.homeassistant.companion.android.frontend.dialog.FrontendDialogManagerTest ‑ Given HTTP auth shown when user proceeds then suspend returns Proceed with credentials()
io.homeassistant.companion.android.frontend.dialog.FrontendDialogManagerTest ‑ Given confirm in flight when scope cancels then slot is cleared()
io.homeassistant.companion.android.frontend.dialog.FrontendDialogManagerTest ‑ Given confirm shown when user cancels then suspend returns false and slot clears()
io.homeassistant.companion.android.frontend.dialog.FrontendDialogManagerTest ‑ Given confirm shown when user confirms then suspend returns true and slot clears()
io.homeassistant.companion.android.frontend.dialog.FrontendDialogManagerTest ‑ Given dialog shown when second show then it queues until first completes()
io.homeassistant.companion.android.frontend.dialog.FrontendDialogManagerTest ‑ Given information shown when user dismisses then suspend returns and slot clears()
io.homeassistant.companion.android.frontend.dialog.FrontendDialogManagerTest ‑ Given isAuthError true when HTTP auth shown then dialog carries the flag()
io.homeassistant.companion.android.frontend.dialog.HttpAuthDialogTest ‑ Given dialog shown then the content is displayed and button enabled
io.homeassistant.companion.android.frontend.dialog.HttpAuthDialogTest ‑ Given fields filled when OK clicked then onProceed receives values
io.homeassistant.companion.android.frontend.dialog.HttpAuthDialogTest ‑ Given isAuthError false when dialog shown then rejection notice is absent
io.homeassistant.companion.android.frontend.dialog.HttpAuthDialogTest ‑ Given isAuthError true when dialog shown then rejection notice is displayed
io.homeassistant.companion.android.frontend.dialog.HttpAuthDialogTest ‑ Given password hidden when toggle visibility clicked then password is shown
io.homeassistant.companion.android.frontend.dialog.HttpAuthDialogTest ‑ Given remember unchecked when OK clicked then onProceed receives false
io.homeassistant.companion.android.frontend.dialog.SimpleConfirmDialogTest ‑ Given dialog shown then title message and buttons are displayed
io.homeassistant.companion.android.frontend.dialog.SimpleConfirmDialogTest ‑ Given dialog shown when Cancel clicked then onCancel is called
io.homeassistant.companion.android.frontend.dialog.SimpleConfirmDialogTest ‑ Given dialog shown when OK clicked then onConfirm is called
io.homeassistant.companion.android.frontend.download.FrontendDownloadManagerTest$BlobDownload ‑ Given blob URL when downloadFile called then evaluates blob trigger script and returns Forwarded()
io.homeassistant.companion.android.frontend.download.FrontendDownloadManagerTest$DataUriDownload ‑ Given data URL when downloadFile called then saves via DataUriDownloadManager and returns Forwarded()
io.homeassistant.companion.android.frontend.download.FrontendDownloadManagerTest$HandleBlob ‑ Given blob data when handleBlob called then saves via DataUriDownloadManager and returns Forwarded()
io.homeassistant.companion.android.frontend.download.FrontendDownloadManagerTest$HttpDownload ‑ Given https URL with safe credentials when downloadFile called then enqueues download with auth and returns Forwarded()
io.homeassistant.companion.android.frontend.download.FrontendDownloadManagerTest$HttpDownload ‑ Given https URL without safe credentials when downloadFile called then enqueues download without auth and returns Forwarded()
io.homeassistant.companion.android.frontend.download.FrontendDownloadManagerTest$HttpDownload ‑ Given null system download manager when downloadFile called with https URL then returns Error()
io.homeassistant.companion.android.frontend.download.FrontendDownloadManagerTest$UnknownScheme ‑ Given unknown scheme URL when downloadFile called then returns OpenWithSystem()
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenTest ‑ Given FrontendConnectionErrorScreen when error and url are not null then error and url info are displayed
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenTest ‑ Given FrontendConnectionErrorScreen when error is not null and url is null then url info is not displayed but the error is
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenTest ‑ Given FrontendConnectionErrorScreen when error is null then nothing is displayed
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenTest ‑ Given FrontendConnectionErrorScreen when url is about blank then url info and connectivity checks are not displayed
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenTest ‑ Given FrontendConnectionErrorScreen with viewmodel when retry is clicked then connectivity check is retried
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen no error_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen no error_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen no error_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen no error_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen no error_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen no error_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
Check notice on line 0 in .github
github-actions / Test Results
2518 tests found (test 1122 to 1489)
There are 2518 tests, see "Raw output" for the list of tests 1122 to 1489.
Raw output
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with AuthenticationError_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with AuthenticationError_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with AuthenticationError_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with AuthenticationError_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with AuthenticationError_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with AuthenticationError_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnknownError_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnknownError_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnknownError_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnknownError_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnknownError_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnknownError_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnreachableError_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnreachableError_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnreachableError_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnreachableError_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnreachableError_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with UnreachableError_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with WebViewCreationError and blank URL_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with WebViewCreationError and blank URL_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with WebViewCreationError and blank URL_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with WebViewCreationError and blank URL_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with WebViewCreationError and blank URL_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with WebViewCreationError and blank URL_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with error expanded_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with error expanded_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with error expanded_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with error expanded_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with error expanded_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with error expanded_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with null url expanded_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with null url expanded_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with null url expanded_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with null url expanded_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with null url expanded_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.frontend.error.FrontendConnectionErrorScreenshotTest ‑ FrontendConnectionErrorScreen with null url expanded_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Close ‑ Given already closed when closed again then safe()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Close ‑ Given not playing when closed then no crash()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Close ‑ Given playing when closed then player is released()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Fullscreen ‑ Given not playing when fullscreen changed then state stays null()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Fullscreen ‑ Given playing when fullscreen changed then state reflects it()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$PlayHls ‑ Given play_hls when handled then player prepares with media item()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$PlayHls ‑ Given play_hls when handled then state contains the player()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$PlayHls ‑ Given play_hls with muted when handled then player volume is 0()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$PlayHls ‑ Given play_hls without muted when handled then player volume is 1()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$PlayHls ‑ Given two play_hls when handled then player is reused()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Resize ‑ Given aspect ratio known when zero-height resize then height computed from aspect ratio()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Resize ‑ Given not playing when resize then state stays null()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Resize ‑ Given playing when resize then state has correct position and size()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Resize ‑ Given prior zero-height resize when video size changed then size is auto-computed from ratio()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Resize ‑ Given zero-height resize without known aspect ratio when handled then state size has zero height()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Stop ‑ Given not playing when stop then no crash()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Stop ‑ Given playing when stop then player stop is called()
io.homeassistant.companion.android.frontend.exoplayer.FrontendExoPlayerManagerTest$Stop ‑ Given playing when stop then state is null()
io.homeassistant.companion.android.frontend.externalbus.FrontendExternalBusRepositoryTest ‑ Given config-get message when received then emit ConfigGetMessage()
io.homeassistant.companion.android.frontend.externalbus.FrontendExternalBusRepositoryTest ‑ Given connection-status message when received then emit ConnectionStatusMessage()
io.homeassistant.companion.android.frontend.externalbus.FrontendExternalBusRepositoryTest ‑ Given evaluateScript called then suspend until result is completed()
io.homeassistant.companion.android.frontend.externalbus.FrontendExternalBusRepositoryTest ‑ Given message without id when received then id is null()
io.homeassistant.companion.android.frontend.externalbus.FrontendExternalBusRepositoryTest ‑ Given non-object JsonElement when received then do not emit()
io.homeassistant.companion.android.frontend.externalbus.FrontendExternalBusRepositoryTest ‑ Given object without type when received then emit UnknownIncomingMessage()
io.homeassistant.companion.android.frontend.externalbus.FrontendExternalBusRepositoryTest ‑ Given outgoing message when sent then emit as EvaluateScript on webViewActions flow()
io.homeassistant.companion.android.frontend.externalbus.FrontendExternalBusRepositoryTest ‑ Given unknown type when received then emit UnknownIncomingMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticMessageTest ‑ Given haptic JSON with all known types then parses to correct HapticType()
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticMessageTest ‑ Given haptic JSON with id then parses id correctly()
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticMessageTest ‑ Given haptic JSON with success type then parses to HapticMessage with Success()
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticMessageTest ‑ Given haptic JSON with unknown type then parses to Unknown()
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ Given empty haptic string when deserialize then returns Unknown()
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ Given unknown haptic string when deserialize then returns Unknown()
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ [1] SUCCESS
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ [2] WARNING
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ [3] FAILURE
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ [4] LIGHT
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ [5] MEDIUM
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ [6] HEAVY
io.homeassistant.companion.android.frontend.externalbus.incoming.HapticTypeTest ‑ [7] SELECTION
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given Improv configure_device JSON then parses to ImprovConfigureDeviceMessage with name()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given Improv scan JSON then parses to ImprovScanMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given Improv scan JSON without id then parses to ImprovScanMessage with null id()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given Matter commission JSON then parses to MatterCommissionMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given Matter commission JSON without id then parses to MatterCommissionMessage with null id()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given Thread import_credentials JSON then parses to ThreadImportCredentialsMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given Thread import_credentials JSON without id then parses to ThreadImportCredentialsMessage with null id()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given assist-settings JSON then parses to OpenAssistSettingsMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given assist-show JSON then parses to OpenAssistMessage with payload()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given assist-show JSON without payload then parses to OpenAssistMessage with defaults()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given bar_code close JSON with id then parses to BarcodeCloseMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given bar_code close JSON without id then parses to BarcodeCloseMessage with null id()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given bar_code notify JSON then parses to BarcodeNotifyMessage with message()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given bar_code scan JSON with full payload then parses to BarcodeScanMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given bar_code scan JSON without alternative_option_label then parses with null label()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given config-get JSON then parses to ConfigGetMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given config_screen-show JSON then parses to OpenSettingsMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given connection-status JSON then parses to ConnectionStatusMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given entity add_to JSON then parses to EntityAddToMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given entity add_to get_actions JSON then parses to EntityAddToGetActionsMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given exoplayer play_hls JSON with full payload then parses to ExoPlayerPlayHlsMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given exoplayer play_hls JSON without muted then parses with muted defaulting to false()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given exoplayer play_hls JSON without payload then parses with default payload()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given exoplayer resize JSON with fractional pixels then parses payload as floats()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given exoplayer resize JSON without payload then parses with zero defaults()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given exoplayer stop JSON then parses to ExoPlayerStopMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given handleBlob JSON then parses to HandleBlobMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given tag-write JSON with tag then parses to TagWriteMessage with tag()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given tag-write JSON without payload then parses to TagWriteMessage with null tag()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given theme-update JSON then parses to ThemeUpdateMessage()
io.homeassistant.companion.android.frontend.externalbus.incoming.IncomingExternalBusMessageTest ‑ Given unknown type JSON then parses to UnknownIncomingMessage()
io.homeassistant.companion.android.frontend.externalbus.outgoing.CommandMessageTest ‑ Given BarcodeScanAbortedMessage forAction false when serializing then reason is canceled()
io.homeassistant.companion.android.frontend.externalbus.outgoing.CommandMessageTest ‑ Given BarcodeScanAbortedMessage forAction true when serializing then reason is alternative_options()
io.homeassistant.companion.android.frontend.externalbus.outgoing.CommandMessageTest ‑ Given BarcodeScanResultMessage when serializing then produces bar_code scan_result command()
io.homeassistant.companion.android.frontend.externalbus.outgoing.CommandMessageTest ‑ Given ImprovDeviceSetupDoneMessage when serializing then produces command without payload()
io.homeassistant.companion.android.frontend.externalbus.outgoing.CommandMessageTest ‑ Given ImprovDiscoveredDeviceMessage when serializing then produces command with name payload()
io.homeassistant.companion.android.frontend.externalbus.outgoing.CommandMessageTest ‑ Given NavigateToMessage with replace when serializing then produces correct JSON()
io.homeassistant.companion.android.frontend.externalbus.outgoing.CommandMessageTest ‑ Given NavigateToMessage without replace when serializing then defaults replace to false()
io.homeassistant.companion.android.frontend.externalbus.outgoing.CommandMessageTest ‑ Given ShowSidebarMessage when serializing then produces correct JSON without payload()
io.homeassistant.companion.android.frontend.externalbus.outgoing.OutgoingExternalBusMessageTest ‑ Given ConfigResult then default values are correct()
io.homeassistant.companion.android.frontend.externalbus.outgoing.OutgoingExternalBusMessageTest ‑ Given EntityAddToActions response when serializing then JSON uses snake_case fields()
io.homeassistant.companion.android.frontend.externalbus.outgoing.OutgoingExternalBusMessageTest ‑ Given a result config message when serializing then it generates valid JSON()
io.homeassistant.companion.android.frontend.externalbus.outgoing.OutgoingExternalBusMessageTest ‑ Given device without BLE when serializing config then canSetupImprov is false()
io.homeassistant.companion.android.frontend.filechooser.FileChooserManagerTest ‑ Given chooser already pending when second pickFiles then it suspends until first completes()
io.homeassistant.companion.android.frontend.filechooser.FileChooserManagerTest ‑ Given pickFiles called when result delivered then suspend returns the uris and slot clears()
io.homeassistant.companion.android.frontend.filechooser.FileChooserManagerTest ‑ Given pickFiles called when user cancels then suspend returns null and slot clears()
io.homeassistant.companion.android.frontend.filechooser.FileChooserManagerTest ‑ Given pickFiles in flight when scope cancels then slot is cleared()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given NAVIGATE_DASHBOARD when handleGesture then returns NavigateToDefaultDashboard()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given NAVIGATE_FORWARD when handleGesture then returns WebViewAction Forward()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given NAVIGATE_RELOAD when handleGesture then returns WebViewAction Reload()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given NONE action when handleGesture then returns Ignored()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given OPEN_APP_DEVELOPER when handleGesture then returns Navigate to Developer Settings()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given OPEN_APP_SETTINGS when handleGesture then returns Navigate to Settings()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given OPEN_ASSIST when handleGesture then returns Navigate to Assist()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given QUICKBAR_COMMANDS when handleGesture then dispatches C key()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given QUICKBAR_DEFAULT and old server when handleGesture then dispatches E key()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given QUICKBAR_DEFAULT and server 2026_2 when handleGesture then dispatches Ctrl+K()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given QUICKBAR_ENTITIES when handleGesture then dispatches E key()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SERVER_LIST when handleGesture then returns Navigate ShowServerSwitcher()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SERVER_NEXT on last server when handleGesture then wraps around to first server()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SERVER_NEXT when handleGesture then returns SwitchServer with next server in list order()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SERVER_NEXT with current server not in list when handleGesture then returns Ignored()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SERVER_NEXT with only one server when handleGesture then returns Ignored()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SERVER_PREVIOUS on first server when handleGesture then wraps around to last server()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SERVER_PREVIOUS when handleGesture then returns SwitchServer with previous server in list order()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SERVER_PREVIOUS with only one server when handleGesture then returns Ignored()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given SHOW_SIDEBAR action when handleGesture then sends ShowSidebarMessage()
io.homeassistant.companion.android.frontend.gesture.FrontendGestureManagerTest ‑ Given unsupported pointer count when handleGesture then returns Ignored()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given Improv configure_device message when messageResults then emits ConfigureImprovDevice with name()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given Improv scan message when messageResults then emits StartImprovScan()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given Matter commission message when messageResults then emits StartMatterCommissioning with id()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given Matter commission message without id when messageResults then emits StartMatterCommissioning with null id()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given Thread import_credentials message when messageResults then emits ImportThreadCredentials with id()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given Thread import_credentials message without id when messageResults then emits ImportThreadCredentials with null id()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given automotive device when config get then hasBarCodeScanner is 0()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given bar_code close message when messageResults then emits CloseBarcodeScanner()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given bar_code notify message when messageResults then emits NotifyBarcodeScanner with message()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given bar_code scan message with full payload when messageResults then emits ShowBarcodeScanner()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given bar_code scan message without alternative_option_label when messageResults then label is null()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given bar_code scan message without id when messageResults then ShowBarcodeScanner messageId is -1()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given config get message when messageResults then config response contains all expected fields()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given config get message when messageResults then emits ConfigSent and sends response()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given connected status message when messageResults then emits Connected()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given device without camera when config get then hasBarCodeScanner is 0()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given device without capabilities when config get then config response has false values()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given disconnected status message when messageResults then emits Disconnected()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given entity add_to get_actions message when messageResults then sends response and emits EntityAddToActionsSent()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given entity add_to message when messageResults then emits EntityAddToExecuted with event from handler()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given exoplayer play_hls message with URL when messageResults then emits PlayHls and sends success result()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given exoplayer play_hls message without URL when messageResults then emits UnknownMessage and sends nothing()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given exoplayer resize message when messageResults then emits Resize with payload values()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given exoplayer stop message when messageResults then emits Stop()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given failed auth with error when getExternalAuth then evaluates callback and emits AuthError()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given failed auth without error when getExternalAuth then evaluates callback only()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given failed revoke when revokeExternalAuth then evaluates failure callback()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given force true when getExternalAuth then passes force to sessionManager()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given handle blob message when messageResults then emits DownloadCompleted with result()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given haptic messages when messageResults then emits PerformHaptic with correct types()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given message when externalBus then forwards to repository()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given open assist message when messageResults then emits ShowAssist with payload()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given open assist settings message when messageResults then emits OpenAssistSettings()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given open settings message when messageResults then emits OpenSettings()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given successful auth when getExternalAuth then evaluates success callback()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given successful revoke when revokeExternalAuth then evaluates success callback()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given tag write message with tag when messageResults then emits WriteNfcTag with tagId()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given tag write message without id when messageResults then emits WriteNfcTag with messageId -1()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given tag write message without tag when messageResults then emits WriteNfcTag with null tagId()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given theme update message when messageResults then emits ThemeUpdated()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given unknown message when messageResults then emits UnknownMessage()
io.homeassistant.companion.android.frontend.handler.FrontendMessageHandlerTest ‑ Given webViewActions flow when webViewActions then returns repository flow()
io.homeassistant.companion.android.frontend.haptic.HapticFeedbackPerformerTest ‑ Given failure type on API 30 when perform then calls REJECT
io.homeassistant.companion.android.frontend.haptic.HapticFeedbackPerformerTest ‑ Given heavy type when perform then calls LONG_PRESS
io.homeassistant.companion.android.frontend.haptic.HapticFeedbackPerformerTest ‑ Given light type when perform then calls KEYBOARD_TAP
io.homeassistant.companion.android.frontend.haptic.HapticFeedbackPerformerTest ‑ Given medium type when perform then calls VIRTUAL_KEY
io.homeassistant.companion.android.frontend.haptic.HapticFeedbackPerformerTest ‑ Given selection type on API 30 when perform then calls GESTURE_START
io.homeassistant.companion.android.frontend.haptic.HapticFeedbackPerformerTest ‑ Given success type on API 30 when perform then calls CONFIRM
io.homeassistant.companion.android.frontend.haptic.HapticFeedbackPerformerTest ‑ Given warning type on API 30 when perform then vibrates with EFFECT_HEAVY_CLICK
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given Errored state when late Provisioned event arrives then device_setup_done is not sent()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given active scan when onDismissed then scanRequested flips false()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given device already discovered before onConfigureImprovDevice then state initialises directly to ConfiguringDevice()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given device without BLE when onStartImprovScan then scanRequested stays false()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given missing permissions when onStartImprovScan then delegates to permissionManager()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given onConfigureImprovDevice when handled then uiState is initialised to SearchingDevice()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given onConnectDevice and PROVISIONED event then sends device_setup_done()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given onConnectDevice while still SearchingDevice then provisionDevice is not called()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given onDismissed with provisioned domain on new HA then sends NavigateToMessage()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given onDismissed with provisioned domain on old HA then emits ReloadAtPath event()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given onDismissed without provisioned domain then clears uiState()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given onRestart from Errored then reverts to ConfiguringDevice with same device()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given onRestart while still SearchingDevice then state is unchanged()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given permissionManager denies improv permissions when onStartImprovScan then scanRequested stays false()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given permissions granted when onStartImprovScan then scanRequested flips true()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given provisioning emits state changes then uiState mirrors them()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given scan collector cancelled and resubscribed while session still active then previously sent device names are not re-sent()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given scan emits matching device when SearchingDevice then state promotes to ConfiguringDevice()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given scan is running when devices are discovered then forwards each new name once()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given scanRequested false when processImprovScanRequests then nothing is sent to frontend()
io.homeassistant.companion.android.frontend.improv.FrontendImprovHandlerTest ‑ Given scanRequested true when scan emits then device name is forwarded to frontend()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$DeviceListReset ‑ Given device discovered when onStateChange PROVISIONED then device list is cleared()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$HasPermissions ‑ Given all permissions granted when hasPermissions then returns true()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$HasPermissions ‑ Given one permission missing when hasPermissions then returns false()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$OnDeviceFound ‑ Given different devices found when scanDevices collected then list grows()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$OnDeviceFound ‑ Given same device found twice when scanDevices collected then list contains it once()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given AUTHORIZED state when provisioning then sendWifi is called exactly once()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given NO_ERROR state when provisioning then no ErrorOccurred emitted()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given PROVISIONED state with RPC result when provisioning then emits Provisioned with parsed domain and completes()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given PROVISIONED state without RPC result when provisioning then domain is null()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given connectToDevice throws SecurityException when provisioning then flow closes with exception()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given error state when provisioning then emits ErrorOccurred()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given onConnectionStateChange null then RPC result is cleared()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given provisionDevice when collected then connectToDevice is called()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ProvisionDevice ‑ Given sendWifi throws SecurityException when provisioning then flow closes with exception()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$RequiredPermissions ‑ Given SDK 31 plus when requiredPermissions then includes new BLUETOOTH permissions plus location()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$RequiredPermissions ‑ Given SDK below 31 when requiredPermissions then includes legacy BLUETOOTH permissions plus location()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ScanDevices ‑ Given findDevices throws SecurityException when subscribed then exception is swallowed()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ScanDevices ‑ Given findDevices throws generic Exception when subscribed then exception is swallowed()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ScanDevices ‑ Given permissions granted when scanDevices subscribed then findDevices is called()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ScanDevices ‑ Given permissions missing when scanDevices subscribed then findDevices is not called()
io.homeassistant.companion.android.frontend.improv.ImprovRepositoryImplTest$ScanDevices ‑ Given scanDevices subscription cancelled then stopScan is called after idle window()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$AttachToWebView ‑ Given V2 server and WebMessageListener supported then registers V2 listener()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$AttachToWebView ‑ Given V2 server but WebMessageListener not supported then falls back to V1()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$AttachToWebView ‑ Given null server then registers V1 interface()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$AttachToWebView ‑ Given old server with WebMessageListener supported then removes V2 and registers V1()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$CallbackValidation ‑ [1] V1
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$CallbackValidation ‑ [2] V2
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$Deserialization ‑ Given known type in JSON when deserialized then produces correct variant()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$Deserialization ‑ Given unknown type in JSON when deserialized then produces Unknown variant()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$DetachFromWebView ‑ Given WebMessageListener not supported then removes only V1 interface()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$DetachFromWebView ‑ Given WebMessageListener supported then removes both V1 interface and V2 listener()
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$Dispatching ‑ [1] V1
io.homeassistant.companion.android.frontend.js.FrontendJsBridgeTest$Dispatching ‑ [2] V2
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given LaunchApp event then onLaunchApp is called with the package name
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given LaunchIntent event then onLaunchIntent is called with the intent uri
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given NavigateToAssist event then onNavigateToAssist is called with correct params
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given NavigateToAssistSettings event then onNavigateToSettings is called with deeplink
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given NavigateToDeveloperSettings event then onNavigateToSettings is called with Developer deeplink
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given NavigateToNfcWrite event then onNavigateToNfcWrite is called with messageId and tagId
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given NavigateToNfcWrite event without tagId then onNavigateToNfcWrite is called with null tagId
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given NavigateToSettings event then onNavigateToSettings is called
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given NavigateToWidgetConfig event then onNavigateToWidgetConfig is called with entityId and widgetType
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given OpenExternalLink event then onOpenExternalLink is called with the URI
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given RequestFullscreen false event then onRequestFullscreen is called with false
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given RequestFullscreen true event then onRequestFullscreen is called with true
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given ShowServerSwitcher event then onShowServerSwitcher is called
io.homeassistant.companion.android.frontend.navigation.FrontendEventHandlerTest ‑ Given ShowSnackbar event then onShowSnackbar is called with resolved message
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckImprovPermissions ‑ Given all permissions granted then returns true without enqueuing()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckImprovPermissions ‑ Given rationale below cap when called then enqueues Improv with showRationale true()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckImprovPermissions ‑ Given rationale below cap when system dialog grants then returns true()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckImprovPermissions ‑ Given rationale cap reached when called then enqueues Improv with showRationale false()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckImprovPermissions ‑ Given system dialog returns partial grant when called then returns false()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckLocalNetworkPermission ‑ Given API 37 when permission already granted then returns true()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckLocalNetworkPermission ‑ Given API 37 when permission not granted then emits pending request()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckLocalNetworkPermission ‑ Given API 37 when user denies then returns false()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckLocalNetworkPermission ‑ Given pre-API 37 then returns true without checking permission()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ Given hasFcmPushSupport and notifications already granted then persists false()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ Given pre-TIRAMISU device then does nothing()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ hasFcm="false", notifEnabled="false", storedPref="false" -> shouldAsk="false"
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ hasFcm="false", notifEnabled="false", storedPref=null -> shouldAsk="true"
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ hasFcm="false", notifEnabled="true", storedPref="false" -> shouldAsk="false"
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ hasFcm="false", notifEnabled="true", storedPref=null -> shouldAsk="true"
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ hasFcm="true", notifEnabled="false", storedPref="false" -> shouldAsk="false"
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ hasFcm="true", notifEnabled="false", storedPref=null -> shouldAsk="true"
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckNotificationPermission ‑ hasFcm="true", notifEnabled="true", storedPref=null -> shouldAsk="false"
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckStoragePermissionForDownload ‑ Given Q+ device then returns true without checking permission()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckStoragePermissionForDownload ‑ Given pre-Q device when storage permission already granted then returns true()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$CheckStoragePermissionForDownload ‑ Given pre-Q device when storage permission not granted then emits pending request()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$ConcurrentRequestQueuing ‑ Given pending WebView request when notification permission checked then waits and sets after resolution()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$ConcurrentRequestQueuing ‑ Given pending WebView request when storage permission required then waits and sets after resolution()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$ConcurrentRequestQueuing ‑ Given pending storage request when WebView permission requested then waits and sets after resolution()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$ConcurrentRequestQueuing ‑ Given two concurrent requests waiting when each is resolved then both are served sequentially()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$NotificationPermissionResult ‑ Given permission granted when doesn't have FcmPushSupport then inserts websocket settings()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$NotificationPermissionResult ‑ Given user dismisses without answering then does not persist preference()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$NotificationPermissionResult ‑ granted=false -> persists do not ask again
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$NotificationPermissionResult ‑ granted=true -> persists do not ask again
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$NotificationPermissionResult ‑ hasFcm="false", granted="false" -> no websocket insert
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$NotificationPermissionResult ‑ hasFcm="true", granted="false" -> no websocket insert
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$NotificationPermissionResult ‑ hasFcm="true", granted="true" -> no websocket insert
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$OnWebViewPermissionRequest ‑ Given both already granted when both requested then auto-grants both without pending request()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$OnWebViewPermissionRequest ‑ Given camera already granted when video capture requested then auto-grants without pending request()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$OnWebViewPermissionRequest ‑ Given camera granted but mic not when both requested then creates pending request for mic only()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$OnWebViewPermissionRequest ‑ Given camera not granted when video capture requested then creates pending request()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$OnWebViewPermissionRequest ‑ Given mic not granted when audio capture requested then creates pending request for RECORD_AUDIO()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$OnWebViewPermissionRequest ‑ Given null request then does nothing()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$OnWebViewPermissionRequest ‑ Given unknown resource then ignores it()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$StoragePermissionResult ‑ Given pending download when permission denied then returns false()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$StoragePermissionResult ‑ Given pending download when permission granted then returns true()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$WebViewPermissionResult ‑ Given camera already granted and mic pending when mic denied then grants only camera()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$WebViewPermissionResult ‑ Given camera already granted and mic pending when mic granted then grants both in single call()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$WebViewPermissionResult ‑ Given pending request when camera granted then grants WebView resource()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$WebViewPermissionResult ‑ Given pending request when permission denied then denies WebView request()
io.homeassistant.companion.android.frontend.permissions.PermissionManagerTest$WebViewPermissionResult ‑ Given pending with both permissions when only mic granted then grants only audio resource()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given anonymous session when isSessionConnected then returns false()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given auth failure and session check failure when getExternalAuth then returns Failed with AuthenticationError()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given auth failure with anonymous session when getExternalAuth then returns Failed with AuthenticationError()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given auth failure with connected session when getExternalAuth then returns Failed without error()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given connected session when isSessionConnected then returns true()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given exception when canSafelySendCredentials then returns false()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given exception when isSessionConnected then returns false()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given forced auth refresh when getExternalAuth then passes force flag()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given no server when canSafelySendCredentials then returns false()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given revoke failure when revokeExternalAuth then returns Failed()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given safe URL when canSafelySendCredentials then returns true()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given successful revoke when revokeExternalAuth then returns Success()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given token build failure when getAuthorizationHeader then returns null()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given unsafe URL when canSafelySendCredentials then returns false()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given valid auth when getExternalAuth then returns Success with callback script()
io.homeassistant.companion.android.frontend.session.ServerSessionManagerTest ‑ Given valid token when getAuthorizationHeader then returns bearer token()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given HTTPS URL with null allowInsecureConnection when serverUrlFlow then returns Success()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given SERVER_ID_ACTIVE when serverUrlFlow then resolves to actual server ID()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given URL state changes to InsecureState and back to HasUrl when serverUrlFlow collecting then emits correct results()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given URL with path when serverUrlFlow then appends path to URL()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given multiple URL emissions when serverUrlFlow then path only applied to first()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given null URL when serverUrlFlow then returns NoUrlAvailable()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given path with InsecureState first when serverUrlFlow then path is preserved for subsequent HasUrl()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given path with entityId prefix when serverUrlFlow then skips path handling()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given plain text URL with allowInsecureConnection true when serverUrlFlow then returns Success()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given plain text URL with null allowInsecureConnection and security level already shown when serverUrlFlow then returns Success()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given plain text URL with null allowInsecureConnection when serverUrlFlow then returns SecurityLevelRequired()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given server not found when serverUrlFlow then returns ServerNotFound()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given session not connected when serverUrlFlow then returns SessionNotConnected()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ Given valid URL when serverUrlFlow then returns Success with external_auth parameter()
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ hasHomeSetup="false", locationEnabled="false"
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ hasHomeSetup="false", locationEnabled="true"
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ hasHomeSetup="true", locationEnabled="false"
io.homeassistant.companion.android.frontend.url.FrontendUrlManagerTest ‑ hasHomeSetup="true", locationEnabled="true"
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ Given PIP feature available and readiness reported when user leaves then PIP is entered
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ Given PIP feature available but no readiness when user leaves then PIP is not entered
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ Given activity pauses without finishing then all sensors are updated
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ Given activity resumes then sensor worker and websocket manager are started and changelog is shown
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ Given device without PIP feature when user leaves then PIP is not entered
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ Given intent targets LaunchActivity directly with legacy extra then activity is not shown over the lock screen
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ Given showWhenLocked is false when launched then activity is not shown over the lock screen
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ Given showWhenLocked is true when launched then activity is shown over the lock screen
io.homeassistant.companion.android.launch.LaunchActivityTest ‑ launchActivity
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given IllegalStateException thrown while getting auth repository, when creating viewModel, then navigate to onboarding()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given Loading state, when calling shouldShowSplashScreen, then return true()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given Ready state, when calling shouldShowSplashScreen, then return false()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given active server connected and registered, when network is CONNECTING then READY, then navigate to frontend and resync registrations()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given active server connected and registered, when network is CONNECTING, then do not navigate but continue observing network changes()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given active server connected and registered, when network is UNAVAILABLE, then show network unavailable but continue observing network changes()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given fullscreen disabled when observed then isFullScreen is false()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given fullscreen enabled when observed then isFullScreen is true()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given fullscreen preference changes then isFullScreen updates reactively()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given fullscreen preference off when fullscreen is requested then isFullScreen is true()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given fullscreen preference off when fullscreen request is cleared then isFullScreen is false()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given fullscreen preference on when fullscreen request is cleared then isFullScreen stays true()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given fullscreen request is active when preference turns off then isFullScreen stays true()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given initial deep link is NavigateTo when creating viewModel, then navigate to frontend with the server id and path()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given initial deep link is NavigateTo with null path, when server is connected, then navigate to frontend without path()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given initial deep link is OpenInvitation when creating viewModel, then navigate to onboarding from invitation with the server url()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given initial deep link is OpenOnboarding with null url, when creating viewModel, then navigate to onboarding without url()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given initial deep link is OpenWearOnboarding and full flavor, when creating viewModel, then navigate to wear onboarding()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given initial deep link is OpenWearOnboarding and minimal flavor, when creating viewModel, then show wear unsupported()
Check notice on line 0 in .github
github-actions / Test Results
2518 tests found (test 1490 to 1833)
There are 2518 tests, see "Raw output" for the list of tests 1490 to 1833.
Raw output
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given initial deep link is OpenWearOnboarding with null url, when full flavor, then navigate to wear onboarding without url()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given isAutomotive is true but isFullFlavor is false, when network is READY, then navigate to frontend route()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given isAutomotive is true, when network is READY, then navigate to automotive route()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given network is UNAVAILABLE then READY, when observing network, then navigate to frontend after recovery()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given no active server, when creating viewModel, then navigate to onboarding()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given no pip readiness reported when initialized then pipReadiness is null()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given non-null then null when reported then pipReadiness round-trips()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given onAppPaused when invoked then manager is told app is inactive()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given onAuthenticated when invoked then manager is told app is active and isAppLocked is false()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given onPipReadinessChanged with non-null when called then pipReadiness reflects it()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given server not registered, when creating viewModel, then navigate to onboarding()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given session not connected, when creating viewModel, then navigate to onboarding()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ Given valid connected servers, when cleaning up servers, then do not remove connected servers()
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [1] "false", "true", "false"
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [1] READY_INTERNAL
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [1] true
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [2] "true", "false", "false"
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [2] READY_NET_VALIDATED
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [2] false
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [3] "false", "false", "true"
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [3] READY_NET_LOCAL
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ [4] "true", "true", "true"
io.homeassistant.companion.android.launch.LaunchViewModelTest ‑ given invalid servers, when creating viewModel, then cleanup servers()
io.homeassistant.companion.android.launch.link.LinkActivityScreenTest ‑ Given ChoosingServer state then the title and every user and server name are displayed
io.homeassistant.companion.android.launch.link.LinkActivityScreenTest ‑ Given ChoosingServer state when a server row is clicked then onServerSelected is invoked with its id
io.homeassistant.companion.android.launch.link.LinkActivityScreenTest ‑ Given ChoosingServer state when no row is clicked then onServerSelected is not invoked
io.homeassistant.companion.android.launch.link.LinkActivityScreenTest ‑ Given Loading state then no server chooser is displayed
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity choosing server_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity choosing server_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity choosing server_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity choosing server_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity choosing server_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity choosing server_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity default screen_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity default screen_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity default screen_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity default screen_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity default screen_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.launch.link.LinkActivityScreenshotTest ‑ LinkActivity default screen_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with no default server and multiple servers when invoking handleLink then returns ServerPicker
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with no registered server when invoking handleLink then returns NoDestination
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with non-existing server name and multiple servers when invoking handleLink then returns ServerPicker
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with registered server and case-insensitive server name when invoking handleLink then returns Webview with matching server
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with registered server and default server param when invoking handleLink then returns Webview with default server
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with registered server and empty server param when invoking handleLink then returns Webview with default server
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with registered server and no server param when invoking handleLink then returns Webview with default server
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with registered server and non-existing server name when invoking handleLink then returns Webview with SERVER_ID_ACTIVE serverId
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given navigate deep link with registered server and specific server name when invoking handleLink then returns Webview with matching server
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given no url in invite when invoking handleLink then returns NoDestination
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given redirect URI with multiple registered servers when invoking handleLink then returns ServerPicker
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given redirect URI with no registered server when invoking handleLink then returns NoDestination
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given redirect URI with single registered server when invoking handleLink then returns Webview with provided path without trailing slash in path
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given server registered and a valid URI with mobile flag set when invoking handleLink then returns NoDestination
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given unknown URI host when invoking handleLink then returns NoDestination
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given unknown URI scheme when invoking handleLink then returns NoDestination
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given unknown URI when invoking handleLink then returns NoDestination
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given unknown deep link host when invoking handleLink then returns NoDestination
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given valid invite URI with URL that contains params when invoking handleLink then returns Onboarding with provided URL with params
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given valid invite URI with URL when invoking handleLink then returns Onboarding with provided URL
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given valid invite URI with empty URL when invoking handleLink then returns Onboarding with empty URL
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given valid invite URI with multiples args when invoking handleLink then returns Onboarding with only the url
io.homeassistant.companion.android.launch.link.LinkHandlerTest ‑ Given valid invite deep link with URL when invoking handleLink then returns Onboarding with provided URL
io.homeassistant.companion.android.launch.link.LinkViewModelTest ‑ Given ChoosingServer state when onServerSelected then NavigateToWebView event carries the path and id()
io.homeassistant.companion.android.launch.link.LinkViewModelTest ‑ Given NoDestination when onLinkReceived then Finish event is emitted()
io.homeassistant.companion.android.launch.link.LinkViewModelTest ‑ Given Onboarding destination when onLinkReceived then OpenInvitation event is emitted()
io.homeassistant.companion.android.launch.link.LinkViewModelTest ‑ Given ServerPicker destination when onLinkReceived then uiState becomes ChoosingServer()
io.homeassistant.companion.android.launch.link.LinkViewModelTest ‑ Given Webview destination when onLinkReceived then NavigateToWebView event is emitted()
io.homeassistant.companion.android.launch.link.LinkViewModelTest ‑ Given a null uri when onLinkReceived then FailFast triggers and a Finish event is emitted()
io.homeassistant.companion.android.launch.link.LinkViewModelTest ‑ Given no ChoosingServer state when onServerSelected then no event is emitted()
io.homeassistant.companion.android.launch.link.LinkViewModelTest ‑ When onServerChooserDismissed then Finish event is emitted()
io.homeassistant.companion.android.loading.LoadingScreenshotTest ‑ LoadingScreen_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.loading.LoadingScreenshotTest ‑ LoadingScreen_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.loading.LoadingScreenshotTest ‑ LoadingScreen_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.loading.LoadingScreenshotTest ‑ LoadingScreen_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.loading.LoadingScreenshotTest ‑ LoadingScreen_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.loading.LoadingScreenshotTest ‑ LoadingScreen_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given Play Services fails when commissionMatterDevice then emits Error with cause()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given Play Services succeeds when commissionMatterDevice then emits Ready with intent sender()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given SDK O_MR1 plus and not automotive when appSupportsCommissioning then returns true()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given SDK before O_MR1 when appSupportsCommissioning then returns false()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given automotive device when appSupportsCommissioning then returns false()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given config with Matter component when coreSupportsCommissioning then returns true()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given config without Matter component when coreSupportsCommissioning then returns false()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given getConfig throws when coreSupportsCommissioning then returns false()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given non-admin user when coreSupportsCommissioning then returns false()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given not registered when coreSupportsCommissioning then returns false()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given server accepts code when commissionDevice then returns response()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given server accepts pin and ip when commissionOnNetworkDevice then returns response()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given server throws when commissionDevice then returns null and swallows exception()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given server throws when commissionOnNetworkDevice then returns null and swallows exception()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given supported when suppressDiscoveryBottomSheet then calls suppressHalfSheetNotification()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given unsupported SDK when commissionMatterDevice then emits Error()
io.homeassistant.companion.android.matter.MatterManagerImplTest ‑ Given unsupported when suppressDiscoveryBottomSheet then no-op()
io.homeassistant.companion.android.microwakeword.MicroWakeWordInstrumentedTest ‑ createWithEmptyModelThrows
io.homeassistant.companion.android.microwakeword.MicroWakeWordInstrumentedTest ‑ createWithInvalidModelThrows
io.homeassistant.companion.android.microwakeword.MicroWakeWordInstrumentedTest ‑ createWithNegativeFeatureStepSizeThrows
io.homeassistant.companion.android.microwakeword.MicroWakeWordInstrumentedTest ‑ createWithNonDirectBufferThrows
io.homeassistant.companion.android.microwakeword.MicroWakeWordInstrumentedTest ‑ createWithProbabilityCutoffOutOfRangeThrows
io.homeassistant.companion.android.microwakeword.MicroWakeWordInstrumentedTest ‑ createWithZeroSlidingWindowSizeThrows
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given ApprovingTag and two registered servers, when onAllowOnce, then state goes Scanning then Done and scanTag is called per server()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given ApprovingTag state, when onDismissed, then state becomes Done()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given ApprovingTag, when onAllowAlways, then tag is persisted and state goes Scanning then Done and scanTag is called()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given ApprovingTag, when onAllowOnce, then Scanning state lasts at least MIN_SCANNING_DURATION before Done()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given Error state, when onErrorAcknowledged, then state becomes Done()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given Initial state, when onAllowAlways, then state stays Initial and tag is not persisted()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given Initial state, when onAllowOnce, then state stays Initial and servers is never queried()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given URL with no tag id and NFC origin, when onIntentReceived, then state becomes nfc Error()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given URL with no tag id and QR origin, when onIntentReceived, then state becomes qrcode Error()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given no server registered, when onIntentReceived, then state becomes Error()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given tag id already in allowed list, when onIntentReceived, then approval is skipped and state goes Scanning then Done()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given tag id not in allowed list, when onIntentReceived, then state becomes ApprovingTag and scanTag is never called()
io.homeassistant.companion.android.nfc.TagReaderViewModelTest ‑ Given two servers and scanTag throws on first, when onAllowOnce, then state still becomes Done and second server is still attempted()
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen approving_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen approving_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen approving_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen approving_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen approving_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen approving_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen scanning_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen scanning_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen scanning_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen scanning_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen scanning_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.nfc.views.TagReaderScreenScreenshotTest ‑ TagReaderScreen scanning_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.nfc.views.TagReaderScreenTest ‑ Given ApprovingTag state then approval content with Allow once and Allow always buttons is displayed
io.homeassistant.companion.android.nfc.views.TagReaderScreenTest ‑ Given ApprovingTag state when Allow always is scrolled to and clicked then onAllowAlways is invoked
io.homeassistant.companion.android.nfc.views.TagReaderScreenTest ‑ Given ApprovingTag state when Allow once is clicked then onAllowOnce is invoked
io.homeassistant.companion.android.nfc.views.TagReaderScreenTest ‑ Given ApprovingTag state when close button is clicked then onDismissed is invoked
io.homeassistant.companion.android.nfc.views.TagReaderScreenTest ‑ Given Done state with no prior sheet then onFinished is invoked immediately
io.homeassistant.companion.android.nfc.views.TagReaderScreenTest ‑ Given Error state then onErrorAcknowledged is invoked after the snackbar is shown
io.homeassistant.companion.android.nfc.views.TagReaderScreenTest ‑ Given Initial state then nothing from the sheet is displayed
io.homeassistant.companion.android.nfc.views.TagReaderScreenTest ‑ Given Scanning state then loading content is displayed and approval buttons are not
io.homeassistant.companion.android.onboarding.WearOnboardingNavigationTest ‑ Given NameYourWearDevice with mTLS required when device is named then it opens WearMTLSScreen and then back goes to NameYourDevice
io.homeassistant.companion.android.onboarding.WearOnboardingNavigationTest ‑ Given a server discovered when clicking on it then show ConnectScreen then back goes to ServerDiscovery
io.homeassistant.companion.android.onboarding.WearOnboardingNavigationTest ‑ Given authenticating when authenticated then show NameYourWearDevice once named it finishes the onboarding with proper parameters
io.homeassistant.companion.android.onboarding.WearOnboardingNavigationTest ‑ Given no server to onboard when starting the navigation then opens ServerDiscoveryScreen in ADD_EXISTING mode
io.homeassistant.companion.android.onboarding.WearOnboardingNavigationTest ‑ Given server onboard when starting the navigation then opens ConnectionScreen
io.homeassistant.companion.android.onboarding.WearOnboardingNavigationTest ‑ Given valid mTLS when clicking next then finishes the onboarding with proper parameters
io.homeassistant.companion.android.onboarding.connection.ConnectionNavigationTest ‑ Given HandleConnectionNavigationEvents when viewModel emits Authenticated then invoke onAuthenticated
io.homeassistant.companion.android.onboarding.connection.ConnectionNavigationTest ‑ Given HandleConnectionNavigationEvents when viewModel emits OpenExternalLink then invoke onOpenExternalLink
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenTest ‑ Given ConnectionScreen when isError is true then don't show webview and show placeholder
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenTest ‑ Given ConnectionScreen when isLoading then show loading
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenTest ‑ Given ConnectionScreen when not isLoading then don't show loading
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenTest ‑ Given ConnectionScreen when pressing back then triggers onBackClick
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenTest ‑ Given ConnectionScreen when url is null then webview is not displayed
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen error_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen error_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen error_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen error_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen error_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen error_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loaded_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loaded_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loaded_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loaded_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loaded_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loaded_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loading_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loading_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loading_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loading_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loading_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.connection.ConnectionScreenshotTest ‑ ConnectionScreen loading_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given a malformed url when buildAuthUrl then errorFlow emits malformed url error()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given a same-host redirect that downgrades https to http when auth completes then Authenticated url keeps the original https url()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given a same-host redirect that upgrades http to https when auth completes then Authenticated url uses the https origin()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given a working state when onWebViewCreationFailed is called then errorFlow emits WebViewCreationError and connectivity checks run()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given an error occurs when onReceivedError is invoked then runChecks is triggered()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given an initial url with a path and query when auth completes then Authenticated url is the bare origin()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given auth callback uri without code when shouldRedirect then no event and returns false()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given multiple same-host redirects when auth completes then Authenticated url uses the last origin()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given no redirect when auth completes then Authenticated url stays the initial url()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given opaque auth callback uri when shouldRedirect then no event and returns false()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given pending file chooser when result delivered then filePathCallback receives uris and slot clears()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given pending file chooser when user cancels then filePathCallback receives null and slot clears()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given previous checks running when runConnectivityChecks is called then previous collection is cancelled()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given redirect to a different host when auth completes then Authenticated url stays the initial url()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given same-host IPv6 redirect to a new port when auth completes then Authenticated url keeps the host bracketed()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given same-host redirect to a new port when auth completes then Authenticated url uses the new origin()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given unmatching uri and webview not null when shouldRedirect is invoked then open in external browser and return true()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ Given webChromeClient when onShowFileChooser is invoked then pendingFileChooser exposes the params()
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ [1] "http://homeassistant.local:8123"
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ [1] true
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ [2] "https://cloud.ui.nabu.casa"
io.homeassistant.companion.android.onboarding.connection.ConnectionViewModelTest ‑ [2] false
io.homeassistant.companion.android.onboarding.connection.navigation.ConnectionNavigationTest ‑ Given clicking on connect button with server to onboard when starting the onboarding then show Connection screen then back goes to Welcome
io.homeassistant.companion.android.onboarding.connection.navigation.ConnectionNavigationTest ‑ Given skipWelcome and urlToOnboard when starting then show Connection screen and no back arrow
io.homeassistant.companion.android.onboarding.localfirst.LocalFirstScreenTest ‑ Given empty screen when clicking next then it invokes onNextClick
io.homeassistant.companion.android.onboarding.localfirst.LocalFirstScreenshotTest ‑ LocalFirstContent empty_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.localfirst.LocalFirstScreenshotTest ‑ LocalFirstContent empty_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.localfirst.LocalFirstScreenshotTest ‑ LocalFirstContent empty_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.localfirst.LocalFirstScreenshotTest ‑ LocalFirstContent empty_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.localfirst.LocalFirstScreenshotTest ‑ LocalFirstContent empty_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.localfirst.LocalFirstScreenshotTest ‑ LocalFirstContent empty_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.localfirst.navigation.LocalFirstNavigationTest ‑ Given LocalFirst when pressing next then show LocationSharing then goes back stop the app
io.homeassistant.companion.android.onboarding.localfirst.navigation.LocalFirstNavigationTest ‑ Given no location tracking from LocalFirst with HTTP when next clicked then show LocationForSecureConnection
io.homeassistant.companion.android.onboarding.localfirst.navigation.LocalFirstNavigationTest ‑ Given no location tracking from LocalFirst with HTTPS when next clicked then onboarding completes
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenTest ‑ Given HTTP url when screen displayed then show HTTP specific content
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenTest ‑ Given most secure connection already set when displayed and most secure is selected
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenTest ‑ Given selecting less secure connection when next clicked then go to next screen
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenTest ‑ Given selecting most secure connection when next clicked and permission given then go to next screen
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenTest ‑ Given selecting most secure connection when next clicked and permission not given then stay on screen with snackbar and select less secure
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection empty_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection empty_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection empty_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection empty_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection empty_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection empty_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection most secure selected_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection most secure selected_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection most secure selected_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection most secure selected_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection most secure selected_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection most secure selected_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with HTTP url_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with HTTP url_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with HTTP url_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with HTTP url_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with HTTP url_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with HTTP url_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with back navigation_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with back navigation_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with back navigation_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with back navigation_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with back navigation_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with back navigation_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with close navigation_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with close navigation_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with close navigation_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with close navigation_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with close navigation_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionScreenshotTest ‑ LocationForSecureConnection with close navigation_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionViewModelTest ‑ Given server throws exception When allowInsecureConnection is called Then exception is caught()
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionViewModelTest ‑ Given server throws exception When allowInsecureConnection is collected Then emits null()
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionViewModelTest ‑ [1] true
io.homeassistant.companion.android.onboarding.locationforsecureconnection.LocationForSecureConnectionViewModelTest ‑ [2] false
io.homeassistant.companion.android.onboarding.locationforsecureconnection.navigation.LocationForSecureConnectionNavigationTest ‑ Given LocationForSecureConnection when agreeing to share then show SetHomeNetwork
io.homeassistant.companion.android.onboarding.locationforsecureconnection.navigation.LocationForSecureConnectionNavigationTest ‑ Given LocationForSecureConnection when choosing less secure option then onboarding completes
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenTest ‑ Given screen displayed when clicking do not share then go to next screen and location response set to false without battery optimization
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenTest ‑ Given screen displayed when clicking on share and granting permission then go to next screen and location response set to true and ask for battery optimization
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenTest ‑ Given screen displayed when clicking on share and not granting permission then go to next screen and location response set to true and still ask for battery optimization
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenshotTest ‑ LocationSharing empty_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenshotTest ‑ LocationSharing empty_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenshotTest ‑ LocationSharing empty_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenshotTest ‑ LocationSharing empty_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenshotTest ‑ LocationSharing empty_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingScreenshotTest ‑ LocationSharing empty_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingViewModelTest ‑ Given sensorDao throws exception When setupLocationSensor is called Then exception is caught()
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingViewModelTest ‑ [1]
io.homeassistant.companion.android.onboarding.locationsharing.LocationSharingViewModelTest ‑ [2]
io.homeassistant.companion.android.onboarding.locationsharing.navigation.LocationSharingNavigationTest ‑ Given LocationSharing when agreeing with plain text access to share then show LocationForSecureConnection then goes back stop the app
io.homeassistant.companion.android.onboarding.locationsharing.navigation.LocationSharingNavigationTest ‑ Given LocationSharing when agreeing without plain text access to share then onboarding is done
io.homeassistant.companion.android.onboarding.locationsharing.navigation.LocationSharingNavigationTest ‑ Given LocationSharing when denying to share with plain text access then goes to LocationForSecureConnection then goes back stop the app
io.homeassistant.companion.android.onboarding.locationsharing.navigation.LocationSharingNavigationTest ‑ Given LocationSharing when denying to share without plain text access then onboarding is done
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenTest ‑ Given empty screen when interacting with the view then handle interactions
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenTest ‑ Given screen with URL when interacting with the text field then handle interactions
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenTest ‑ Given screen with invalid URL when interacting with the view then handle interactions
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenTest ‑ Given screen with valid URL when interacting with the view then handle interactions
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen empty_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen empty_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen empty_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen empty_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen empty_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen empty_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with valid url_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with valid url_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with valid url_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with valid url_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with valid url_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with valid url_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with wrong url_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with wrong url_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with wrong url_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with wrong url_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with wrong url_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerScreenshotTest ‑ ManualServerScreen with wrong url_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.manualserver.ManualServerViewModelTest ‑ Given invalid url when onServerUrlChange then flows are updated accordingly()
io.homeassistant.companion.android.onboarding.manualserver.ManualServerViewModelTest ‑ Given url with malformed port when onServerUrlChange then isServerUrlValid is false()
io.homeassistant.companion.android.onboarding.manualserver.ManualServerViewModelTest ‑ Given valid url when onServerUrlChange then flows are updated accordingly()
io.homeassistant.companion.android.onboarding.manualserver.navigation.ManualServerNavigationTest ‑ Given enter manual address when setting url and clicking connect then show ConnectScreen then back goes to ManualServer
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceNavigationTest ‑ Given HandleNameYourDeviceNavigationEvents when viewModel emits DeviceNameSaved then invoke onDeviceNamed with serverId
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceNavigationTest ‑ Given HandleNameYourDeviceNavigationEvents when viewModel emits Error then invoke onShowSnackbar and onBackClick
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenTest ‑ Given empty screen when interacting with the view then handle interactions
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenTest ‑ Given screen with device name and saving when deviceNameEditable is false then handle interactions
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenTest ‑ Given screen with device name when interacting with the view then handle interactions
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice empty_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice empty_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice empty_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice empty_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice empty_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice empty_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice with a name_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice with a name_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice with a name_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice with a name_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice with a name_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceScreenshotTest ‑ NameYourDevice with a name_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given currently saving when isSaveClickableFlow collecting then isSaveClickable is updating accordingly()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given custom deviceName and successful add server when onSaveClick then emits DeviceNameSaved event and registered with custom name and server activated()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given integrationRepository registerDevice throws when onSaveClick then emits error event and attempts cleanup()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given public secure url when onSaveClick then emits DeviceNameSaved with hasPlainTextAccess to false and isPubliclyAccessible true and enforces secure connection()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given registerAuthorizationCode throws HttpException 404 when onSaveClick then emits error with error_with_registration message()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given registerAuthorizationCode throws SSLException when onSaveClick then emits error with webview_error_SSL_INVALID message()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given registerAuthorizationCode throws SSLHandshakeException when onSaveClick then emits error with webview_error_FAILED_SSL_HANDSHAKE message()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given registering server when onSaveClick then isSavingFlow is properly updated()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given serverRegistrationRepository Throws when onSaveClick then emits Error event and attempts no cleanup()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given serverRegistrationRepository registerAuthorizationCode returns null when onSaveClick then emits Error event and attempts no cleanup()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given successful add server when onSaveClick then emits DeviceNameSaved event()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given updating device name when isSaveClickableFlow collecting then isSaveClickable is updating according to isValidDeviceName()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given viewModel when onDeviceNameChangeCalled then deviceName and isValidName flows are updated()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given viewModelInitialized when isSaveClickableFlow then emits true()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given viewModelInitialized when isValidNameFlow then emits true()
io.homeassistant.companion.android.onboarding.nameyourdevice.NameYourDeviceViewModelTest ‑ Given viewModelInitialized when observingDeviceNameFlow then emits DefaultDeviceName()
io.homeassistant.companion.android.onboarding.nameyourdevice.navigation.NameYourDeviceNavigationTest ‑ Given device named and skip welcome with url when pressing next then show LocalFirst then goes back stop the app
io.homeassistant.companion.android.onboarding.nameyourdevice.navigation.NameYourDeviceNavigationTest ‑ Given device named and skip welcome without url when pressing next then show LocalFirst then goes back stop the app
io.homeassistant.companion.android.onboarding.nameyourdevice.navigation.NameYourDeviceNavigationTest ‑ Given device named when pressing next then show LocalFirst then goes back stop the app
io.homeassistant.companion.android.onboarding.nameyourdevice.navigation.NameYourDeviceNavigationTest ‑ Given device named with public HTTP url when pressing next then show LocationSharing
io.homeassistant.companion.android.onboarding.nameyourdevice.navigation.NameYourDeviceNavigationTest ‑ Given device named with public HTTPS url when pressing next then show LocationSharing
io.homeassistant.companion.android.onboarding.nameyourdevice.navigation.NameYourDeviceNavigationTest ‑ Given no location tracking with HTTP public server when device named then show LocationForSecureConnection
io.homeassistant.companion.android.onboarding.nameyourdevice.navigation.NameYourDeviceNavigationTest ‑ Given no location tracking with HTTPS public server when device named then onboarding completes
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ Given collecting discoveredInstanceFlow when getting the flow a second time then it throws FailFastException()
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ Given fail to start discovery when discoveredInstanceFlow is called then throw DiscoveryFailedException()
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ Given one discoverable instance impossible to resolve when discoveredInstanceFlow is called then nothing is emitted()
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ Given one discoverable instance when discoveredInstanceFlow is called then should emit instance()
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ Given one discoverable instance with null service when discoveredInstanceFlow is called then nothing is emitted()
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ Given one discoverable instance with version 0000_0_0 when discoveredInstanceFlow is called then should emit instance()
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ Given two discoverable instance when discoveredInstanceFlow is called then should emit two instances while respecting concurrency()
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ Given two instance of discoveredInstanceFlow when collecting at the same time then it throws FailFastException()
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ [1] "http://external:8123", "http://internal:8123", "http://external:8123"
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ [1] null
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ [2] ""
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ [2] "http://external:8123", null, "http://external:8123"
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ [2] "malformed://localhost:8123"
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ [3] "wrong_version"
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ [3] null, "http://internal:8123", "http://internal:8123"
io.homeassistant.companion.android.onboarding.serverdiscovery.HomeAssistantSearcherImplTest ‑ [4] null, "http://internal:8123", "http://internal:8123"
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenTest ‑ Given NoServerFound state when server discovery is displayed then show loading and handle clicks
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenTest ‑ Given ServerDiscover state when getting state ServersDiscovered then bottom sheet is still displayed on top of the server list
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenTest ‑ Given ServerDiscovered state when server discovery is displayed then show server and handle clicks
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenTest ‑ Given ServersDiscovered state when server discovery is displayed then show servers and handle clicks
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenTest ‑ Given Started state when server discovery is displayed then show loading and handle clicks
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen no server found_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen no server found_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen no server found_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
Check notice on line 0 in .github
github-actions / Test Results
2518 tests found (test 1834 to 2187)
There are 2518 tests, see "Raw output" for the list of tests 1834 to 2187.
Raw output
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen no server found_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen no server found_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen no server found_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen scanning_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen scanning_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen scanning_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen scanning_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen scanning_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen scanning_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with multiple servers found_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with multiple servers found_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with multiple servers found_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with multiple servers found_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with multiple servers found_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with multiple servers found_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with one server found_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with one server found_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with one server found_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with one server found_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with one server found_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryScreenshotTest ‑ ServerDiscoveryScreen with one server found_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given ADD_EXISTING mode with existing servers when view model created then discoveryFlow emits existing servers after delay()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given ADD_EXISTING mode with no servers when view model created then discoveryFlow emits Started after delay()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given HIDE_EXISTING mode with existing server when discovered server matches existing then discoveryFlow filters out matching server()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given TIMEOUT_NO_SERVER_FOUND occurs without discoveries when a server is found later then discoveryFlow emits Started then NoServerFound then ServerDiscovered()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given a discovered instance without a version when collecting from discoveryFlow then emits ServerDiscovered with a null version()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given discovery process throws an exception when collecting from discoveryFlow then discoveryFlow emits Started then NoServerFound after TIMEOUT_NO_SERVER_FOUND()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given discoveryFlow emitted Started then ServerDiscovered when onDismissOneServerFound is invoked then discoveryFlow emits ServersDiscovered()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given local network permission checked twice then discovery is only started once()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given local network permission not yet checked then no server discovery is started and NoServerFound is not emitted()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given multiple servers discovered before delay when collecting from discoveryFlow then discoveryFlow emits only ServersDiscovered after delay()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given multiple servers discovered multiple times when collecting from discoveryFlow then discoveryFlow emits ServersDiscovered without duplicates and only once()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given no servers discovered when collecting from discoveryFlow then discoveryFlow emits Started then NoServerFound after TIMEOUT_NO_SERVER_FOUND()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given servers discovered after delay when collecting from discoveryFlow then discoveryFlow emits Started then ServerDiscovered then ServersDiscovered()
io.homeassistant.companion.android.onboarding.serverdiscovery.ServerDiscoveryViewModelTest ‑ Given view model created then discoveryFlow emits Started after DELAY_BEFORE_DISPLAY_DISCOVERY()
io.homeassistant.companion.android.onboarding.serverdiscovery.navigation.ServerDiscoveryNavigationTest ‑ Given API 37 with denied local network permission when entering ServerDiscovery then routes to ManualServer and back skips ServerDiscovery
io.homeassistant.companion.android.onboarding.serverdiscovery.navigation.ServerDiscoveryNavigationTest ‑ Given a server discovered and connecting when authenticated then show NameYourDevice then back goes to ServerDiscovery not ConnectionScreen
io.homeassistant.companion.android.onboarding.serverdiscovery.navigation.ServerDiscoveryNavigationTest ‑ Given a server discovered when clicking on it then show ConnectScreen then back goes to ServerDiscovery
io.homeassistant.companion.android.onboarding.serverdiscovery.navigation.ServerDiscoveryNavigationTest ‑ Given clicking enter manual address button when discovering server then show ManualServer then back goes to ServerDiscovery
io.homeassistant.companion.android.onboarding.serverdiscovery.navigation.ServerDiscoveryNavigationTest ‑ Given clicking on connect button when starting the onboarding then show ServerDiscovery then back goes to Welcome
io.homeassistant.companion.android.onboarding.serverdiscovery.navigation.ServerDiscoveryNavigationTest ‑ Given clicking on connect button with hide existing server and no server to onboard when starting the onboarding then show Discovery screen with existing server hidden then back goes to Welcome
io.homeassistant.companion.android.onboarding.serverdiscovery.navigation.ServerDiscoveryNavigationTest ‑ Given skipWelcome without urlToOnboard when starting then show ServerDiscovery
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenTest ‑ Give ethernet and no vpn when screen is displayed then show Wi-Fi and ethernet only and handle interactions
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenTest ‑ Given no vpn and no ethernet when screen is displayed then only show Wi-Fi and handle interactions
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenTest ‑ Given screen when setting current wifi network then update currentWifiNetworkSet
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenTest ‑ Given vpn and no ethernet when screen is displayed then show Wi-Fi and vpn only and handle interactions
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with VPN and Ethernet_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with VPN and Ethernet_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with VPN and Ethernet_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with VPN and Ethernet_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with VPN and Ethernet_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with VPN and Ethernet_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with no VPN and no Ethernet_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with no VPN and no Ethernet_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with no VPN and no Ethernet_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with no VPN and no Ethernet_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with no VPN and no Ethernet_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkScreenshotTest ‑ SetHomeNetworkScreen with no VPN and no Ethernet_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given Wi-Fi network not empty, no vpn and no ethernet, when on next click, then server is updated with SSID and no VPN no ethernet()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given server does not exist, when on next click, then server manager update not called()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given server exists and VPN enabled, when on next click, then server is updated with VPN true()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given server exists and Wi-Fi network empty, when on next click, then server is updated with empty SSID list()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given server exists and all options enabled, when on next click, then server is updated with all settings()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given server exists and ethernet enabled, when on next click, then server is updated with ethernet true()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model initialized and VPN connected, when observing is using VPN, then emits true()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model initialized and Wi-Fi SSID null, when observing current Wi-Fi network, then emits empty string()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model initialized and ethernet connected, when observing is using ethernet, then emits true()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model initialized and no VPN, when observing is using VPN, then emits false()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model initialized and no ethernet, when observing is using ethernet, then emits false()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model initialized, when observing current Wi-Fi network, then emits initial value from Wi-Fi helper()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model, when on current Wi-Fi network change called, then current Wi-Fi network flow is updated()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model, when on using VPN change called, then is using VPN flow is updated()
io.homeassistant.companion.android.onboarding.sethomenetwork.SetHomeNetworkViewModelTest ‑ Given view model, when on using ethernet change called, then is using ethernet flow is updated()
io.homeassistant.companion.android.onboarding.sethomenetwork.navigation.SetHomeNetworkNavigationTest ‑ Given SetHomeNetwork when clicking next then onboarding completes
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenTest ‑ Given empty screen when interacting with the view then handle interactions
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenTest ‑ Given empty screen when picking a file then set selectedUri
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenTest ‑ Given screen with cert and password set when isError true with the view then handle interactions
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenTest ‑ Given screen with cert and password set when no errors and certValidated with the view then handle interactions
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenTest ‑ Given selected cert when clicking selecting and cancel selection then initial selected file stays selected
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen file selected_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen file selected_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen file selected_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen file selected_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen file selected_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen file selected_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen no file selected_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen no file selected_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen no file selected_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen no file selected_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen no file selected_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSScreenshotTest ‑ WearMTLSScreen no file selected_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given URI and password, when openInputStream fails, then validation fails, showError true()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given URI and valid password, when validation succeeds, then isCertValidated true, no error()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given URI with cursor returning no rows, when onUriSelected, then selectedFileName is null()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given URI with cursor throwing when getting filename, when onUriSelected, then selectedFileName is null()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given URI with query returning null, when onUriSelected, then selectedFileName is null()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given viewModel is initialized, when uiState is observed, then it should have default values()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given viewModel with selected URI, when onPasswordChanged is called with wrong password, then UI state is updated multiple times and error is shown()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given viewModel, when onPasswordChanged is called multiple times rapidly, then only the last value should trigger validation()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given viewModel, when onUriSelected with a valid URI is called, then URI and filename are updated()
io.homeassistant.companion.android.onboarding.wearmtls.WearMTLSViewModelTest ‑ Given viewModel, when onUriSelected with null URI is called, then state updates and no error or validation occurs()
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenTest ‑ Given WelcomeInvitationScreen when click on buttons then triggers callbacks
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenTest ‑ Given WelcomeInvitationScreen when click on server address then copy url to clipboard
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenTest ‑ Given WelcomeInvitationScreen when displayed then shows server address and label
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenshotTest ‑ WelcomeInvitationScreen with long URL
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenshotTest ‑ WelcomeInvitationScreen with long URL_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenshotTest ‑ WelcomeInvitationScreen_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenshotTest ‑ WelcomeInvitationScreen_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenshotTest ‑ WelcomeInvitationScreen_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenshotTest ‑ WelcomeInvitationScreen_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenshotTest ‑ WelcomeInvitationScreen_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.welcome.WelcomeInvitationScreenshotTest ‑ WelcomeInvitationScreen_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.welcome.WelcomeScreenTest ‑ Given WelcomeScreen when click on buttons then triggers callbacks
io.homeassistant.companion.android.onboarding.welcome.WelcomeScreenshotTest ‑ WelcomeScreen_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.welcome.WelcomeScreenshotTest ‑ WelcomeScreen_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.welcome.WelcomeScreenshotTest ‑ WelcomeScreen_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.onboarding.welcome.WelcomeScreenshotTest ‑ WelcomeScreen_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.onboarding.welcome.WelcomeScreenshotTest ‑ WelcomeScreen_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.onboarding.welcome.WelcomeScreenshotTest ‑ WelcomeScreen_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.onboarding.welcome.navigation.WelcomeInvitationNavigationTest ‑ Given WelcomeInvitation when click Accept then navigate to Connection
io.homeassistant.companion.android.onboarding.welcome.navigation.WelcomeInvitationNavigationTest ‑ Given WelcomeInvitation when click Learn more then open docs
io.homeassistant.companion.android.onboarding.welcome.navigation.WelcomeInvitationNavigationTest ‑ Given invitation link when starting the app then show WelcomeInvitation
io.homeassistant.companion.android.onboarding.welcome.navigation.WelcomeInvitationNavigationTest ‑ Given no invitation flag when starting the app then show Welcome not WelcomeInvitation
io.homeassistant.companion.android.onboarding.welcome.navigation.WelcomeNavigationTest ‑ Given no action when starting the app then show Welcome
io.homeassistant.companion.android.sensors.GeocodeSensorManagerTest ‑ Given location time above threshold when invoking isStillValid then it returns false()
io.homeassistant.companion.android.sensors.GeocodeSensorManagerTest ‑ Given location time above threshold with the 1024 weeks bug when invoking isStillValid then it returns false()
io.homeassistant.companion.android.sensors.GeocodeSensorManagerTest ‑ Given location time bellow threshold when invoking isStillValid then it returns true()
io.homeassistant.companion.android.sensors.GeocodeSensorManagerTest ‑ Given location time bellow threshold with the 1024 weeks bug when invoking isStillValid then it returns true()
io.homeassistant.companion.android.sensors.GeocodeSensorManagerTest ‑ Given location time in the future above inaccuracy factor with the 1024 weeks bug when invoking isStillValid then it returns false()
io.homeassistant.companion.android.sensors.GeocodeSensorManagerTest ‑ Given location time in the future below inaccuracy factor with the 1024 weeks bug when invoking isStillValid then it returns true()
io.homeassistant.companion.android.sensors.GeocodeSensorManagerTest ‑ Given location time in the future when invoking isStillValid then it returns true()
io.homeassistant.companion.android.sensors.HealthConnectSensorManagerTest ‑ [1] true
io.homeassistant.companion.android.sensors.HealthConnectSensorManagerTest ‑ [2] false
io.homeassistant.companion.android.sensors.RequestAccurateLocationReceiverTest ‑ Given accurate update action when receiving then forward explicit broadcast to LocationSensorManager without extra
io.homeassistant.companion.android.sensors.RequestAccurateLocationReceiverTest ‑ Given null action when receiving then do not forward anything
io.homeassistant.companion.android.sensors.RequestAccurateLocationReceiverTest ‑ Given unexpected action when receiving then do not forward anything
io.homeassistant.companion.android.sensors.SensorManagerTest ‑ Given attributes when invoking onSensorUpdated then attributes are replaced in DAO properly formatted in json()
io.homeassistant.companion.android.settings.SettingsViewModelTest ‑ [1] true
io.homeassistant.companion.android.settings.SettingsViewModelTest ‑ [2] false
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$GetAvailableModelsTest ‑ Given models already loaded when getAvailableModels called twice then load only once()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$GetAvailableModelsTest ‑ Given models available when getAvailableModels then return all models()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$GetSelectedWakeWordModelTest ‑ Given no wake word selected when getSelectedWakeWordModel then return null()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$GetSelectedWakeWordModelTest ‑ Given unknown wake word selected when getSelectedWakeWordModel then return null()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$GetSelectedWakeWordModelTest ‑ Given wake word selected when getSelectedWakeWordModel then return selected model()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$IsWakeWordEnabledTest ‑ Given wake word disabled when isWakeWordEnabled then return false()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$IsWakeWordEnabledTest ‑ Given wake word enabled when isWakeWordEnabled then return true()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$SetSelectedWakeWordModelTest ‑ Given model changed and enabled when setSelectedWakeWordModel then save and restart service()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$SetSelectedWakeWordModelTest ‑ Given model changed but disabled when setSelectedWakeWordModel then save without restart()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$SetSelectedWakeWordModelTest ‑ Given same model when setSelectedWakeWordModel then save without restart()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$SetWakeWordEnabledTest ‑ Given enabled false when setWakeWordEnabled then save preference and stop listening()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$SetWakeWordEnabledTest ‑ Given enabled true when setWakeWordEnabled then save preference and start listening()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$SetWakeWordEnabledTest ‑ Given no model selected and Okay Nabu unavailable when enabling then auto-select first available model()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$SetWakeWordEnabledTest ‑ Given no model selected and no models available when enabling then does not start listening()
io.homeassistant.companion.android.settings.assist.AssistConfigManagerTest$SetWakeWordEnabledTest ‑ Given no model selected when enabling then auto-select Okay Nabu()
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings as default assistant with wake word enabled_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings as default assistant with wake word enabled_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings as default assistant with wake word enabled_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings as default assistant with wake word enabled_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings as default assistant with wake word enabled_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings as default assistant with wake word enabled_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings is loading_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings is loading_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings is loading_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings is loading_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings is loading_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings is loading_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings not default assistant_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings not default assistant_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings not default assistant_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings not default assistant_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings not default assistant_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings not default assistant_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with detection_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with detection_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with detection_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with detection_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with detection_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with detection_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with no detection_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with no detection_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with no detection_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with no detection_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with no detection_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.settings.assist.AssistSettingsScreenScreenshotTest ‑ Assist settings testing wake word with no detection_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$GetSetDefaultAssistantIntentTest ‑ Given intent available when getSetDefaultAssistantIntent then return intent()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$InitializationTest ‑ Given default assistant when initialized then load state correctly()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$InitializationTest ‑ Given no selected model and no available models when initialized then selectedModel is null()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$InitializationTest ‑ Given no selected model when initialized then use first available model()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$InitializationTest ‑ Given not default assistant and wake word disabled when initialized then keep disabled()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$InitializationTest ‑ Given not default assistant and wake word enabled when initialized then disable wake word()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$RefreshDefaultAssistantStatusTest ‑ Given became default assistant when refresh then update state()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$RefreshDefaultAssistantStatusTest ‑ Given no longer default assistant with wake word enabled when refresh then disable wake word()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$SelectWakeWordModelTest ‑ Given wake word selected when onSelectWakeWordModel then update state and save()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$TestWakeWordTest ‑ Given not testing when onWakeWordDetected then ignore detection()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$TestWakeWordTest ‑ Given not testing when setTestingWakeWord true then update state()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$TestWakeWordTest ‑ Given testing when onWakeWordDetected then show detected and reset after debounce()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$TestWakeWordTest ‑ Given testing when setTestingWakeWord false then update state()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$ToggleWakeWordTest ‑ Given no selected model in state when toggle enabled then fallback to getSelectedWakeWordModel()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$ToggleWakeWordTest ‑ Given selected model in state when toggle enabled then keep selected model in state()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$ToggleWakeWordTest ‑ Given wake word disabled when toggle enabled then enable and save()
io.homeassistant.companion.android.settings.assist.AssistSettingsViewModelTest$ToggleWakeWordTest ‑ Given wake word enabled when toggle disabled then disable and save()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given default filter when collecting history then dao queries all results()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given failed filter when collecting history then dao queries failed results()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given history already enabled when enabling again then no action taken()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given history disabled when created then historyEnabled is false()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given history disabled when enabling then prefs are updated()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given history enabled when created then historyEnabled is true()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given history enabled when disabling then history is deleted()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given sent filter when collecting history then dao queries sent results()
io.homeassistant.companion.android.settings.developer.location.LocationTrackingViewModelTest ‑ Given skipped filter when collecting history then dao queries skipped results()
io.homeassistant.companion.android.settings.gestures.GesturesFragmentScreenshotTest ‑ Gesture actions with search entities selected
io.homeassistant.companion.android.settings.gestures.GesturesFragmentScreenshotTest ‑ Gestures list with no action for each gesture
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName="" "", serverName=""Home"" -> ""H""
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName="" Bob"", serverName=""Home"" -> ""B""
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName="""", serverName="""" -> ""?""
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName="""", serverName=""Friends home"" -> ""FH""
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName=""Alice Smith"", serverName=""Home"" -> ""AS""
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName=""Alice Smith"", serverName=""Home"" -> ""AS""
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName=""Bob"", serverName=""Home"" -> ""B""
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName=""John Ronald Reuel"", serverName=""Home"" -> ""JR""
io.homeassistant.companion.android.settings.server.ServerChooserItemTest ‑ userName=""alice"", serverName=""Home"" -> ""A""
io.homeassistant.companion.android.settings.server.ServerChooserItemsUseCaseTest ‑ Given a user without a name when invoked then the user name falls back to the server name()
io.homeassistant.companion.android.settings.server.ServerChooserItemsUseCaseTest ‑ Given an active server when invoked then only that item is marked active()
io.homeassistant.companion.android.settings.server.ServerChooserItemsUseCaseTest ‑ Given multiple servers when invoked then first emission has no avatars and avatars load concurrently()
io.homeassistant.companion.android.settings.server.ServerChooserItemsUseCaseTest ‑ Given servers with named users when invoked then maps the user and server names()
io.homeassistant.companion.android.settings.server.ServerChooserItemsUseCaseTest ‑ Given the avatar manager resolves a picture when invoked then a later emission carries it()
io.homeassistant.companion.android.settings.views.SettingsRowScreenshotTest ‑ SettingsRow with MDI icon off
io.homeassistant.companion.android.settings.views.SettingsRowScreenshotTest ‑ SettingsRow with MDI icon on
io.homeassistant.companion.android.settings.views.SettingsRowScreenshotTest ‑ SettingsRow with custom icon composable
io.homeassistant.companion.android.settings.views.SettingsRowScreenshotTest ‑ SettingsRow with only title and subtitle
io.homeassistant.companion.android.settings.views.SettingsSubheaderScreenshotTest ‑ SettingsSubheader with additional icon padding
io.homeassistant.companion.android.settings.views.SettingsSubheaderScreenshotTest ‑ SettingsSubheader with equal padding
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$GetEntitiesTest ‑ Given IntegrationException, when getEntities, then return empty list()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$GetEntitiesTest ‑ Given null access token, when getEntities, then return empty list and trigger fail fast()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$GetEntitiesTest ‑ Given valid access token and entities, when getEntities, then return mapped entities()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$RegisterRefreshTokenTest ‑ Given null response body, when registerRefreshToken, then throw IntegrationException with AuthorizationException cause()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$RegisterRefreshTokenTest ‑ Given successful token refresh, when registerRefreshToken, then return server with new access token()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$RegisterRefreshTokenTest ‑ Given unsuccessful response, when registerRefreshToken, then throw IntegrationException()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$RenderTemplateTest ‑ Given JsonPrimitive result, when renderTemplate, then return content without quotes()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$RenderTemplateTest ‑ Given non-primitive result, when renderTemplate, then return toString()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$RenderTemplateTest ‑ Given null JsonPrimitive content, when renderTemplate, then return null()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$WearServerTest ‑ Given cloud and external URLs, when getBaseUrls, then return both with cloud first()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$WearServerTest ‑ Given cloudhook and external URLs, when getWebhookUrls, then return both with cloudhook first()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$WearServerTest ‑ Given invalid external URL, when getBaseUrls, then return empty list()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$WearServerTest ‑ Given invalid external URL, when getWebhookUrls, then return empty list()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$WearServerTest ‑ Given only external URL, when getBaseUrls, then return only external URL()
io.homeassistant.companion.android.settings.wear.SettingsWearRepositoryTest$WearServerTest ‑ Given only external URL, when getWebhookUrls, then return external webhook URL()
io.homeassistant.companion.android.settings.wear.SettingsWearViewModelTest ‑ Given all wear nodes have app installed when findAllWearDevices and findWearDevicesWithApp called then installedOnDevices is true()
io.homeassistant.companion.android.settings.wear.SettingsWearViewModelTest ‑ Given some wear nodes have app installed when findAllWearDevices and findWearDevicesWithApp called then installedOnDevices is true()
io.homeassistant.companion.android.settings.wear.SettingsWearViewModelTest ‑ Given viewModel initialized when collecting allConnectedNodes then emits empty list()
io.homeassistant.companion.android.settings.wear.SettingsWearViewModelTest ‑ Given viewModel initialized when collecting settingsWearOnboardingViewUiState then initial state is correct()
io.homeassistant.companion.android.settings.wear.SettingsWearViewModelTest ‑ Given viewModel initialized when collecting wearNodesWithApp then emits empty set()
io.homeassistant.companion.android.settings.wear.SettingsWearViewModelTest ‑ Given wear nodes present when findAllWearDevices called then allConnectedNodes flow emits these nodes()
io.homeassistant.companion.android.settings.wear.SettingsWearViewModelTest ‑ Given wear nodes with app present when findWearDevicesWithApp called then wearNodesWithApp flow emits these nodes()
io.homeassistant.companion.android.settings.wear.SettingsWearViewModelTest ‑ Given wear nodes without app when findAllWearDevices called then UI state shows message_missing_all()
io.homeassistant.companion.android.settings.wear.views.SettingsWearOnboardingViewPreviewsTest ‑ Onboarding View checking for devices
io.homeassistant.companion.android.settings.wear.views.SettingsWearOnboardingViewPreviewsTest ‑ Onboarding view app missing on all devices
io.homeassistant.companion.android.settings.wear.views.SettingsWearOnboardingViewPreviewsTest ‑ Onboarding view no devices found
io.homeassistant.companion.android.splash.SplashActivityTest ‑ launchActivity
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given LOCAL_NETWORK_NOT_CONNECTED ApiException when export then returns NotConnected()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given SDK O_MR1 plus and not automotive when appSupportsThread then returns true()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given SDK before O_MR1 when appSupportsThread then returns false()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given app unsupported when export then returns AppUnsupported()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given automotive device when appSupportsThread then returns false()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given device dataset is app-preferred when export then returns OnlyOnServer not imported()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given device has no dataset when export then returns NoneHaveCredentials()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given device has non-app-preferred dataset when export then returns OnlyOnDevice with intent()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given generic exception when export then exception propagates()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given non-admin user when coreSupportsThread then returns false()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given not registered when coreSupportsThread then returns false()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given server 2023_3 plus with thread component when coreSupportsThread then returns true()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given server before 2023_3 when coreSupportsThread then returns false()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given server datasets but none preferred when getPreferredDatasetFromServer then returns null()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given server has a preferred dataset when getPreferredDatasetFromServer then returns it()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given server returns no datasets when getPreferredDatasetFromServer then returns null()
io.homeassistant.companion.android.thread.ThreadManagerImplTest ‑ Given server unsupported when export then returns ServerUnsupported()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given a foreign-sourced server dataset preferred via an app credential when sync then removes it()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given app unsupported when sync then returns AppUnsupported()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given both have datasets and neither is device-preferred when sync then exports from device()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given both have datasets and the comparison fails when sync then returns AllHaveCredentials with nulls()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given neither device nor server has a dataset when sync then returns NoneHaveCredentials()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given only the device has a dataset when sync then returns OnlyOnDevice with intent()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given only the server has a dataset and import fails when sync then returns OnlyOnServer not imported()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given only the server has a dataset and import succeeds when sync then returns OnlyOnServer imported()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given server unsupported when sync then returns ServerUnsupported()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given the device already prefers the server dataset when sync then matches without exporting()
io.homeassistant.companion.android.thread.ThreadManagerImplTest$SyncPreferredDatasetTests ‑ Given the device prefers an app-added dataset when sync then updates the device to the server dataset()
io.homeassistant.companion.android.util.ChangeLogTest ‑ Given change log popup is enabled when showing change log then popup is shown()
io.homeassistant.companion.android.util.ChangeLogTest ‑ Given change log popup is not enabled when showing change log then popup is not shown()
io.homeassistant.companion.android.util.ChangeLogTest ‑ Given forceShow is true when showing change log then popup is shown regardless of enabled setting()
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given base64 data URI when saving then decodes base64 content correctly
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given binary base64 data URI when saving then writes binary content
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given blank filename when saving then notification title is blank
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given blank mimetype and no mimetype in URI when saving data URI then defaults to text plain
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given blank mimetype when saving data URI then extracts mimetype from URI
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given non-base64 data URI when saving then url-decodes content correctly
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given null filename when saving then notification title uses unnamed file label
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given pre-Q device when saving then writes file to external downloads directory
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given provided filename when saving then notification title uses filename
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given provided mimetype when saving data URI then uses provided mimetype
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given save is called when notification is posted then downloads channel is created
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given successful save when notification is posted then has ACTION_VIEW content intent
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given successful save when notification is posted then shows download complete
io.homeassistant.companion.android.util.DataUriDownloadManagerTest ‑ Given unsupported mimetype when saving on Q+ then shows failure notification
io.homeassistant.companion.android.util.FlowUtilTest ‑ Given event sent before delay and after delay when consuming a flow with delayFirstThrottle then emits at the right time()
io.homeassistant.companion.android.util.FlowUtilTest ‑ Given events after delay when consuming a flow with delayFirstThrottle then no delay apply()
io.homeassistant.companion.android.util.FlowUtilTest ‑ Given events before delay when consuming a flow with delayFirstThrottle then does not block upstream()
io.homeassistant.companion.android.util.FlowUtilTest ‑ Given events sent before delay when consuming a flow with delayFirstThrottle then emits only latest after delay()
io.homeassistant.companion.android.util.FlowUtilTest ‑ Given no event when consuming a flow with delayFirstThrottle then complete()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given no onJsConfirm callback when confirm triggered then returns false()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given no onShowFileChooser callback when file chooser triggered then returns false()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onHideCustomView callback when triggered then callback is invoked()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onJsConfirm callback when confirm triggered then callback receives message and result()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onJsConfirm with null message then callback is not invoked()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onJsConfirm with null result then callback is not invoked()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onPermissionRequest callback when permission requested then callback is invoked()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onPermissionRequest with null request then callback is not invoked()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onShowCustomView callback when triggered then view is forwarded()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onShowCustomView with null view then callback is not invoked()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onShowFileChooser callback when file chooser triggered then callback receives params()
io.homeassistant.companion.android.util.HAWebChromeClientTest ‑ Given onShowFileChooser with null callback then handler is not invoked()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given ERROR_AUTHENTICATION when onReceivedError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given ERROR_CONNECT when onReceivedError then emits UnreachableError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given ERROR_FAILED_SSL_HANDSHAKE when onReceivedError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given ERROR_HOST_LOOKUP when onReceivedError then emits UnreachableError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given ERROR_PROXY_AUTHENTICATION when onReceivedError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given ERROR_TIMEOUT when onReceivedError then emits UnreachableError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given ERROR_UNSUPPORTED_AUTH_SCHEME when onReceivedError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given HTTP error for different URL when onReceivedHttpError then does not emit error()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given HTTP error without reason when onReceivedHttpError then emits UnknownError with no description()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given SSL_DATE_INVALID error when onReceivedSslError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given SSL_EXPIRED error when onReceivedSslError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given SSL_IDMISMATCH error when onReceivedSslError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given SSL_INVALID error when onReceivedSslError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given SSL_NOTYETVALID error when onReceivedSslError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given SSL_UNTRUSTED error when onReceivedSslError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given TLS cert not found when onReceivedHttpError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given error for different URL when onReceivedError then does not emit error()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given error without description when onReceivedError then emits error with no description()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given expired TLS cert when onReceivedHttpError then emits AuthenticationError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given generic HTTP error when onReceivedHttpError then emits UnknownError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given no onReceivedHttpAuthRequest callback when auth requested then does not crash()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given null SSL error when onReceivedSslError then emits generic SSL error()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given onPageFinished callback when onPageFinished then invokes callback with final url()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given onReceivedHttpAuthRequest callback when auth requested then callback receives resource url()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ Given unknown error code when onReceivedError then emits UnknownError()
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ [1] true
io.homeassistant.companion.android.util.HAWebViewClientTest ‑ [2] false
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given a download when getUserAvatar then the request disables hardware bitmaps and carries the bearer token()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given a download when getUserAvatar then the request is keyed by the base-URL-agnostic cache key()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given a relative picture path when getUserAvatar then it is resolved against the server base URL()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given a resolvable picture when getUserAvatar then the avatar is downloaded()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given a serverId and picture path then the cache key is base-URL agnostic()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given a user without an id when getUserAvatar then returns null and entities are not queried()
Check notice on line 0 in .github
github-actions / Test Results
2518 tests found (test 2188 to 2518)
There are 2518 tests, see "Raw output" for the list of tests 2188 to 2518.
Raw output
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given an unknown server when getUserAvatar then returns null()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given credentials cannot be safely sent when getUserAvatar then it does not download and falls back to the cache()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given no person entity matches the user when getUserAvatar then returns null()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given the download yields no image when getUserAvatar then returns null()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given the server is unreachable and the memory cache misses when getUserAvatar then the disk cache is queried()
io.homeassistant.companion.android.util.ServerUserAvatarUseCaseTest ‑ Given the server is unreachable when getUserAvatar then the cache is queried by the cache key()
io.homeassistant.companion.android.util.UriExtensionsTest ‑ hasNonRootPath returns expected value
io.homeassistant.companion.android.util.UriExtensionsTest ‑ hasSameOrigin returns expected value
io.homeassistant.companion.android.util.UriExtensionsTest ‑ hasSameOrigin returns false when other is null
io.homeassistant.companion.android.util.UriExtensionsTest ‑ hasSameOrigin with string overload returns expected value
io.homeassistant.companion.android.util.UriExtensionsTest ‑ hasSameOrigin with string overload returns false when other is null
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl excludes multiple params
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl excludes specified query params
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl handles deeply nested paths
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl preserves all params when no exclusions
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl preserves fragment when no query params
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl returns null for URL without path
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl returns null for root path
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl returns path and query params
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl returns path for URL with path only
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl returns path query and fragment
io.homeassistant.companion.android.util.UriExtensionsTest ‑ toRelativeUrl strips excluded params leaving path only
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given URL with Google DNS when checking isPubliclyAccessible then returns true()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given URL with public domain resolving to public IP when checking isPubliclyAccessible then returns true()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given empty string when calling extractBaseUrl then throws MalformedHttpUrlException()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given input with homeassistant navigate prefix and absolute URL when calling handle then treats as relative path without taking care of second host and protocol()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given input with homeassistant navigate prefix and relative path when calling handle then returns resolved URL()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given invalid URI input when calling handle then returns base URL()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given null base and absolute URL when calling handle then returns parsed URL()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given null base and relative path when calling handle then returns null()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given unresolved TLD when checking isPubliclyAccessible then returns false()
io.homeassistant.companion.android.util.UrlUtilTest ‑ Given valid base url and invalid input URI that cannot be parsed into URL when calling handle then returns null()
io.homeassistant.companion.android.util.UrlUtilTest ‑ [10] "http://my.homeassistant.local:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [11] "http://localhost:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [12] "http://127.0.0.1:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [13] "http://192.168.1.10:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [14] "http://10.0.0.10:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [15] "http://172.16.0.1:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [16] "http://[::1]:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [17] "http://169.254.1.1:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [1] ""
io.homeassistant.companion.android.util.UrlUtilTest ‑ [1] "http://another.com/test", "http://another.com/test"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [1] "http://homeassistant.local:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [1] "https://example.com:8123/path/to/page?query=1#fragment", "https://example.com:8123/"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [1] "lovelace/default", "https://example.com:8123/lovelace/default"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [1] "not a url"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [2] " "
io.homeassistant.companion.android.util.UrlUtilTest ‑ [2] "/lovelace/default", "https://example.com:8123/lovelace/default"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [2] "ftp://example.com"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [2] "http://homeassistant.LOCAL:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [2] "http://homeassistant.local:8123", "http://homeassistant.local:8123/"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [2] "https://secure.com/path", "https://secure.com/path"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [3] "://missing-scheme"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [3] "http://another.com:9000/path", "http://another.com:9000/path"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [3] "http://homeassistant.LoCaL:42"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [3] "https://my.domain.com", "https://my.domain.com/"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [3] "lovelace/default?edit=1", "https://example.com:8123/lovelace/default?edit=1"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [4] "http://192.168.1.1:8123/lovelace", "http://192.168.1.1:8123/"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [4] "https://homeassistant.local"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [4] "lovelace/default#section", "https://example.com:8123/lovelace/default#section"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [5] "http://homeassistant.lan:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [5] "https://ha.example.com:443", "https://ha.example.com/"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [5] "lovelace/default?edit=1#section", "https://example.com:8123/lovelace/default?edit=1#section"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [6] "api/states/light.living_room", "https://example.com:8123/api/states/light.living_room"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [6] "http://homeassistant.home:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [7] "http://homeassistant.internal:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [7] "lovelace?key=value&other=test", "https://example.com:8123/lovelace?key=value&other=test"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [8] "http://homeassistant.localdomain:8123"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [8] "path/with%20encoded%20spaces", "https://example.com:8123/path/with%20encoded%20spaces"
io.homeassistant.companion.android.util.UrlUtilTest ‑ [9] "http://homeassistant.local:8123/lovelace/default"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "http://example.com:80" vs "http://example.com" -> "true"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com" vs "http://example.com" -> "false"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com" vs "https://example.com" -> "true"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com" vs "https://example.com.evil.com" -> "false"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com" vs "https://other.com" -> "false"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com/path" vs "https://example.com" -> "true"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com:443" vs "https://example.com" -> "true"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com:8123" vs "https://example.com:8123" -> "true"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com:8123" vs "https://example.com:8124" -> "false"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://example.com?query=1" vs "https://example.com" -> "true"
io.homeassistant.companion.android.util.UrlUtilTest ‑ hasSameOrigin: "https://sub.example.com" vs "https://example.com" -> "false"
io.homeassistant.companion.android.util.compose.HAAppScreenshotTest ‑ HAApp no start destination shows loading screen_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.util.compose.HAAppScreenshotTest ‑ HAApp no start destination shows loading screen_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.util.compose.HAAppScreenshotTest ‑ HAApp no start destination shows loading screen_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.util.compose.HAAppScreenshotTest ‑ HAApp no start destination shows loading screen_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.util.compose.HAAppScreenshotTest ‑ HAApp no start destination shows loading screen_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.util.compose.HAAppScreenshotTest ‑ HAApp no start destination shows loading screen_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given FrontendRoute as start when starts then show FrontendScreen
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given FrontendRoute when navigateToSetHomeNetworkRoute then navigate to SetHomeNetworkRoute
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given FrontendRoute when navigateToSettings then start SettingsActivity
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given FrontendRoute when navigateToSettings with deeplink then start SettingsActivity with deeplink extra
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given OnboardingRoute with skipWelcome with urlToOnboard as start when starts then show ServerDiscovery
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given OnboardingRoute with skipWelcome without urlToOnboard as start when starts then show ServerDiscovery
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given WearOnboarding done then setResult is called with correct output
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given WearOnboardingRoute with url to onboard as start when starts then navigate to ConnectionScreen
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given WearOnboardingRoute without as start when starts then navigate to ServerDiscoveryScreen
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given default OnboardingRoute as start when starts then show Welcome
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given no start start destination when starts then show loading
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given onboarding done on automotive then navigate to Automotive screen
io.homeassistant.companion.android.util.compose.HAAppTest ‑ Given onboarding done then navigate to FrontEnd
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given area name match when filtering then returns entities in area
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given blank query when filtering then returns all entities sorted by friendly name
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given case insensitive search when filtering then matches regardless of case
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given device name match when filtering then returns entities with device
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given domain match when filtering then returns entities in domain sorted by friendly name
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given empty pattern when fuzzy matching then returns 0_0
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given empty query when filtering then returns all entities sorted
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given empty text when fuzzy matching then returns 0_0
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given exact entity ID match when calculating score then returns high score
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given exact entity ID when filtering then returns matching entity
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given exact match when fuzzy matching then returns 1_0
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given friendly name match when calculating score then returns weighted score
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given friendly name match when filtering then returns matching entity
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given fuzzy match with distance when fuzzy matching then returns score
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given higher weighted field match when calculating score then ranks higher
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given identical scores when filtering then sorts by friendly name
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given large distance when fuzzy matching then returns 0_0
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given minimum length term when filtering then filters entities
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given multi-term match when calculating score then sums scores order doesn't matter
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given multi-term search when filtering then matches entities with all terms
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given multiple matches when filtering then sorts by score descending
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given no matching entities when filtering then returns empty list
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given one term not matching when calculating score then returns 0_0
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given partial match when filtering then returns matching entity
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given partial prefix when fuzzy matching then returns 1_0 for substring
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given pattern longer than text when fuzzy matching then returns low score
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given prefix match when fuzzy matching then returns 1_0 for substring
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given short term when filtering then returns all entities sorted by friendly name
io.homeassistant.companion.android.util.compose.entity.EntityPickerFilterTest ‑ Given substring match when fuzzy matching then returns 1_0
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker collapsed_phoneLTR_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker collapsed_phoneRLT_{device=spec:width=411.4dp,height=923.4dp, group=phone, locale=ar}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker collapsed_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker expanded with entities_phoneLTR_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker expanded with entities_phoneRLT_{device=spec:width=411.4dp,height=923.4dp, group=phone, locale=ar}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker expanded with entities_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker expanded with selected entity_phoneLTR_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker expanded with selected entity_phoneRLT_{device=spec:width=411.4dp,height=923.4dp, group=phone, locale=ar}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker expanded with selected entity_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker with empty list_phoneLTR_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker with empty list_phoneRLT_{device=spec:width=411.4dp,height=923.4dp, group=phone, locale=ar}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker with empty list_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker with many entities_phoneLTR_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker with many entities_phoneRLT_{device=spec:width=411.4dp,height=923.4dp, group=phone, locale=ar}
io.homeassistant.companion.android.util.compose.entity.EntityPickerScreenshotTest ‑ EntityPicker with many entities_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker when entity selected then callback invoked with entity id
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker when rendered then shows search field and entities
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker when searching with no matches then shows no results message
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker with empty list when rendered then shows no entities message
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker with entities when search text entered then filters entities
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker with entities when searching by domain then filters by domain
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker with entities when searching with different case then matches case insensitively
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker with entities when searching with multiple terms then filters by all terms
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given expanded picker with search text when clear button clicked then clears search text
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given filtered entities when search text cleared then shows all entities
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given no selection when rendered then shows add entity button
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given selected entity when clear button clicked then callback invoked
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given selected entity when rendered then shows entity name and clear button
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given selected entity with area and device when rendered then shows subtitle
io.homeassistant.companion.android.util.compose.entity.EntityPickerTest ‑ Given selected entity without device when rendered then shows only area
io.homeassistant.companion.android.util.compose.media.player.HAMediaPlayerScreenshotTest ‑ Media Player is muted
io.homeassistant.companion.android.util.compose.media.player.HAMediaPlayerScreenshotTest ‑ Media Player is playing
io.homeassistant.companion.android.util.compose.media.player.HAMediaPlayerScreenshotTest ‑ Media Player is playing controls hidden
io.homeassistant.companion.android.util.compose.media.player.HAMediaPlayerScreenshotTest ‑ Media Player is too small to display bottom controls
io.homeassistant.companion.android.util.compose.media.player.HAMediaPlayerScreenshotTest ‑ Media Player with 1 hour position
io.homeassistant.companion.android.util.compose.media.player.HAMediaPlayerScreenshotTest ‑ Media Player with 26 hours position
io.homeassistant.companion.android.util.compose.webview.WebViewBackNavigationTest ‑ Given cross-origin previous url and root loaded url when resolving back action then returns None()
io.homeassistant.companion.android.util.compose.webview.WebViewBackNavigationTest ‑ Given cross-origin previous url and sub-path loaded url when resolving back action then returns NavigateToRoot()
io.homeassistant.companion.android.util.compose.webview.WebViewBackNavigationTest ‑ Given no history and null loaded url when resolving back action then returns None()
io.homeassistant.companion.android.util.compose.webview.WebViewBackNavigationTest ‑ Given no history and root loaded url when resolving back action then returns None()
io.homeassistant.companion.android.util.compose.webview.WebViewBackNavigationTest ‑ Given no history and sub-path loaded url when resolving back action then returns None()
io.homeassistant.companion.android.util.compose.webview.WebViewBackNavigationTest ‑ Given no history and sub-path loaded url with extra params when resolving back action then returns None()
io.homeassistant.companion.android.util.compose.webview.WebViewBackNavigationTest ‑ Given non-http previous url when resolving back action then returns NavigateToRoot()
io.homeassistant.companion.android.util.compose.webview.WebViewBackNavigationTest ‑ Given same-origin previous url when resolving back action then returns GoBack()
io.homeassistant.companion.android.websocket.WebsocketManagerTest ‑ Given setting ALWAYS when job runs then does not run other setting checks
io.homeassistant.companion.android.websocket.WebsocketManagerTest ‑ Given setting ALWAYS when job runs without connection then finishes without screen and network checks
io.homeassistant.companion.android.websocket.WebsocketManagerTest ‑ Given setting ALWAYS when job runs without registration then finishes without screen and network checks
io.homeassistant.companion.android.websocket.WebsocketManagerTest ‑ Given setting HOME_WIFI when job runs without home Wi-Fi then finishes without other checks
io.homeassistant.companion.android.websocket.WebsocketManagerTest ‑ Given setting NEVER when job runs then finishes without checks
io.homeassistant.companion.android.websocket.WebsocketManagerTest ‑ Given setting SCREEN_ON when job runs with screen off then finishes without other checks
io.homeassistant.companion.android.webview.WebViewContentScreenScreenshotTest ‑ WebView request notification permission
io.homeassistant.companion.android.webview.WebViewContentScreenScreenshotTest ‑ WebView with app locked
io.homeassistant.companion.android.webview.WebViewContentScreenScreenshotTest ‑ WebView with app unlocked
io.homeassistant.companion.android.webview.WebViewContentScreenScreenshotTest ‑ WebView with player
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given IllegalStateException when getting session state then does not collect url flow()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given Matter Error result when startCommissioningMatterDevice then step is ERROR_MATTER_OTHER()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given Matter Ready result when startCommissioningMatterDevice then step is MATTER_IN_PROGRESS and intent is captured()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given Thread AppUnsupported result when exportThreadCredentials then step is ERROR_THREAD_OTHER()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given Thread NoneHaveCredentials result when exportThreadCredentials then step is THREAD_NONE()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given Thread NotConnected result when exportThreadCredentials then step is ERROR_THREAD_LOCAL_NETWORK()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given Thread Ready result when exportThreadCredentials then step is THREAD_EXPORT_TO_SERVER_ONLY and intent is captured()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given base url changes when collecting then preserves current path and keeps history()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given https url when load called then loads url without security level prompt()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given lifecycle stops when collecting url flow then job is cancelled()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given path consumed when url changes then path is not applied again()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given presenter initialized when getActiveServer called then returns current server id()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given previous load in progress when load called again then second flow is used()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given security level already set when load called then loads url directly()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given security level already shown when load called again then loads url()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given security level not set when load called then shows security level fragment()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given server does not exist when load called then falls back to active server()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given server exists and session anonymous when load called then does not collect url flow()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given server exists and session connected when load called then collects url flow()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given url state changes from HasUrl to InsecureState when collecting then shows block insecure()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given url state is HasUrl when load called then loads url in webview()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given url state is HasUrl with entityId path when load called then ignores path()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given url state is HasUrl with path when load called then loads url with path()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given url state is InsecureState when load called then shows block insecure screen()
io.homeassistant.companion.android.webview.WebViewPresenterImplTest ‑ Given url to load when server is changed then history should not be kept()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given CameraWidget when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given EntityWidget when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given MediaPlayerWidget when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given Tile when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given TodoWidget when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given automotive context when testing AndroidAutoFavorite then return correct attributes()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given disabled Shortcut when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given disabled Watch when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given enabled Shortcut when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given enabled Watch when testing attributes then return correct values()
io.homeassistant.companion.android.webview.addto.EntityAddToActionTest ‑ Given non-automotive context when testing AndroidAutoFavorite then return correct attributes()
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenTest ‑ Given screen displayed when clicking change security level then change security level is triggered
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenTest ‑ Given screen displayed when clicking open settings then open settings is triggered
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenTest ‑ Given screen displayed with both missing location and home setup then both banners are shown
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenTest ‑ Given screen displayed with missing home setup when clicking fix then configure home network is triggered
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenTest ‑ Given screen displayed with missing location when clicking fix then location permission is requested
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenTest ‑ Given screen displayed with no missing then both banners are hidden
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure both missing_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure both missing_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure both missing_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure both missing_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure both missing_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure both missing_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing home setup only_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing home setup only_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing home setup only_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing home setup only_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing home setup only_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing home setup only_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing location only_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing location only_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing location only_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing location only_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing location only_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure missing location only_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure no missing_foldable_{device=spec:width=851.7dp,height=882.9dp,dpi=390,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure no missing_phone_landscape_{device=spec:width=411.4dp,height=923.4dp,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure no missing_phone_{device=spec:width=411.4dp,height=923.4dp, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure no missing_small_phone_{device=spec:width=360dp,height=640dp,dpi=480,orientation=landscape, group=phone}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure no missing_tablet_landscape_{device=spec:width=1280dp,height=800dp,dpi=320, group=tablet}
io.homeassistant.companion.android.webview.insecure.BlockInsecureScreenshotTest ‑ BlockInsecure no missing_tablet_{device=spec:width=1280dp,height=800dp,dpi=320,orientation=portrait, group=tablet, uiMode=33}
io.homeassistant.companion.android.webview.insecure.BlockInsecureViewModelTest ‑ Given default uiState Then missingHomeSetup and missingLocation are true()
io.homeassistant.companion.android.webview.insecure.BlockInsecureViewModelTest ‑ Given exception when getting security state Then uiState keeps default values()
io.homeassistant.companion.android.webview.insecure.BlockInsecureViewModelTest ‑ Given security state with home setup and location When viewModel is created Then uiState shows no missing items()
io.homeassistant.companion.android.webview.insecure.BlockInsecureViewModelTest ‑ Given security state without home setup When viewModel is created Then uiState shows missing home setup()
io.homeassistant.companion.android.webview.insecure.BlockInsecureViewModelTest ‑ Given security state without home setup and location When viewModel is created Then uiState shows both missing()
io.homeassistant.companion.android.webview.insecure.BlockInsecureViewModelTest ‑ Given security state without location When viewModel is created Then uiState shows missing location()
io.homeassistant.companion.android.webview.insecure.BlockInsecureViewModelTest ‑ Given viewModel When refresh is called Then security state is fetched again()
io.homeassistant.companion.android.widgets.BaseGlanceEntityWidgetReceiverTest ‑ Given intent with ACTION_APPWIDGET_CREATED without EXTRA_APPWIDGET_ID when onReceive is called then do nothing()
io.homeassistant.companion.android.widgets.BaseGlanceEntityWidgetReceiverTest ‑ Given intent with ACTION_APPWIDGET_CREATED without EXTRA_WIDGET_ENTITY when onReceive is called then do nothing()
io.homeassistant.companion.android.widgets.BaseGlanceEntityWidgetReceiverTest ‑ Given valid intent with ACTION_APPWIDGET_CREATED when onReceive is called then persist WidgetEntity in DAO()
io.homeassistant.companion.android.widgets.BaseGlanceEntityWidgetReceiverTest ‑ Given valid intent with ACTION_APPWIDGET_UPDATE when onReceive is called then updateAll()
io.homeassistant.companion.android.widgets.BaseGlanceEntityWidgetReceiverTest ‑ Given valid intent with ACTION_SCREEN_OFF when onReceive is called with entities being watched then stop watching for entities changes()
io.homeassistant.companion.android.widgets.BaseGlanceEntityWidgetReceiverTest ‑ Given valid intent with ACTION_SCREEN_ON when onReceive is called and no server is register then do nothing()
io.homeassistant.companion.android.widgets.BaseGlanceEntityWidgetReceiverTest ‑ Given valid intent with ACTION_SCREEN_ON when onReceive is called with registered server then it cleanup orphans()
io.homeassistant.companion.android.widgets.BaseGlanceEntityWidgetReceiverTest ‑ Given valid intent with ACTION_SCREEN_ON when onReceive is called with registered servers and multiple entities then it watch for changes and updates widgets()
io.homeassistant.companion.android.widgets.entity.EntityWidgetTest ‑ Given entity available but configured attribute absent from state when resolving then shows only state without null
io.homeassistant.companion.android.widgets.entity.EntityWidgetTest ‑ Given entity available with attributes when resolving then shows state and attribute
io.homeassistant.companion.android.widgets.entity.EntityWidgetTest ‑ Given entity returns null without exception and attribute configured and cached value when resolving then shows cached value with error icon
io.homeassistant.companion.android.widgets.entity.EntityWidgetTest ‑ Given exception thrown and attributes configured and cached value when resolving then shows cached value with error icon
io.homeassistant.companion.android.widgets.entity.EntityWidgetTest ‑ Given exception thrown and no attributes configured and cached value when resolving then shows cached value with error icon
io.homeassistant.companion.android.widgets.todo.TodoGlanceAppWidgetTest ‑ Given EmptyState when ScreenForState then it displays EmptyScreen
io.homeassistant.companion.android.widgets.todo.TodoGlanceAppWidgetTest ‑ Given LoadingState when ScreenForState then it displays CircularProgressIndicator
io.homeassistant.companion.android.widgets.todo.TodoGlanceAppWidgetTest ‑ Given TodoState with empty items when ScreenForState then it displays the empty data
io.homeassistant.companion.android.widgets.todo.TodoGlanceAppWidgetTest ‑ Given TodoState with item complete and active and not showComplete when ScreenForState then it displays only active
io.homeassistant.companion.android.widgets.todo.TodoGlanceAppWidgetTest ‑ Given TodoState with item complete and active and showComplete when ScreenForState then it displays everything
io.homeassistant.companion.android.widgets.todo.TodoGlanceAppWidgetTest ‑ Given TodoState with only active items and showComplete when ScreenForState then it displays only active
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateTest ‑ Given TodoItem from entity with COMPLETED STATUS when invoking from then returns a TodoItemState with done flag()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateTest ‑ Given TodoItem from entity with null summary when invoking from then returns a TodoItemState with empty name()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateTest ‑ Given TodoItem from entity without COMPLETED STATUS when invoking from then returns a TodoItemState without done flag()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateTest ‑ Given TodoStateWithData with items completed when invoking hasDisplayableItems then returns true only when showComplete is true()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateTest ‑ Given TodoStateWithData with items not completed and completed when invoking hasDisplayableItems then returns true()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateTest ‑ Given TodoStateWithData with no items when invoking hasDisplayableItems then returns false()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateTest ‑ Given TodoWidgetEntity and Entity and todos when invoking from then returns TodoStateWithData with sync flag()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateTest ‑ Given TodoWidgetEntity with latest update data when invoking from then return TodoStateWithData with outOfSync true()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateUpdaterTest ‑ Given widgetID in DAO when subscribing to stateFlow then it emits only when configuration or entity changes()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateUpdaterTest ‑ Given widgetID in DAO when subscribing to stateFlow with null entityUpdates then it emits dao entity with out of sync()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateUpdaterTest ‑ Given widgetID when subscribing to stateFlow with error then it catches and complete the flow()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateUpdaterTest ‑ Given widgetId in DAO when subscribing to stateFlow then emits DAO Entry current state out of sync()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateUpdaterTest ‑ Given widgetId in DAO when subscribing to stateFlow then updates todo items and emits new state()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateUpdaterTest ‑ Given widgetId in DAO with a removed server when subscribing to stateFlow then emits DAO Entry current state out of sync()
io.homeassistant.companion.android.widgets.todo.TodoWidgetStateUpdaterTest ‑ Given widgetId not in DAO when subscribing to stateFlow then emits EmptyState()
io.homeassistant.companion.android.widgets.todo.TodoWidgetTest ‑ Given entries in DAO when invoking getWidgetEntitiesByServer then returns properly mapped items()
io.homeassistant.companion.android.widgets.todo.TodoWidgetTest ‑ Given no entry in DAO when invoking getWidgetEntitiesByServer then returns empty()
io.homeassistant.companion.android.widgets.todo.TodoWidgetToggleActionsTest ‑ Given a widgetID and todo item state with uid but server removed when present in DAO and invoking onAction then do nothing()
io.homeassistant.companion.android.widgets.todo.TodoWidgetToggleActionsTest ‑ Given a widgetID and todo item state with uid when present in DAO and invoking onAction then do updateTodo and toggle status and invoke update()
io.homeassistant.companion.android.widgets.todo.TodoWidgetToggleActionsTest ‑ Given a widgetID and todo item state without uid when present in DAO and invoking onAction then do nothing()
io.homeassistant.companion.android.widgets.todo.TodoWidgetToggleActionsTest ‑ Given a widgetID when not present in DAO and invoking onAction then do nothing()
io.homeassistant.companion.android.widgets.todo.TodoWidgetToggleActionsTest ‑ Given boolean value when invoking toggleStatus then mapping is valid from the API point of view()
io.homeassistant.lint.annotation.NamedAnnotationDetectorTest ‑ Given a class using @Named annotation then NoNamedAnnotation issue is raised
io.homeassistant.lint.annotation.NamedAnnotationDetectorTest ‑ Given a class using a custom qualifier annotation then no issues
io.homeassistant.lint.room.CoroutineDaoFunctionsIssueTest ‑ Given a DAO when function is not suspending and does not return a Flow then CoroutineDaoFunction issue is raised
io.homeassistant.lint.room.CoroutineDaoFunctionsIssueTest ‑ Given a DAO when function is not suspending and does return a Flow then no issues
io.homeassistant.lint.room.CoroutineDaoFunctionsIssueTest ‑ Given a DAO when function is not suspending and does return a PagingSource then no issues
io.homeassistant.lint.room.CoroutineDaoFunctionsIssueTest ‑ Given a DAO when function is suspending and does not return a Flow then no issues
io.homeassistant.lint.sdkversion.SdkVersionDetectorTest ‑ Given Build_VERSION_SDK_INT read without suppression then error is reported
io.homeassistant.lint.sdkversion.SdkVersionDetectorTest ‑ Given SDK_INT read suppressed on enclosing class then no error
io.homeassistant.lint.sdkversion.SdkVersionDetectorTest ‑ Given SDK_INT read suppressed on enclosing function then no error
io.homeassistant.lint.sdkversion.SdkVersionDetectorTest ‑ Given an unrelated SDK_INT constant on a different class then no error
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class with Serializable annotation when invoking Json decodeFromString then no issue
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class with Serializable annotation when invoking Json encodeToString then no issue
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class with Serializable annotation when invoking kotlinJsonMapper decodeFromString then no issue
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class with Serializable annotation when invoking kotlinJsonMapper encodeToString then no issue
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class without Serializable annotation when invoking Json decodeFromString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class without Serializable annotation when invoking Json encodeToString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class without Serializable annotation when invoking kotlinJsonMapper encodeToString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class without Serializable annotation when invoking kotlinJsonMapper encodeToString with custom serializer then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class without Serializable annotation when invoking kotlinJsonMapper without specifying explicitly the generic type of decodeFromString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class without Serializable annotation within a Map when invoking kotlinJsonMapper decodeFromString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a class without Serializable annotation within a Map when invoking kotlinJsonMapper encodeToString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a list of a class without Serializable annotation within a Map when invoking kotlinJsonMapper decodeFromString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a list of a class without Serializable annotation within a Map when invoking kotlinJsonMapper encodeToString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a sub class without Serializable annotation when invoking kotlinJsonMapper decodeFromString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given a sub class without Serializable annotation when invoking kotlinJsonMapper encodeToString then MissingSerializableAnnotationIssue is raised
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given the usage of any when invoking kotlinJsonMapper decodeFromString with a MapAnySerializer then hint to avoid AnySerializer is logged
io.homeassistant.lint.serialization.MissingSerializableAnnotationIssueTest ‑ Given the usage of any when invoking kotlinJsonMapper encodeToString with a MapAnySerializer then hint to avoid AnySerializer is logged
io.homeassistant.lint.webview.EvaluateJavascriptDetectorTest ‑ Given evaluateJavascript call with @EvaluateJavascriptUsage on class then no error
io.homeassistant.lint.webview.EvaluateJavascriptDetectorTest ‑ Given evaluateJavascript call with @EvaluateJavascriptUsage on function then no error
io.homeassistant.lint.webview.EvaluateJavascriptDetectorTest ‑ Given evaluateJavascript call with @OptIn on class then no error
io.homeassistant.lint.webview.EvaluateJavascriptDetectorTest ‑ Given evaluateJavascript call with @OptIn on function then no error
io.homeassistant.lint.webview.EvaluateJavascriptDetectorTest ‑ Given evaluateJavascript call with androidx @OptIn on function then no error
io.homeassistant.lint.webview.EvaluateJavascriptDetectorTest ‑ Given evaluateJavascript call with inline @OptIn on expression then no error
io.homeassistant.lint.webview.EvaluateJavascriptDetectorTest ‑ Given evaluateJavascript call without annotation then error is reported