QA + Software Engineer
Ruthless clarity. Relentless shipping.
Test. Prove. Ship.
I build deterministic mobile automation and developer tooling for Android & Flutter that survive refactors and scale.
Core Stack
- Automation: Appium • TestNG • UIAutomator • Maestro (scripted smokes)
- Mobile: Flutter (Dart) • Android (Java) • iOS (Swift/SwiftUI – learning track)
- CI/CD & Device Cloud: GitHub Actions • Azure DevOps • Genymotion SaaS
- Patterns & Reporting: Page Object Model (POM) • ExtentReports • JUnit XML • custom listeners/step logs
- Hardening a mobile test framework: stable selectors, deterministic waits, parallel device matrix, report skins
- Porting execution to Genymotion Cloud with GitHub Actions (screenshots, logs, artifacts)
- Building Sartorial — AI sizing/tailoring (Flutter client + API test harness)
- Turning flaky UI suites into signal (selector strategy, timeouts, flake quarantine)
- Flutter automation (integration tests, golden tests, Maestro smokes)
- Cloud/device lab setup (Genymotion/real devices, version pinning, parallel runs)
- CI you can trust (Actions/Azure, caching, artifacts, step-level logs)
- Reports people actually read (ExtentReports/JUnit XML with screenshots, logcat, step trace)
- POM architecture that’s small-surface, composable, and easy to extend
- Stable Selectors
- Prefer
content-desc
/accessibility IDs → anchoredUiSelector
chains → last-resort text - Ban
.instance(n)
; use ancestor/descendant relations - Centralize waits; no raw
Thread.sleep
in tests
- Prefer
- POM Done Right
- One-liner actions & assertions via
Listeners.executeStep(() -> action(), "step text")
- Keep locators private; expose intentful methods
- One-liner actions & assertions via
- Maestro Smokes
- YAML flows for “cold-start → key path → happy exit”
- Run on PR for fast red/green before the heavier Appium matrix
- CI/CD
- Matrix by Android versions/devices; shard by class; retry only quarantined flakes
- Always publish: screenshots, videos (if available), logs, HTML report
Signal over noise • Small surface area • Repeatable proofs • Green builds are protected • If it isn’t deterministic, it isn’t done.