Loading...
Loading...
Beta testing groups and tester management for Google Play closed testing tracks. Use when managing testers and beta groups.
npx skill4agent add tamtom/gplay-cli-skills gplay-testers-orchestrationgplay testers list \
--package com.example.app \
--edit $EDIT_ID \
--track internalgplay testers get \
--package com.example.app \
--edit $EDIT_ID \
--track betagplay testers update \
--package com.example.app \
--edit $EDIT_ID \
--track internal \
--emails "user1@example.com,user2@example.com,user3@example.com"# Get current testers
CURRENT=$(gplay testers get --package com.example.app --edit $EDIT_ID --track internal \
| jq -r '.testers[]' | paste -sd "," -)
# Add new testers
NEW_TESTERS="user4@example.com,user5@example.com"
ALL_TESTERS="$CURRENT,$NEW_TESTERS"
gplay testers update \
--package com.example.app \
--edit $EDIT_ID \
--track internal \
--emails "$ALL_TESTERS"# Get current testers
CURRENT=$(gplay testers get --package com.example.app --edit $EDIT_ID --track internal \
| jq -r '.testers[]' | paste -sd "," -)
# Remove specific email
UPDATED=$(echo "$CURRENT" | tr ',' '\n' | grep -v "user@example.com" | paste -sd "," -)
gplay testers update \
--package com.example.app \
--edit $EDIT_ID \
--track internal \
--emails "$UPDATED"# 1. Create edit
EDIT_ID=$(gplay edits create --package com.example.app | jq -r '.id')
# 2. Upload build to internal track
gplay bundles upload \
--package com.example.app \
--edit $EDIT_ID \
--file app-internal.aab
# 3. Add testers
gplay testers update \
--package com.example.app \
--edit $EDIT_ID \
--track internal \
--emails "tester1@example.com,tester2@example.com"
# 4. Update track
gplay tracks update \
--package com.example.app \
--edit $EDIT_ID \
--track internal \
--json @track-config.json
# 5. Commit
gplay edits commit --package com.example.app --edit $EDIT_ID{
"releases": [{
"versionCodes": [123],
"status": "completed"
}]
}# Release to internal with testers
gplay release \
--package com.example.app \
--track internal \
--bundle app.aab \
--testers "dev1@company.com,dev2@company.com,qa@company.com"gplay release \
--package com.example.app \
--track beta \
--bundle app.aabhttps://play.google.com/apps/testing/com.example.appgplay release \
--package com.example.app \
--track alpha \ # alpha track = open testing
--bundle app.aab# testers-internal.txt
dev1@company.com
dev2@company.com
qa@company.com
# testers-beta.txt
poweruser1@example.com
poweruser2@example.com
feedback@example.comEMAILS=$(cat testers-internal.txt | paste -sd "," -)
gplay testers update \
--package com.example.app \
--edit $EDIT_ID \
--track internal \
--emails "$EMAILS"#!/bin/bash
PACKAGE="com.example.app"
# Build
./gradlew bundleRelease
# Release to internal first
gplay release \
--package $PACKAGE \
--track internal \
--bundle app/build/outputs/bundle/release/app-release.aab
# Wait 24 hours, monitor for crashes
# If stable, promote to beta
gplay promote \
--package $PACKAGE \
--from internal \
--to beta# Week 1: Internal team (10 people)
gplay release --package com.example.app --track internal --bundle app.aab
# Week 2: Beta group 1 (100 people)
gplay promote --package com.example.app --from internal --to beta
# Week 3: Open beta (unlimited)
gplay promote --package com.example.app --from beta --to alpha
# Week 4: Production with staged rollout
gplay promote --package com.example.app --from alpha --to production --rollout 10https://play.google.com/apps/internaltest/INTERNAL_TESTING_IDhttps://play.google.com/apps/testing/com.example.appSubject: Join the Beta Test for [App Name]
Hi,
You've been invited to test the beta version of [App Name]!
To join:
1. Click this link: https://play.google.com/apps/testing/com.example.app
2. Tap "Become a tester"
3. Download the app from Google Play
Your feedback is valuable! Please report any issues to: beta@example.com
Thanks,
The [App Name] Team# View recent reviews from beta testers
gplay reviews list --package com.example.app \
| jq '.reviews[] | select(.comments[0].userComment.reviewerLanguage != null)'#!/bin/bash
# sync-testers.sh
PACKAGE="com.example.app"
CSV_FILE="testers.csv"
# Read emails from CSV (skip header)
EMAILS=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1 | paste -sd "," -)
# Create edit
EDIT_ID=$(gplay edits create --package $PACKAGE | jq -r '.id')
# Update testers
gplay testers update \
--package $PACKAGE \
--edit $EDIT_ID \
--track internal \
--emails "$EMAILS"
# Commit
gplay edits commit --package $PACKAGE --edit $EDIT_ID
echo "Synced $(echo $EMAILS | tr ',' '\n' | wc -l) testers"email,name,role
dev1@company.com,Alice Developer,Developer
qa1@company.com,Bob QA,QA
pm@company.com,Carol PM,Product Manager#!/bin/bash
# Remove testers who haven't tested in 30 days
PACKAGE="com.example.app"
EDIT_ID=$(gplay edits create --package $PACKAGE | jq -r '.id')
# Get current testers
CURRENT=$(gplay testers get --package $PACKAGE --edit $EDIT_ID --track beta \
| jq -r '.testers[]')
# Filter active testers (implement your logic)
# This is a placeholder - you'd need to track activity separately
ACTIVE="tester1@example.com,tester2@example.com"
# Update
gplay testers update \
--package $PACKAGE \
--edit $EDIT_ID \
--track beta \
--emails "$ACTIVE"
gplay edits commit --package $PACKAGE --edit $EDIT_ID| Track | Max Testers | Review Required | Access Speed |
|---|---|---|---|
| Internal | 100 | No | Instant |
| Closed | Unlimited | No | Minutes |
| Open | Unlimited | Yes | Days |
| Production | Unlimited | Yes | Days |
Version 1.2.3 (Beta)
What's New:
- New feature X (please test thoroughly)
- Bug fixes for Y
Known Issues:
- Feature Z is work in progress
- Crash on Android 12 is being investigated
Please report issues to: beta@example.com