| name | gplay-testers-orchestration |
| description | Manage testers for Google Play testing tracks (internal, closed alpha/beta, custom) using edit sessions. Use when assigning testers, creating closed tracks, or promoting builds between tracks. |
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
gplay testers get \
--package com.example.app \
--edit $EDIT_ID \
--track alpha
Assign testers (replace the whole set)
gplay 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:
gplay 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)
gplay 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:
CURRENT=$(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:
EDIT_ID=$(gplay edits create --package com.example.app | jq -r '.id')
gplay bundles upload \
--package com.example.app \
--edit $EDIT_ID \
--file app-release.aab
gplay tracks update \
--package com.example.app \
--edit $EDIT_ID \
--track alpha \
--releases '[{"versionCodes":["123"],"status":"completed"}]'
gplay testers update \
--package com.example.app \
--edit $EDIT_ID \
--track alpha \
--emails "tester1@example.com,tester2@example.com"
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:
EDIT_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:
gplay promote --package com.example.app --from internal --to alpha
gplay promote --package com.example.app --from beta --to production --rollout 0.1
Agent behavior
- There is no
testers list subcommand; use gplay testers get --track <track> to read a track's testers.
- Never pass
--testers to gplay release; assign testers via testers update/patch inside an edit, then commit.
- Use
update to set the exact tester set, patch to add without removing.
--rollout values are fractions (0.1 = 10%), range 0.0–1.0.
- Always
gplay edits commit — tester changes are inert until committed.
- Confirm flags with
--help before running.