clicking-and-scrolling

Drive Jetpack Compose UI tests with click and scroll actions on receiver nodes.

303|10|Updated May 15, 2026
One-click install
npx skills add https://github.com/skydoves/android-testing-skills --skill clicking-and-scrolling
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: clicking-and-scrolling
Source: https://github.com/skydoves/android-testing-skills/tree/main/compose/actions/clicking-and-scrolling
Command: npx skills add https://github.com/skydoves/android-testing-skills --skill clicking-and-scrolling

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill eliminates failed and flaky Jetpack Compose UI interactions by teaching you how to drive clicks, scrolling, focus, custom semantics actions, and link clicks using the correct high-level action APIs.

Core Features & Use Cases

  • High-level click and scroll actions: Use performClick and the appropriate performScrollTo* variants to reveal off-screen nodes before assertions.
  • Lazy vs non-lazy scrolling correctness: Target the scrollable container when using performScrollToIndex, performScrollToKey, and performScrollToNode, and use performScrollTo only on content nodes.
  • Focus, semantics actions, and link interaction: Use requestFocus and performSemanticsAction, and click the first LinkAnnotation inside Text via performFirstLinkClick.
  • Practical failure-mode guidance: Resolve common errors like missing scroll semantics actions and “no scroll parent” by selecting the right receiver node and matcher.

Quick Start

Use the clicking-and-scrolling skill to click a Compose node and scroll a LazyColumn to an item by index, key, or matcher before asserting it is displayed.

Frequently Asked Questions about clicking-and-scrolling

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I scroll to a specific item in a Jetpack Compose LazyColumn during UI testing?

To scroll to a specific item in Jetpack Compose UI testing, use performScrollToIndex, performScrollToKey, or performScrollToNode by targeting the scrollable container node rather than individual content items.

Why does performScrollTo fail with a "no scroll parent" error in Compose UI tests?

The "no scroll parent" error in Compose UI tests occurs when performScrollTo is applied incorrectly; use performScrollTo on content nodes and switch to performScrollToIndex or performScrollToKey for scrollable lazy containers.

How do I click a LinkAnnotation inside a Text node in Jetpack Compose UI tests?

To click a LinkAnnotation inside Jetpack Compose Text nodes during UI testing, use the performFirstLinkClick action to reliably interact with the first hyperlinked text segment.

What is the correct way to request focus on a Compose input field in UI tests?

To request focus on a Jetpack Compose input field in UI tests, apply the requestFocus action combined with performSemanticsAction using the semantics keys installed by your production code.

How do I trigger custom AccessibilityAction semantics in Jetpack Compose testing?

To trigger custom AccessibilityAction semantics in Jetpack Compose testing, use performSemanticsAction with the specific semantics keys defined in your production code to invoke the desired custom actions.

Can I use performClick on off-screen content in Jetpack Compose UI tests?

Using performClick on off-screen content in Jetpack Compose UI tests causes failures; you must first reveal the off-screen node using performScrollTo or performScrollToIndex before applying performClick.