A small Android fixture app for exploring and validating Jetpack Compose UI behavior alongside classic Android views. The home screen uses traditional TextView menu items; each demo screen is built with Compose.
Use it for manual exploration, instrumented Compose UI tests, or as a stable APK in your own automation pipelines.
Install the latest debug APK from GitHub Releases.
Versioned URL pattern:
https://github.com/appium/compose-playground/releases/download/vX.Y.Z/ComposePlayground-debug.apk
- JDK 17
- Android SDK Platform 35 (compile SDK)
- Node.js 20+ and npm 10+ (release tooling and ESLint)
npm install
npm run build:debugDebug APK: app/build/outputs/apk/debug/app-debug.apk
Release (unsigned): npm run build:release → app/build/outputs/apk/release/app-release-unsigned.apk
With an API 26+ emulator or device connected:
./gradlew :app:connectedDebugAndroidTest| Menu label (classic UI) | Compose semantics | What to try |
|---|---|---|
| Clickable Component | testTag("lol"), contentDescription = "desc", text Click to see dialog; dialog Congratulations! You just clicked the text successfully |
Tap by tag, content description, or text; confirm dialog |
| Horizontal Carousel | Two nodes with text Grace Hopper | Find duplicate visible text in a horizontal list |
| Display Text | Non-empty Compose tree | Inspect hierarchy / page source |
| Text Input Components | testTag("text_input"), initial text Enter your text here |
Append, replace, and clear field text |
Each Compose screen sets testTagsAsResourceId = true on the root so testTag values are exposed as view resource IDs (Compose testing interoperability).
- Build — assembles debug and release APKs on pull requests.
- Test — runs
connectedDebugAndroidTeston an emulator on pull requests only. - Lint — ESLint on Node tooling files.
- Release — semantic-release on
mainpublishesComposePlayground-debug.apkandComposePlayground-release.apk.
Releases are automated with semantic-release on pushes to main. Use Conventional Commits (e.g. feat:, fix:). Version bumps sync package.json and app/build.gradle.kts (versionName / versionCode).
- minSdk 26
- targetSdk 34, compileSdk 35
- Compose BOM is pinned in
gradle/libs.versions.toml; bump it when you need newer Compose APIs.
Apache-2.0 — see LICENSE.