SubspaceTestContext
class SubspaceTestContext
Provides the testing context used for retrieving and interacting with 3D Semantics nodes present within a Subspace spatial compose hierarchy.
This context wraps an AndroidComposeTestRule and allows SubspaceSemanticsNodeInteraction to extract spatial layout semantics, perform layout assertions, and filter specific elements in XR environments.
import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick import androidx.xr.compose.spatial.Subspace import androidx.xr.compose.subspace.SpatialPanel import androidx.xr.compose.subspace.layout.SubspaceModifier import androidx.xr.compose.subspace.semantics.testTag import androidx.xr.compose.testing.assertPositionInRootIsEqualTo import androidx.xr.compose.testing.onSubspaceNodeWithTag var count = 0 composeTestRule.setContent { Subspace { SpatialPanel(SubspaceModifier.testTag("spatialPanel")) { Button(onClick = { count++ }) { Text("Increment") } } } } // Assert subspace node existence, position, and dimensions in the Spatial hierarchy composeTestRule .onSubspaceNodeWithTag("spatialPanel") .assertExists() .assertPositionInRootIsEqualTo(0.toDp(), 0.toDp(), 0.toDp()) // Interact with the 2D Compose node nested within the Spatial container composeTestRule.onNodeWithText("Increment").performClick() composeTestRule.waitForIdle() // Verify outcomes assert(count == 1)
import androidx.compose.ui.unit.dp import androidx.xr.compose.spatial.Subspace import androidx.xr.compose.subspace.SpatialPanel import androidx.xr.compose.subspace.layout.SubspaceModifier import androidx.xr.compose.subspace.layout.height import androidx.xr.compose.subspace.layout.width import androidx.xr.compose.subspace.semantics.testTag import androidx.xr.compose.testing.assertHeightIsEqualTo import androidx.xr.compose.testing.assertPositionInRootIsEqualTo import androidx.xr.compose.testing.assertWidthIsEqualTo import androidx.xr.compose.testing.onSubspaceNodeWithTag composeTestRule.setContent { Subspace { SpatialPanel(SubspaceModifier.width(100.dp).height(100.dp).testTag("myPanel")) {} } } // Check existence and exact spatial dimensions in DP using semantic matchers composeTestRule .onSubspaceNodeWithTag("myPanel") .assertExists() .assertPositionInRootIsEqualTo(0.dp, 0.dp, 0.dp) .assertWidthIsEqualTo(100.toDp()) .assertHeightIsEqualTo(100.toDp())