{"id":50826528,"url":"https://github.com/callstackincubator/eas-agent-device","last_synced_at":"2026-06-13T19:35:15.452Z","repository":{"id":350053725,"uuid":"1187264285","full_name":"callstackincubator/eas-agent-device","owner":"callstackincubator","description":"EAS Workflow with QA agent using agent-device and AI SDK","archived":false,"fork":false,"pushed_at":"2026-06-04T01:21:43.000Z","size":936,"stargazers_count":41,"open_issues_count":4,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T19:35:11.659Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/callstackincubator.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-20T14:25:53.000Z","updated_at":"2026-06-04T02:13:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/callstackincubator/eas-agent-device","commit_stats":null,"previous_names":["callstackincubator/eas-agent-device"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/callstackincubator/eas-agent-device","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Feas-agent-device","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Feas-agent-device/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Feas-agent-device/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Feas-agent-device/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/callstackincubator","download_url":"https://codeload.github.com/callstackincubator/eas-agent-device/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Feas-agent-device/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34298247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-13T19:35:13.220Z","updated_at":"2026-06-13T19:35:15.445Z","avatar_url":"https://github.com/callstackincubator.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EAS agent-device demo\n\nThis repo is a minimal Expo + CNG example for running AI-assisted Android and iOS QA on EAS Workflows.\n\n## What it does\n\n- Reuses compatible Android and iOS simulator builds with `fingerprint` + `get-build` + `repack`\n- Falls back to a fresh `build` when the fingerprint changes\n- Runs a small Node.js QA agent built with the AI SDK `ToolLoopAgent`\n- Uses `agent-device` to drive the Android app and iOS simulator, take screenshots, and summarize findings\n- Posts one combined mobile QA summary back to the GitHub pull request with `github-comment`\n- Optionally uploads screenshots to Vercel Blob so the PR comment can link them\n\n`qa-release` and `qa-ios-simulator` are fast review artifacts for PR automation. They are not production shipping artifacts.\n\n## Files\n\n- [eas.json](./eas.json)\n- [.eas/workflows/agent-qa-mobile.yml](./.eas/workflows/agent-qa-mobile.yml)\n- [scripts/agent-qa/index.ts](./scripts/agent-qa/index.ts)\n\n## Required setup\n\n1. Link the project to EAS.\n2. Keep using CNG. Do not commit `android/` or `ios/`.\n3. Configure an EAS environment named `preview`.\n4. Add `AI_GATEWAY_API_KEY` to that environment.\n5. Treat the `qa-release` and `qa-ios-simulator` profiles as CI review output only. Keep store or production release flows separate.\n\nOptional environment variables for the QA job:\n\n- `AGENT_DEVICE_ANDROID_DEVICE`: Android AVD name to boot in CI\n- `AGENT_DEVICE_IOS_DEVICE`: iOS simulator name to boot in CI\n- `QA_MODEL`: Override the default model (`openai/gpt-5.4-mini`)\n- `BLOB_READ_WRITE_TOKEN`: Upload screenshots to Vercel Blob and include public links in the PR comment\n\n## Local smoke test\n\n```bash\nnpm install\nnpx tsc --noEmit\n```\n\nThe workflow runner writes `section.md`, `status.txt`, and `report.json` to `artifacts/qa/` during execution. Temporary screenshots are written outside the workspace and uploaded to Vercel Blob when configured.\n\nTo execute the runner directly with Node 24, provide the same environment variables the workflow sets:\n\nAndroid:\n\n```bash\nAI_GATEWAY_API_KEY=... \\\nQA_PLATFORM=android \\\nAPP_PATH=/absolute/path/to/app.apk \\\nAPPLICATION_ID=dev.expo.easagentdevice \\\nBUILD_ID=test-build \\\nPR_JSON='{\"number\":1,\"title\":\"Test PR\",\"body\":\"Smoke test\"}' \\\nnode ./scripts/agent-qa/index.ts\n```\n\niOS simulator:\n\n```bash\nAI_GATEWAY_API_KEY=... \\\nQA_PLATFORM=ios \\\nAPP_PATH=/absolute/path/to/MyApp.app \\\nAPPLICATION_ID=dev.expo.easagentdevice \\\nAGENT_DEVICE_IOS_DEVICE=\"iPhone 17\" \\\nBUILD_ID=test-build \\\nPR_JSON='{\"number\":1,\"title\":\"Test PR\",\"body\":\"Smoke test\"}' \\\nnode ./scripts/agent-qa/index.ts\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcallstackincubator%2Feas-agent-device","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcallstackincubator%2Feas-agent-device","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcallstackincubator%2Feas-agent-device/lists"}