espresso-skill
Generates Espresso UI tests for Android apps in Kotlin or Java.
Skill by TestMu AI
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/phatevalleyman-espresso-skill
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
espresso-skill- Description
- Generates Espresso UI tests for Android apps in Kotlin or Java. Espresso runs inside the app process for fast, reliable UI testing. Supports local and TestMu AI cloud real devices. Use when user mentions "Espresso", "onView", "ViewMatchers", "Android UI test", or "instrumentation test". Triggers on: "Espresso", "onView", "ViewMatchers", "Android UI test", "instrumentation", "TestMu".
- License
- MIT
- Metadata
- author: TestMu AI · version: 1.0
- Instructions
- 242 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (4)
- SKILL.md
- advanced-patterns.md · reference/
- cloud-integration.md · reference/
- playbook.md · reference/
SKILL.md (first lines)
# Espresso Automation Skill
You are a senior Android QA engineer specializing in Espresso UI testing.
## Step 1 — Execution Target
```
├─ Mentions "cloud", "TestMu", "LambdaTest", "device farm"?
│ └─ TestMu AI cloud (upload APK + test APK)
│
├─ Mentions "emulator", "local", "connected device"?
│ └─ Local: ./gradlew connectedAndroidTest
│
└─ Default → Local emulator
```
## Core Patterns — Kotlin (Default)
### Basic Test
```kotlin
@RunWith(AndroidJUnit4::class)
class LoginTest {
@get:Rule
val activityRule = ActivityScenarioRule(LoginActivity::class.java)
@Test
fun loginWithValidCredentials() {
// Type email
onView(withId(R.id.emailInput))
.perform(typeText("user@test.com"), closeSoftKeyboard())
// Type password
onView(withId(R.id.passwordInput))
.perform(typeText("password123"), closeSoftKeyboard())
// Click login button
onView(withId(R.id.loginButton))
.perform(click())
// Verify dashboard is displayed
onView(withId(R.id.dashboardTitle))
.check(matches(isDisplayed()))
.check(matches(withText("Welcome")))
}
@Test
fun loginWithInvalidCredentials_showsError() {
onView(withId(R.id.emailInput))
.perform(typeText("wrong@test.com"), closeSoftKeyboard())
onView(withId(R.id.passwordInput))
.perform(typeText("wrong"), closeSoftKeyboard())
onView(withId(R.id.loginButton))
.perform(click())
onView(withId(R.id.errorText))
.check(matches(isDisplayed()))
.check(matches(withText(containsString("Invalid"))))
}
}
```
### ViewMatchers (Finding Elements)
```kotlin
// By ID (best)
onView(withId(R.id.loginButton))
// By text
onView(withText("Login"))
// By content description (accessibility)
onView(withContentDescription("Submit form"))
// By hint text
onView(withHint("Enter your email"))
// Combined matchers
onView(allOf(withId(R.id.button), withText("Submit"), isDisplayed()))
// In RecyclerView
onView(withId(R.id.recyclerView))
.perform(RecyclerViewActions.actionOnItemAtPosition<ViewHolder>(0, click()))
// By parent
onView(allOf(withText("Delete"), isDescendantOfA(withId(R.id.toolbar))))
```
### ViewActions (Performing Actions)
```kotlin
.perform(click()) // Tap
.perform(longClick()) // Long press
.perform(typeText("hello")) // Type text
.perform(replaceText("new text")) // Replace text
.perform(clearText()) // Clear field
.perform(closeSoftKeyboard()) // Dismiss keyboard
.perform(scrollTo()) // Scroll to element
.perform(swipeUp()) // Swipe gesture
.perform(swipeDown())
.perform(swipeLeft())
.perform(swipeRight())
.perform(pressBack()) // Back button
```
### ViewAssertions (Checking State)
```kotlin
.check(matches(isDisplayed())) // Visible
.check(matches(not(isDisplayed()))) // Not visible
.check(matches(withText("Expected"))) // Text matches
.check(matches(isEnabled())) // Enabled
.check(matches(isChecked())) // Checkbox checked
.check(matches(hasErrorText("Required"))) // Error text
.check(doesNotExist()) // Not in hierarchy
```
### Idling Resources (Async Operations)From PhateValleyman/ai-skills-sync, MIT.
More from PhateValleyman/ai-skills-sync
- 0.565score
automation-and-scheduling
PhateValleyman
Route requests to configure, manage, or redesign future or unattended work to Manus ScheduleTask, Manus Triggers, application-native automation, or an…
SkillAFreshness: AClaude Code +9 - 0.565score
data-api
PhateValleyman
Look up external data and generate 3D assets through Manus Data APIs — X/Twitter posts and profiles, LinkedIn people and companies, YouTube videos and…
SkillAFreshness: AClaude Code +9 - 0.565score
data-backup-restoration
PhateValleyman
Official guidance for the August 2026 Manus data backup and restoration service change, including websites and mobile apps.
SkillAFreshness: AClaude Code +9 - 0.561score
chrome-devtools
PhateValleyman
Expert-level browser automation, debugging, and performance analysis using Chrome DevTools MCP.
SkillAFreshness: AClaude Code +9 - 0.559score
deep-research
PhateValleyman
Conduct in-depth research across multiple sources and synthesize findings into clear, readable reports.
SkillAFreshness: AClaude Code +9 - 0.559score
data-analysis
PhateValleyman
Analyze structured data or create visualizations from data.
SkillAFreshness: AClaude Code +9 - 0.556score
android-development
PhateValleyman
Android development guidelines for Kotlin with clean architecture, MVI pattern, Material Design, and best practices for building robust mobile applications
SkillAFreshness: AClaude Code +9 - 0.550score
excel-generator
PhateValleyman
Professional Excel spreadsheet creation with a focus on aesthetics and data analysis.
SkillAFreshness: AClaude Code +9 - 0.301score
ai-skills-sync
PhateValleyman
No description from the publisher yet.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 6, 2026 (23 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0
- License
- MIT
- Repository
- github.com/PhateValleyman/ai-skills-sync
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from TestMu AI
- 0.713score
smartui-skill
TestMu AI
Generates SmartUI visual regression test configurations for screenshot comparison on TestMu AI cloud.
SkillBFreshness: B★ 377Claude Code +9 - 0.664score
hyperexecute-skill
TestMu AI
Operates HyperExecute end-to-end for TestMu AI/LambdaTest cloud test execution: analyze projects, create YAML, validate locally, run CLI jobs, debug failures…
SkillCFreshness: C★ 377Claude Code +9 - 0.659score
postman-openapi-converter
TestMu AI
Convert OpenAPI 3.x or Swagger 2.0 specs (YAML or JSON) into complete, import-ready Postman Collection v2.1 JSON files.
SkillCFreshness: C★ 377Claude Code +9 - 0.659score
accessibility-skill
TestMu AI
Adds automated accessibility (a11y) testing to test suites on TestMu AI cloud by enabling WCAG scans through driver capabilities.
SkillCFreshness: C★ 377Claude Code +9 - 0.659score
postman-collection-generator
TestMu AI
Generate complete, import-ready Postman Collection v2.1 JSON files from natural language API descriptions or cURL commands.
SkillCFreshness: C★ 377Claude Code +9 - 0.659score
api-analyzer
TestMu AI
Validates whether an API request is correct based on provided inputs (method, URL, headers, body, auth, query params).
SkillCFreshness: C★ 377Claude Code +9
Cite this page
espresso-skill. Agent Mart. https://agentmart.dev/skills/phatevalleyman-espresso-skill (last updated 2026-10-24)