Testers Orchestration for Google Play
Use this skill to assign testers to a track and promote builds through the
testing funnel. All tester changes happen inside an edit session and take
effect only after gplay edits commit.
Testing tracks
| Track | Type | Max testers | Review | Access |
|---|---|---|---|---|
internal | Internal | 100 | No | Instant |
alpha | Closed testing | Unlimited | No | Minutes |
beta | Open or closed testing | Unlimited | No/Yes | Minutes |
| custom track | Closed testing | Unlimited | No | Minutes |
production | Public | Unlimited | Yes | Days |
alpha is a closed track (invite-only), not public. Testers on internal
and closed tracks are managed by email address or by Google Group.
Tester commands
gplay testers has only three subcommands. There is no testers list — to
list the testers on a track, use testers get.
gplay testers get— read the testers on a track.gplay testers update— replace the entire tester set (emails/groups not included are removed).gplay testers patch— merge with the existing set (preserves fields you omit).
List (get) testers for a track
bashgplay testers get \ --package com.example.app \ --edit $EDIT_ID \ --track alpha
Assign testers (replace the whole set)
bashgplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track alpha \ --emails "tester1@example.com,tester2@example.com"
By Google Group instead of individual emails:
bashgplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track alpha \ --google-groups "beta-testers@example.com,qa-team@example.com"
Add testers without dropping existing ones (patch)
bashgplay testers patch \ --package com.example.app \ --edit $EDIT_ID \ --track alpha \ --emails "newtester@example.com"
Remove a tester (update = replace with the reduced set)
update replaces the resource, so re-send only the testers you want to keep:
bashCURRENT=$(gplay testers get --package com.example.app --edit $EDIT_ID --track alpha \ | jq -r '.testers[]?') KEEP=$(echo "$CURRENT" | grep -v "user@example.com" | paste -sd "," -) gplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track alpha \ --emails "$KEEP"
Assign testers inside an edit session (canonical flow)
Tester assignment is not a flag on gplay release. There is no --testers
flag anywhere. The real flow is an edit session:
bash# 1. Create an edit EDIT_ID=$(gplay edits create --package com.example.app | jq -r '.id') # 2. Upload the build gplay bundles upload \ --package com.example.app \ --edit $EDIT_ID \ --file app-release.aab # 3. Assign the release to the track gplay tracks update \ --package com.example.app \ --edit $EDIT_ID \ --track alpha \ --releases '[{"versionCodes":["123"],"status":"completed"}]' # 4. Assign testers to the track gplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track alpha \ --emails "tester1@example.com,tester2@example.com" # 5. Commit (nothing applies until this succeeds) gplay edits commit --package com.example.app --edit $EDIT_ID
Create a closed testing track
Custom closed tracks are created inside an edit, then get testers assigned the same way:
bashEDIT_ID=$(gplay edits create --package com.example.app | jq -r '.id') gplay tracks create \ --package com.example.app \ --edit $EDIT_ID \ --track qa-ring gplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track qa-ring \ --emails "qa1@example.com,qa2@example.com" gplay edits commit --package com.example.app --edit $EDIT_ID
Promote a build between tracks
Promotion copies the source track's version codes to a destination track.
--rollout is a fraction (0.0–1.0), not a percentage:
bash# Internal -> closed alpha gplay promote --package com.example.app --from internal --to alpha # Closed beta -> production at 10% staged rollout gplay promote --package com.example.app --from beta --to production --rollout 0.1
Agent behavior
- There is no
testers listsubcommand; usegplay testers get --track <track>to read a track's testers. - Never pass
--testerstogplay release; assign testers viatesters update/patchinside an edit, then commit. - Use
updateto set the exact tester set,patchto add without removing. --rolloutvalues are fractions (0.1 = 10%), range 0.0–1.0.- Always
gplay edits commit— tester changes are inert until committed. - Confirm flags with
--helpbefore running.

