mirror of
https://github.com/bitwarden/android.git
synced 2025-12-12 18:41:10 -06:00
PM-21634: Update loading Dialog to be a real dialog (#5191)
This commit is contained in:
parent
119812507a
commit
db956b9b91
@ -8,8 +8,8 @@ import androidx.compose.ui.semantics.semantics
|
|||||||
import androidx.compose.ui.semantics.testTag
|
import androidx.compose.ui.semantics.testTag
|
||||||
import androidx.compose.ui.semantics.testTagsAsResourceId
|
import androidx.compose.ui.semantics.testTagsAsResourceId
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.window.Popup
|
import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.PopupProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import com.x8bit.bitwarden.ui.platform.components.content.BitwardenLoadingContent
|
import com.x8bit.bitwarden.ui.platform.components.content.BitwardenLoadingContent
|
||||||
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
|
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
|
||||||
|
|
||||||
@ -31,12 +31,14 @@ import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
|
|||||||
fun BitwardenLoadingDialog(
|
fun BitwardenLoadingDialog(
|
||||||
text: String,
|
text: String,
|
||||||
) {
|
) {
|
||||||
Popup(
|
Dialog(
|
||||||
properties = PopupProperties(
|
properties = DialogProperties(
|
||||||
dismissOnBackPress = false,
|
dismissOnBackPress = false,
|
||||||
dismissOnClickOutside = false,
|
dismissOnClickOutside = false,
|
||||||
clippingEnabled = false,
|
usePlatformDefaultWidth = false,
|
||||||
|
decorFitsSystemWindows = false,
|
||||||
),
|
),
|
||||||
|
onDismissRequest = {},
|
||||||
) {
|
) {
|
||||||
BitwardenLoadingContent(
|
BitwardenLoadingContent(
|
||||||
text = text,
|
text = text,
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import androidx.compose.ui.test.assertIsOn
|
|||||||
import androidx.compose.ui.test.filterToOne
|
import androidx.compose.ui.test.filterToOne
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
@ -22,7 +21,6 @@ import com.x8bit.bitwarden.ui.platform.components.toggle.UnlockWithPinState
|
|||||||
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricSupportStatus
|
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricSupportStatus
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
|
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
@ -573,14 +571,14 @@ class SetupUnlockScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `Loading Dialog should be displayed according to state`() {
|
fun `Loading Dialog should be displayed according to state`() {
|
||||||
val title = "title"
|
val title = "title"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
it.copy(dialogState = SetupUnlockState.DialogState.Loading(title = title.asText()))
|
it.copy(dialogState = SetupUnlockState.DialogState.Loading(title = title.asText()))
|
||||||
}
|
}
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onAllNodesWithText(text = title)
|
.onAllNodesWithText(text = title)
|
||||||
.filterToOne(hasAnyAncestor(isPopup()))
|
.filterToOne(hasAnyAncestor(isDialog()))
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
|
|
||||||
mutableStateFlow.update { it.copy(dialogState = null) }
|
mutableStateFlow.update { it.copy(dialogState = null) }
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import androidx.compose.ui.test.assertTextEquals
|
|||||||
import androidx.compose.ui.test.filterToOne
|
import androidx.compose.ui.test.filterToOne
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
@ -17,7 +16,7 @@ import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
|||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
@ -168,7 +167,7 @@ class EnterpriseSignOnScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText("Loading").assertDoesNotExist()
|
composeTestRule.onNodeWithText("Loading").assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -182,7 +181,7 @@ class EnterpriseSignOnScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText("Loading")
|
.onNodeWithText("Loading")
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import androidx.compose.ui.test.assertCountEquals
|
|||||||
import androidx.compose.ui.test.assertIsDisplayed
|
import androidx.compose.ui.test.assertIsDisplayed
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
@ -17,7 +16,7 @@ import com.x8bit.bitwarden.R
|
|||||||
import com.x8bit.bitwarden.ui.auth.feature.loginwithdevice.model.LoginWithDeviceType
|
import com.x8bit.bitwarden.ui.auth.feature.loginwithdevice.model.LoginWithDeviceType
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.isProgressBar
|
import com.x8bit.bitwarden.ui.util.isProgressBar
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
@ -148,11 +147,11 @@ class LoginWithDeviceScreenTest : BaseComposeTest() {
|
|||||||
}
|
}
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
|
|
||||||
mutableStateFlow.update { it.copy(dialogState = null) }
|
mutableStateFlow.update { it.copy(dialogState = null) }
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import androidx.compose.ui.test.filterToOne
|
|||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isDisplayed
|
import androidx.compose.ui.test.isDisplayed
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
@ -18,7 +17,6 @@ import com.bitwarden.ui.util.asText
|
|||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
@ -83,12 +81,12 @@ class RemovePasswordScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(text = loadingMessage)
|
.onNodeWithText(text = loadingMessage)
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
.isDisplayed()
|
.isDisplayed()
|
||||||
|
|
||||||
mutableStateFlow.update { it.copy(dialogState = null) }
|
mutableStateFlow.update { it.copy(dialogState = null) }
|
||||||
|
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import androidx.compose.ui.test.assertIsOff
|
|||||||
import androidx.compose.ui.test.assertIsOn
|
import androidx.compose.ui.test.assertIsOn
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
@ -14,7 +13,7 @@ import androidx.compose.ui.test.performScrollTo
|
|||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
@ -247,17 +246,17 @@ class TrustedDeviceScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `dialog should update according to state`() {
|
fun `dialog should update according to state`() {
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
it.copy(
|
it.copy(
|
||||||
dialogState = TrustedDeviceState.DialogState.Loading(message = "Loading".asText()),
|
dialogState = TrustedDeviceState.DialogState.Loading(message = "Loading".asText()),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
composeTestRule.onNode(isPopup()).assertIsDisplayed()
|
composeTestRule.onNode(isDialog()).assertIsDisplayed()
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(text = "Loading")
|
.onNodeWithText(text = "Loading")
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -280,7 +279,7 @@ class TrustedDeviceScreenTest : BaseComposeTest() {
|
|||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
|
|
||||||
mutableStateFlow.update { it.copy(dialogState = null) }
|
mutableStateFlow.update { it.copy(dialogState = null) }
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import androidx.compose.ui.test.hasAnyAncestor
|
|||||||
import androidx.compose.ui.test.hasScrollToNodeAction
|
import androidx.compose.ui.test.hasScrollToNodeAction
|
||||||
import androidx.compose.ui.test.hasText
|
import androidx.compose.ui.test.hasText
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
@ -31,7 +30,6 @@ import com.x8bit.bitwarden.ui.tools.feature.send.model.SendItemType
|
|||||||
import com.x8bit.bitwarden.ui.tools.feature.send.viewsend.ViewSendRoute
|
import com.x8bit.bitwarden.ui.tools.feature.send.viewsend.ViewSendRoute
|
||||||
import com.x8bit.bitwarden.ui.util.assertMasterPasswordDialogDisplayed
|
import com.x8bit.bitwarden.ui.util.assertMasterPasswordDialogDisplayed
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import com.x8bit.bitwarden.ui.util.isProgressBar
|
import com.x8bit.bitwarden.ui.util.isProgressBar
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.addedit.VaultAddEditArgs
|
import com.x8bit.bitwarden.ui.vault.feature.addedit.VaultAddEditArgs
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.item.VaultItemArgs
|
import com.x8bit.bitwarden.ui.vault.feature.item.VaultItemArgs
|
||||||
@ -962,7 +960,7 @@ class SearchScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
val loadingMessage = "syncing"
|
val loadingMessage = "syncing"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -972,7 +970,7 @@ class SearchScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,6 @@ import androidx.compose.ui.test.hasAnyAncestor
|
|||||||
import androidx.compose.ui.test.hasTextExactly
|
import androidx.compose.ui.test.hasTextExactly
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isDisplayed
|
import androidx.compose.ui.test.isDisplayed
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.isToggleable
|
import androidx.compose.ui.test.isToggleable
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
@ -21,16 +20,15 @@ import androidx.compose.ui.test.performScrollTo
|
|||||||
import androidx.compose.ui.test.performTextInput
|
import androidx.compose.ui.test.performTextInput
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
|
import com.bitwarden.ui.util.asText
|
||||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout
|
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout
|
||||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction
|
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.bitwarden.ui.util.asText
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.toggle.UnlockWithPinState
|
import com.x8bit.bitwarden.ui.platform.components.toggle.UnlockWithPinState
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricSupportStatus
|
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricSupportStatus
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
|
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import io.mockk.coEvery
|
import io.mockk.coEvery
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
@ -1450,7 +1448,7 @@ class AccountSecurityScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
val loadingMessage = "Loading"
|
val loadingMessage = "Loading"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -1460,7 +1458,7 @@ class AccountSecurityScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText("Loading")
|
.onNodeWithText("Loading")
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -6,15 +6,14 @@ import androidx.compose.ui.test.filterToOne
|
|||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.hasClickAction
|
import androidx.compose.ui.test.hasClickAction
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
import androidx.compose.ui.test.performScrollTo
|
import androidx.compose.ui.test.performScrollTo
|
||||||
import androidx.compose.ui.test.performTextInput
|
import androidx.compose.ui.test.performTextInput
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
|
||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
@ -72,7 +71,7 @@ class DeleteAccountScreenTest : BaseComposeTest() {
|
|||||||
fun `loading dialog presence should update with dialog state`() {
|
fun `loading dialog presence should update with dialog state`() {
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onAllNodesWithText("Loading")
|
.onAllNodesWithText("Loading")
|
||||||
.filterToOne(hasAnyAncestor(isPopup()))
|
.filterToOne(hasAnyAncestor(isDialog()))
|
||||||
.assertDoesNotExist()
|
.assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -81,7 +80,7 @@ class DeleteAccountScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onAllNodesWithText("Loading")
|
.onAllNodesWithText("Loading")
|
||||||
.filterToOne(hasAnyAncestor(isPopup()))
|
.filterToOne(hasAnyAncestor(isDialog()))
|
||||||
.assertExists()
|
.assertExists()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,9 +222,11 @@ class DeleteAccountScreenTest : BaseComposeTest() {
|
|||||||
.assertDoesNotExist()
|
.assertDoesNotExist()
|
||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText("This action cannot be completed because your account " +
|
.onNodeWithText(
|
||||||
"is owned by an organization. " +
|
text = "This action cannot be completed because your account " +
|
||||||
"Contact your organization administrator for additional details.")
|
"is owned by an organization. " +
|
||||||
|
"Contact your organization administrator for additional details.",
|
||||||
|
)
|
||||||
.assertDoesNotExist()
|
.assertDoesNotExist()
|
||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
@ -242,9 +243,11 @@ class DeleteAccountScreenTest : BaseComposeTest() {
|
|||||||
.assertExists()
|
.assertExists()
|
||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText("This action cannot be completed because your account " +
|
.onNodeWithText(
|
||||||
"is owned by an organization. " +
|
text = "This action cannot be completed because your account " +
|
||||||
"Contact your organization administrator for additional details.")
|
"is owned by an organization. " +
|
||||||
|
"Contact your organization administrator for additional details.",
|
||||||
|
)
|
||||||
.assertExists()
|
.assertExists()
|
||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
|
|||||||
@ -3,15 +3,14 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.accountsecurity.deletea
|
|||||||
import androidx.compose.ui.test.filterToOne
|
import androidx.compose.ui.test.filterToOne
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onFirst
|
import androidx.compose.ui.test.onFirst
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
import androidx.compose.ui.test.performTextInput
|
import androidx.compose.ui.test.performTextInput
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
|
||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
@ -51,7 +50,7 @@ class DeleteAccountConfirmationScreenTest : BaseComposeTest() {
|
|||||||
fun `loading dialog presence should update with dialog state`() {
|
fun `loading dialog presence should update with dialog state`() {
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onAllNodesWithText("Loading")
|
.onAllNodesWithText("Loading")
|
||||||
.filterToOne(hasAnyAncestor(isPopup()))
|
.filterToOne(hasAnyAncestor(isDialog()))
|
||||||
.assertDoesNotExist()
|
.assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -62,7 +61,7 @@ class DeleteAccountConfirmationScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onAllNodesWithText("Loading")
|
.onAllNodesWithText("Loading")
|
||||||
.filterToOne(hasAnyAncestor(isPopup()))
|
.filterToOne(hasAnyAncestor(isDialog()))
|
||||||
.assertExists()
|
.assertExists()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +98,7 @@ class DeleteAccountConfirmationScreenTest : BaseComposeTest() {
|
|||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
DEFAULT_STATE.copy(
|
DEFAULT_STATE.copy(
|
||||||
dialog =
|
dialog =
|
||||||
DeleteAccountConfirmationState.DeleteAccountConfirmationDialog.DeleteSuccess(),
|
DeleteAccountConfirmationState.DeleteAccountConfirmationDialog.DeleteSuccess(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +113,7 @@ class DeleteAccountConfirmationScreenTest : BaseComposeTest() {
|
|||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
DEFAULT_STATE.copy(
|
DEFAULT_STATE.copy(
|
||||||
dialog =
|
dialog =
|
||||||
DeleteAccountConfirmationState.DeleteAccountConfirmationDialog.DeleteSuccess(),
|
DeleteAccountConfirmationState.DeleteAccountConfirmationDialog.DeleteSuccess(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import androidx.compose.ui.test.filterToOne
|
|||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isDisplayed
|
import androidx.compose.ui.test.isDisplayed
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onFirst
|
import androidx.compose.ui.test.onFirst
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
@ -16,13 +15,12 @@ import androidx.compose.ui.test.performClick
|
|||||||
import androidx.compose.ui.test.performScrollTo
|
import androidx.compose.ui.test.performScrollTo
|
||||||
import androidx.compose.ui.test.performTextInput
|
import androidx.compose.ui.test.performTextInput
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
|
import com.bitwarden.ui.util.asText
|
||||||
import com.x8bit.bitwarden.ui.auth.feature.completeregistration.PasswordStrengthState
|
import com.x8bit.bitwarden.ui.auth.feature.completeregistration.PasswordStrengthState
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.bitwarden.ui.util.asText
|
|
||||||
import com.x8bit.bitwarden.ui.platform.feature.settings.exportvault.model.ExportVaultFormat
|
import com.x8bit.bitwarden.ui.platform.feature.settings.exportvault.model.ExportVaultFormat
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
@ -90,11 +88,11 @@ class ExportVaultScreenTest : BaseComposeTest() {
|
|||||||
}
|
}
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
|
|
||||||
mutableStateFlow.update { it.copy(dialogState = null) }
|
mutableStateFlow.update { it.copy(dialogState = null) }
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -12,10 +12,10 @@ import androidx.compose.ui.test.onNodeWithContentDescription
|
|||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
|
||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.platform.feature.settings.folders.model.FolderAddEditType
|
import com.x8bit.bitwarden.ui.platform.feature.settings.folders.model.FolderAddEditType
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
@ -204,7 +204,7 @@ class FolderAddEditScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `loading dialog should display according to state`() {
|
fun `loading dialog should display according to state`() {
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
it.copy(
|
it.copy(
|
||||||
@ -216,10 +216,10 @@ class FolderAddEditScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText("Loading")
|
.onNodeWithText("Loading")
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
|
|
||||||
composeTestRule.onNode(isPopup()).assertIsDisplayed()
|
composeTestRule.onNode(isDialog()).assertIsDisplayed()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import androidx.compose.ui.test.assertIsDisplayed
|
|||||||
import androidx.compose.ui.test.filterToOne
|
import androidx.compose.ui.test.filterToOne
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
@ -16,7 +15,6 @@ import com.bitwarden.ui.util.asText
|
|||||||
import com.x8bit.bitwarden.data.platform.repository.model.ClearClipboardFrequency
|
import com.x8bit.bitwarden.data.platform.repository.model.ClearClipboardFrequency
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
@ -153,7 +151,7 @@ class OtherScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
val loadingMessage = "syncing"
|
val loadingMessage = "syncing"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -163,7 +161,7 @@ class OtherScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -30,7 +30,6 @@ import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
|||||||
import com.x8bit.bitwarden.ui.tools.feature.send.model.SendItemType
|
import com.x8bit.bitwarden.ui.tools.feature.send.model.SendItemType
|
||||||
import com.x8bit.bitwarden.ui.tools.feature.send.viewsend.ViewSendRoute
|
import com.x8bit.bitwarden.ui.tools.feature.send.viewsend.ViewSendRoute
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import com.x8bit.bitwarden.ui.util.isProgressBar
|
import com.x8bit.bitwarden.ui.util.isProgressBar
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
@ -767,7 +766,7 @@ class SendScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
val loadingMessage = "syncing"
|
val loadingMessage = "syncing"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -777,7 +776,7 @@ class SendScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -24,13 +24,13 @@ import androidx.compose.ui.test.performScrollTo
|
|||||||
import androidx.compose.ui.test.performSemanticsAction
|
import androidx.compose.ui.test.performSemanticsAction
|
||||||
import androidx.compose.ui.test.performTextInput
|
import androidx.compose.ui.test.performTextInput
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
|
||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.exit.ExitManager
|
import com.x8bit.bitwarden.ui.platform.manager.exit.ExitManager
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.permissions.FakePermissionManager
|
import com.x8bit.bitwarden.ui.platform.manager.permissions.FakePermissionManager
|
||||||
import com.x8bit.bitwarden.ui.tools.feature.send.addsend.model.AddSendType
|
import com.x8bit.bitwarden.ui.tools.feature.send.addsend.model.AddSendType
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.isEditableText
|
import com.x8bit.bitwarden.ui.util.isEditableText
|
||||||
import com.x8bit.bitwarden.ui.util.isProgressBar
|
import com.x8bit.bitwarden.ui.util.isProgressBar
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
@ -842,7 +842,7 @@ class AddSendScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
val loadingMessage = "syncing"
|
val loadingMessage = "syncing"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -852,7 +852,7 @@ class AddSendScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import androidx.compose.ui.test.assertIsDisplayed
|
|||||||
import androidx.compose.ui.test.assertIsNotDisplayed
|
import androidx.compose.ui.test.assertIsNotDisplayed
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
@ -307,7 +306,7 @@ class ViewSendScreenTest : BaseComposeTest() {
|
|||||||
}
|
}
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(text = loadingMessage)
|
.onNodeWithText(text = loadingMessage)
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
|
|
||||||
mutableStateFlow.update { it.copy(dialogState = null) }
|
mutableStateFlow.update { it.copy(dialogState = null) }
|
||||||
|
|||||||
@ -7,17 +7,16 @@ import androidx.compose.ui.test.filterToOne
|
|||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.hasClickAction
|
import androidx.compose.ui.test.hasClickAction
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
|
import com.bitwarden.ui.util.asText
|
||||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView
|
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.bitwarden.ui.util.asText
|
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.isProgressBar
|
import com.x8bit.bitwarden.ui.util.isProgressBar
|
||||||
import com.x8bit.bitwarden.ui.util.onNodeWithContentDescriptionAfterScroll
|
import com.x8bit.bitwarden.ui.util.onNodeWithContentDescriptionAfterScroll
|
||||||
import com.x8bit.bitwarden.ui.util.onNodeWithTextAfterScroll
|
import com.x8bit.bitwarden.ui.util.onNodeWithTextAfterScroll
|
||||||
@ -231,7 +230,7 @@ class AttachmentsScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
val loadingMessage = "deleting"
|
val loadingMessage = "deleting"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -241,7 +240,7 @@ class AttachmentsScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import androidx.compose.ui.test.hasAnyAncestor
|
|||||||
import androidx.compose.ui.test.hasAnySibling
|
import androidx.compose.ui.test.hasAnySibling
|
||||||
import androidx.compose.ui.test.hasText
|
import androidx.compose.ui.test.hasText
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithContentDescription
|
import androidx.compose.ui.test.onAllNodesWithContentDescription
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
@ -18,14 +17,13 @@ import androidx.compose.ui.test.performScrollTo
|
|||||||
import androidx.compose.ui.test.performSemanticsAction
|
import androidx.compose.ui.test.performSemanticsAction
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
|
import com.bitwarden.ui.util.asText
|
||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.data.util.advanceTimeByAndRunCurrent
|
import com.x8bit.bitwarden.data.util.advanceTimeByAndRunCurrent
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.bitwarden.ui.util.asText
|
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.snackbar.SnackbarRelay
|
import com.x8bit.bitwarden.ui.platform.manager.snackbar.SnackbarRelay
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
@ -352,14 +350,14 @@ class ImportLoginsScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `Loading content is displayed when dialog state is syncing`() {
|
fun `Loading content is displayed when dialog state is syncing`() {
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
mutableImportLoginsStateFlow.update {
|
mutableImportLoginsStateFlow.update {
|
||||||
it.copy(dialogState = ImportLoginsState.DialogState.Syncing)
|
it.copy(dialogState = ImportLoginsState.DialogState.Syncing)
|
||||||
}
|
}
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(text = "Syncing logins...")
|
.onNodeWithText(text = "Syncing logins...")
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -35,7 +35,6 @@ import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
|||||||
import com.x8bit.bitwarden.ui.platform.components.model.IconData
|
import com.x8bit.bitwarden.ui.platform.components.model.IconData
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import com.x8bit.bitwarden.ui.util.assertScrollableNodeDoesNotExist
|
import com.x8bit.bitwarden.ui.util.assertScrollableNodeDoesNotExist
|
||||||
import com.x8bit.bitwarden.ui.util.isProgressBar
|
import com.x8bit.bitwarden.ui.util.isProgressBar
|
||||||
import com.x8bit.bitwarden.ui.util.onFirstNodeWithTextAfterScroll
|
import com.x8bit.bitwarden.ui.util.onFirstNodeWithTextAfterScroll
|
||||||
@ -210,7 +209,7 @@ class VaultItemScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText("Loading").assertDoesNotExist()
|
composeTestRule.onNodeWithText("Loading").assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -220,7 +219,7 @@ class VaultItemScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText("Loading")
|
.onNodeWithText("Loading")
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -43,7 +43,6 @@ import com.x8bit.bitwarden.ui.util.assertLockOrLogoutDialogIsDisplayed
|
|||||||
import com.x8bit.bitwarden.ui.util.assertLogoutConfirmationDialogIsDisplayed
|
import com.x8bit.bitwarden.ui.util.assertLogoutConfirmationDialogIsDisplayed
|
||||||
import com.x8bit.bitwarden.ui.util.assertMasterPasswordDialogDisplayed
|
import com.x8bit.bitwarden.ui.util.assertMasterPasswordDialogDisplayed
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import com.x8bit.bitwarden.ui.util.assertRemovalConfirmationDialogIsDisplayed
|
import com.x8bit.bitwarden.ui.util.assertRemovalConfirmationDialogIsDisplayed
|
||||||
import com.x8bit.bitwarden.ui.util.assertSwitcherIsDisplayed
|
import com.x8bit.bitwarden.ui.util.assertSwitcherIsDisplayed
|
||||||
import com.x8bit.bitwarden.ui.util.assertSwitcherIsNotDisplayed
|
import com.x8bit.bitwarden.ui.util.assertSwitcherIsNotDisplayed
|
||||||
@ -1613,7 +1612,7 @@ class VaultItemListingScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
val loadingMessage = "syncing"
|
val loadingMessage = "syncing"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -1627,7 +1626,7 @@ class VaultItemListingScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("MaxLineLength")
|
@Suppress("MaxLineLength")
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import androidx.compose.ui.test.assertIsOn
|
|||||||
import androidx.compose.ui.test.filterToOne
|
import androidx.compose.ui.test.filterToOne
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
import androidx.compose.ui.test.isDialog
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isPopup
|
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
import androidx.compose.ui.test.onLast
|
import androidx.compose.ui.test.onLast
|
||||||
import androidx.compose.ui.test.onNodeWithContentDescription
|
import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
@ -15,8 +14,8 @@ import androidx.compose.ui.test.onNodeWithText
|
|||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
import androidx.compose.ui.test.performScrollTo
|
import androidx.compose.ui.test.performScrollTo
|
||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
|
||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.util.onNodeWithContentDescriptionAfterScroll
|
import com.x8bit.bitwarden.ui.util.onNodeWithContentDescriptionAfterScroll
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.movetoorganization.util.createMockOrganizationList
|
import com.x8bit.bitwarden.ui.vault.feature.movetoorganization.util.createMockOrganizationList
|
||||||
import com.x8bit.bitwarden.ui.vault.model.VaultCollection
|
import com.x8bit.bitwarden.ui.vault.model.VaultCollection
|
||||||
@ -264,8 +263,7 @@ class VaultMoveToOrganizationScreenTest : BaseComposeTest() {
|
|||||||
organizations = createMockOrganizationList()
|
organizations = createMockOrganizationList()
|
||||||
.map { organization ->
|
.map { organization ->
|
||||||
organization.copy(
|
organization.copy(
|
||||||
collections =
|
collections = if (organization.id == "mockOrganizationId-1") {
|
||||||
if (organization.id == "mockOrganizationId-1") {
|
|
||||||
organization
|
organization
|
||||||
.collections
|
.collections
|
||||||
.map { collection ->
|
.map { collection ->
|
||||||
@ -292,7 +290,7 @@ class VaultMoveToOrganizationScreenTest : BaseComposeTest() {
|
|||||||
fun `loading dialog should display according to state`() {
|
fun `loading dialog should display according to state`() {
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onAllNodesWithText("loading")
|
.onAllNodesWithText("loading")
|
||||||
.filterToOne(hasAnyAncestor(isPopup()))
|
.filterToOne(hasAnyAncestor(isDialog()))
|
||||||
.assertIsNotDisplayed()
|
.assertIsNotDisplayed()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -303,7 +301,7 @@ class VaultMoveToOrganizationScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
composeTestRule
|
composeTestRule
|
||||||
.onAllNodesWithText("loading")
|
.onAllNodesWithText("loading")
|
||||||
.filterToOne(hasAnyAncestor(isPopup()))
|
.filterToOne(hasAnyAncestor(isDialog()))
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,6 @@ import com.x8bit.bitwarden.ui.platform.manager.snackbar.SnackbarRelay
|
|||||||
import com.x8bit.bitwarden.ui.util.assertLockOrLogoutDialogIsDisplayed
|
import com.x8bit.bitwarden.ui.util.assertLockOrLogoutDialogIsDisplayed
|
||||||
import com.x8bit.bitwarden.ui.util.assertLogoutConfirmationDialogIsDisplayed
|
import com.x8bit.bitwarden.ui.util.assertLogoutConfirmationDialogIsDisplayed
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
|
||||||
import com.x8bit.bitwarden.ui.util.assertRemovalConfirmationDialogIsDisplayed
|
import com.x8bit.bitwarden.ui.util.assertRemovalConfirmationDialogIsDisplayed
|
||||||
import com.x8bit.bitwarden.ui.util.assertScrollableNodeDoesNotExist
|
import com.x8bit.bitwarden.ui.util.assertScrollableNodeDoesNotExist
|
||||||
import com.x8bit.bitwarden.ui.util.assertSwitcherIsDisplayed
|
import com.x8bit.bitwarden.ui.util.assertSwitcherIsDisplayed
|
||||||
@ -581,7 +580,7 @@ class VaultScreenTest : BaseComposeTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `syncing dialog should be displayed according to state`() {
|
fun `syncing dialog should be displayed according to state`() {
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText("Loading").assertDoesNotExist()
|
composeTestRule.onNodeWithText("Loading").assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -591,7 +590,7 @@ class VaultScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText("Syncing...")
|
.onNodeWithText("Syncing...")
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import androidx.compose.ui.test.assertIsDisplayed
|
|||||||
import androidx.compose.ui.test.assertIsNotDisplayed
|
import androidx.compose.ui.test.assertIsNotDisplayed
|
||||||
import androidx.compose.ui.test.filterToOne
|
import androidx.compose.ui.test.filterToOne
|
||||||
import androidx.compose.ui.test.hasAnyAncestor
|
import androidx.compose.ui.test.hasAnyAncestor
|
||||||
|
import androidx.compose.ui.test.isDialog
|
||||||
import androidx.compose.ui.test.isDisplayed
|
import androidx.compose.ui.test.isDisplayed
|
||||||
import androidx.compose.ui.test.isPopup
|
import androidx.compose.ui.test.isPopup
|
||||||
import androidx.compose.ui.test.onAllNodesWithText
|
import androidx.compose.ui.test.onAllNodesWithText
|
||||||
@ -18,7 +19,7 @@ import com.bitwarden.data.repository.util.baseIconUrl
|
|||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
import com.x8bit.bitwarden.data.platform.manager.util.AppResumeStateManager
|
import com.x8bit.bitwarden.data.platform.manager.util.AppResumeStateManager
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.item.VaultItemArgs
|
import com.x8bit.bitwarden.ui.vault.feature.item.VaultItemArgs
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
|
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
|
||||||
import com.x8bit.bitwarden.ui.vault.model.VaultItemCipherType
|
import com.x8bit.bitwarden.ui.vault.model.VaultItemCipherType
|
||||||
@ -357,7 +358,7 @@ class VerificationCodeScreenTest : BaseComposeTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `loading dialog should be displayed according to state`() {
|
fun `loading dialog should be displayed according to state`() {
|
||||||
val loadingMessage = "syncing"
|
val loadingMessage = "syncing"
|
||||||
composeTestRule.assertNoPopupExists()
|
composeTestRule.assertNoDialogExists()
|
||||||
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
composeTestRule.onNodeWithText(loadingMessage).assertDoesNotExist()
|
||||||
|
|
||||||
mutableStateFlow.update {
|
mutableStateFlow.update {
|
||||||
@ -371,7 +372,7 @@ class VerificationCodeScreenTest : BaseComposeTest() {
|
|||||||
composeTestRule
|
composeTestRule
|
||||||
.onNodeWithText(loadingMessage)
|
.onNodeWithText(loadingMessage)
|
||||||
.assertIsDisplayed()
|
.assertIsDisplayed()
|
||||||
.assert(hasAnyAncestor(isPopup()))
|
.assert(hasAnyAncestor(isDialog()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user