or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

accessibility-testing.mdcoordinate-utilities.mdindex.mdios-uikit-testing.mdtouch-simulation.md
tile.json

tessl/maven-org-jetbrains-compose-ui--ui-util-uikitsimarm64

iOS UIKit simulator ARM64 utilities for Compose Multiplatform UI framework providing testing, interoperability, and platform-specific implementations.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.jetbrains.compose.ui/ui-util-uikitsimarm64@1.8.x

To install, run

npx @tessl/cli install tessl/maven-org-jetbrains-compose-ui--ui-util-uikitsimarm64@1.8.0

index.mddocs/

Compose UI Util for iOS UIKit Simulator ARM64

Compose UI Util provides essential utilities for iOS UIKit Simulator on ARM64 architecture within the Compose Multiplatform ecosystem. This artifact enables comprehensive testing, interoperability, and platform-specific implementations for iOS applications built with Compose Multiplatform.

Package Information

  • Package Name: org.jetbrains.compose.ui:ui-util-uikitsimarm64
  • Package Type: maven/gradle
  • Language: Kotlin Multiplatform
  • Target Platform: iOS UIKit Simulator ARM64
  • Installation: Add to your Kotlin Multiplatform project dependencies

Core Imports

// Internal testing utilities (for framework development)
import androidx.compose.test.utils.UIKitInstrumentedTest
import androidx.compose.test.utils.AccessibilityTestNode
import androidx.compose.test.utils.runUIKitInstrumentedTest

Platform-specific imports for iOS:

import androidx.compose.test.utils.toCGPoint
import androidx.compose.test.utils.toDpOffset
import androidx.compose.test.utils.center
import androidx.compose.test.utils.MockAppDelegate
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds

Basic Usage

// Set up iOS UIKit testing environment
runUIKitInstrumentedTest {
    // Set compose content
    setContent {
        Text("Hello, iOS!")
    }
    
    // Wait for UI to stabilize
    waitForIdle()
    
    // Perform touch interactions
    tap(center)
    
    // Verify accessibility tree
    assertAccessibilityTree {
        node {
            label = "Hello, iOS!"
        }
    }
}

Architecture

The ui-util-uikitsimarm64 artifact provides several key components:

  • Testing Infrastructure: Complete iOS UIKit testing framework with touch simulation and accessibility validation
  • Interoperability Layer: Seamless integration between Compose and UIKit components
  • Coordinate System Conversion: Bidirectional mapping between Compose coordinates and Core Graphics
  • Performance Utilities: Optimized collection operations for UI-intensive operations
  • Platform-Specific Implementations: ARM64-optimized implementations for iOS simulator environment

Capabilities

iOS UIKit Testing Framework

Comprehensive testing infrastructure for iOS UIKit applications with Compose integration. Provides touch simulation, accessibility validation, and UI synchronization.

internal fun runUIKitInstrumentedTest(testBlock: UIKitInstrumentedTest.() -> Unit)

internal class UIKitInstrumentedTest {
    val density: Density
    val screenSize: DpSize
    val appDelegate: MockAppDelegate
    val hostingViewController: UIViewController
    
    fun setContent(
        configure: ComposeUIViewControllerConfiguration.() -> Unit = {},
        content: @Composable () -> Unit
    )
    fun setContentWithAccessibilityEnabled(content: @Composable () -> Unit)
    fun waitForIdle(timeoutMillis: Long = 500)
    fun waitUntil(
        conditionDescription: String? = null,
        timeoutMillis: Long = 5_000,
        condition: () -> Boolean
    )
    fun delay(timeoutMillis: Long)
    fun tearDown()
}

iOS UIKit Testing

Touch and Gesture Simulation

Touch event simulation system for iOS devices, providing hardware-level touch event generation and drag gesture support.

fun UIKitInstrumentedTest.touchDown(position: DpOffset): UITouch
fun UIKitInstrumentedTest.tap(position: DpOffset): UITouch

fun UITouch.dragTo(location: DpOffset, duration: Duration = 0.5.seconds): UITouch
fun UITouch.dragBy(offset: DpOffset, duration: Duration = 0.5.seconds): UITouch
fun UITouch.dragBy(dx: Dp = 0.dp, dy: Dp = 0.dp, duration: Duration = 0.5.seconds): UITouch
fun UITouch.moveToLocationOnWindow(location: DpOffset)
fun UITouch.hold(): UITouch
fun UITouch.up(): UITouch

Touch Simulation

Accessibility Testing

iOS accessibility system integration with VoiceOver support and accessibility tree validation.

internal data class AccessibilityTestNode(
    var isAccessibilityElement: Boolean? = null,
    var identifier: String? = null,
    var label: String? = null,
    var value: String? = null,
    var frame: DpRect? = null,
    var children: List<AccessibilityTestNode>? = null,
    var traits: List<UIAccessibilityTraits>? = null,
    var element: NSObject? = null,
    var parent: AccessibilityTestNode? = null
)

internal fun UIKitInstrumentedTest.getAccessibilityTree(): AccessibilityTestNode
internal fun UIKitInstrumentedTest.assertAccessibilityTree(expected: AccessibilityTestNode.() -> Unit)
internal fun UIKitInstrumentedTest.findNodeWithTag(tag: String): AccessibilityTestNode
internal fun UIKitInstrumentedTest.findNodeWithLabel(label: String): AccessibilityTestNode
internal fun AccessibilityTestNode.normalized(): AccessibilityTestNode?
fun AccessibilityTestNode.tap(): UITouch
fun AccessibilityTestNode.doubleTap(): UITouch

Accessibility Testing

Coordinate System Utilities

Conversion utilities between Compose coordinate systems and iOS Core Graphics coordinates.

internal fun DpOffset.toCGPoint(): CValue<CGPoint>
internal fun CValue<CGPoint>.toDpOffset(): DpOffset
internal fun DpRect.toRect(density: Density): Rect
internal fun Rect.toDpRect(density: Density): DpRect

internal fun DpRect.center(): DpOffset
internal fun DpRectZero(): DpRect
internal fun DpRect.intersect(other: DpRect): DpRect
internal fun CValue<CGRect>.toDpRect(): DpRect

Coordinate Utilities

Types

// Core testing types
internal class UIKitInstrumentedTest
internal data class AccessibilityTestNode
internal class MockAppDelegate : NSObject(), UIApplicationDelegateProtocol

// Touch and gesture types  
interface UITouch {
    val location: DpOffset
    fun moveToLocationOnWindow(location: DpOffset)
    fun hold(): UITouch
    fun up(): UITouch
    fun dragTo(location: DpOffset, duration: Duration = 0.5.seconds): UITouch
    fun dragBy(offset: DpOffset, duration: Duration = 0.5.seconds): UITouch
    fun dragBy(dx: Dp = 0.dp, dy: Dp = 0.dp, duration: Duration = 0.5.seconds): UITouch
}

// Coordinate system types
typealias DpOffset = androidx.compose.ui.unit.DpOffset
typealias DpRect = androidx.compose.ui.unit.DpRect  
typealias DpSize = androidx.compose.ui.unit.DpSize
typealias Density = androidx.compose.ui.unit.Density

// Platform-specific types
typealias UIAccessibilityTraits = kotlin.ULong
typealias Duration = kotlin.time.Duration