Skip to content
View chrisaydat's full-sized avatar
🇬🇭
Focusing
🇬🇭
Focusing

Highlights

  • Pro

Block or report chrisaydat

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
chrisaydat/README.md

Chris Ayeh-Datey — CAD { }

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

Now

  • 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)

I can help you with

  • 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

Playbooks

  • Stable Selectors
    • Prefer content-desc/accessibility IDs → anchored UiSelector chains → last-resort text
    • Ban .instance(n); use ancestor/descendant relations
    • Centralize waits; no raw Thread.sleep in tests
  • POM Done Right
    • One-liner actions & assertions via Listeners.executeStep(() -> action(), "step text")
    • Keep locators private; expose intentful methods
  • 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

Badges — Languages, Platforms, Tooling

Dart Flutter Java Swift SwiftUI Python

Android iOS

Appium Maestro TestNG UIAutomator

GitHub Actions Azure DevOps

Gradle Android Studio Firebase SQLite Postman Jira Figma Git


Principles

Signal over noise • Small surface area • Repeatable proofs • Green builds are protected • If it isn’t deterministic, it isn’t done.

Pinned Loading

  1. ussddevelopment ussddevelopment Public

    PHP

  2. TechnicalArticles TechnicalArticles Public

    All My Technical and Knowledge Based Articles are in this Repo

    Jupyter Notebook