---
title: "InjectionScope"
description: "The receiver scope of all input injection lambdas offered in `ui-test`, such as
[performTouchInput] and [performMouseInput].

This scope offers several properties that allow you to get [coordinates][Offset] within the node
you're interacting on, like the [topLeft] corner, its [center], or some percentage of the size
([percentOffset]).

All positional properties are expressed in pixels. [InjectionScope] implements [Density] so you
can convert between px and dp as you wish. The density used is taken from the
[SemanticsNode][androidx.compose.ui.semantics.SemanticsNode] from the [SemanticsNodeInteraction]
on which the input injection method is called."
type: "interface"
---

<div class='type'>Interface</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>



```kotlin
@JvmDefaultWithCompatibility
interface InjectionScope : Density
```


The receiver scope of all input injection lambdas offered in `ui-test`, such as
`performTouchInput` and `performMouseInput`.

This scope offers several properties that allow you to get `coordinates` within the node
you're interacting on, like the `topLeft` corner, its `center`, or some percentage of the size
(`percentOffset`).

All positional properties are expressed in pixels. `InjectionScope` implements `Density` so you
can convert between px and dp as you wish. The density used is taken from the
`SemanticsNode` from the `SemanticsNodeInteraction`
on which the input injection method is called.


## Properties

<div class='sourceset sourceset-common'>Common</div>


```kotlin
val eventPeriodMillis
```


The default time between two successive events.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val visibleSize: IntSize
```


The size of the visible part of the node we're interacting with in px, i.e. its clipped
bounds.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val viewConfiguration: ViewConfiguration
```


The `ViewConfiguration` in use by the
`SemanticsNode` from the
`SemanticsNodeInteraction` on which the input injection method is called.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val width: Int
```


The width of the node in px. Shorthand for `visibleSize.width`.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val height: Int
```


The height of the node in px. Shorthand for `visibleSize.height`.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val left: Float
```


The x-coordinate for the left edge of the node we're interacting with in px, in the node's
local coordinate system, where (0, 0) is the top left corner of the node.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val top: Float
```


The y-coordinate for the bottom of the node we're interacting with in px, in the node's local
coordinate system, where (0, 0) is the top left corner of the node.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val centerX: Float
```


The x-coordinate for the center of the node we're interacting with in px, in the node's local
coordinate system, where (0, 0) is the top left corner of the node.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val centerY: Float
```


The y-coordinate for the center of the node we're interacting with in px, in the node's local
coordinate system, where (0, 0) is the top left corner of the node.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val right: Float
```


The x-coordinate for the right edge of the node we're interacting with in px, in the node's
local coordinate system, where (0, 0) is the top left corner of the node.

Note that, unless `width == 0`, `right != width`. In particular, `right == width - 1f`,
because pixels are 0-based. If `width == 0`, `right == 0` too.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val bottom: Float
```


The y-coordinate for the bottom of the node we're interacting with in px, in the node's local
coordinate system, where (0, 0) is the top left corner of the node.

Note that, unless `height == 0`, `bottom != height`. In particular, `bottom == height - 1f`,
because pixels are 0-based. If `height == 0`, `bottom == 0` too.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val topLeft: Offset
```


The top left corner of the node we're interacting with, in the node's local coordinate
system, where (0, 0) is the top left corner of the node.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val topCenter: Offset
```


The center of the top edge of the node we're interacting with, in the node's local coordinate
system, where (0, 0) is the top left corner of the node.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val topRight: Offset
```


The top right corner of the node we're interacting with, in the node's local coordinate
system, where (0, 0) is the top left corner of the node.

Note that `topRight.x != width`, see `right`.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val centerLeft: Offset
```


The center of the left edge of the node we're interacting with, in the node's local
coordinate system, where (0, 0) is the top left corner of the node.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val center: Offset
```


The center of the node we're interacting with, in the node's local coordinate system, where
(0, 0) is the top left corner of the node.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val centerRight: Offset
```


The center of the right edge of the node we're interacting with, in the node's local
coordinate system, where (0, 0) is the top left corner of the node.

Note that `centerRight.x != width`, see `right`.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val bottomLeft: Offset
```


The bottom left corner of the node we're interacting with, in the node's local coordinate
system, where (0, 0) is the top left corner of the node.

Note that `bottomLeft.y != height`, see `bottom`.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val bottomCenter: Offset
```


The center of the bottom edge of the node we're interacting with, in the node's local
coordinate system, where (0, 0) is the top left corner of the node.

Note that `bottomCenter.y != height`, see `bottom`.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val bottomRight: Offset
```


The bottom right corner of the node we're interacting with, in the node's local coordinate
system, where (0, 0) is the top left corner of the node.

Note that `bottomRight.x != width` and `bottomRight.y != height`, see `right` and `bottom`.



## Functions

```kotlin
fun advanceEventTime(durationMillis: Long = eventPeriodMillis)
```


Adds the given `durationMillis` to the current event time, delaying the next event by that
time.


```kotlin
fun percentOffset(
        /*@FloatRange(from = -1.0, to = 1.0)*/
        x: Float = 0f,
        /*@FloatRange(from = -1.0, to = 1.0)*/
        y: Float = 0f,
    ): Offset
```


Creates an `Offset` relative to the size of the node we're interacting with. `x` and `y` are
fractions of the `width` and `height`, between `-1` and `1`.

Note that `percentOffset(1f, 1f) != bottomRight`, see `right` and `bottom`.

For example: `percentOffset(.5f, .5f)` is the same as the `center`; `centerLeft +
percentOffset(.1f, 0f)` is a point 10% inward from the middle of the left edge; and
`bottomRight - percentOffset(.2f, .1f)` is a point 20% to the left and 10% to the top of the
bottom right corner.



