gplay-testers-orchestration
Beta testing groups and tester management for Google Play closed testing tracks. Use when managing testers and beta groups.
What this skill does
# Testers Orchestration for Google Play Use this skill when you need to manage beta testers and testing groups. ## Understanding Testing Tracks Google Play has several testing tracks: - **Internal** - Up to 100 testers, instant access - **Closed** - Invite-only testing groups - **Open** - Public beta, anyone can join ## Manage Testers ### List testers for a track ```bash gplay testers list \ --package com.example.app \ --edit $EDIT_ID \ --track internal ``` ### Get tester group details ```bash gplay testers get \ --package com.example.app \ --edit $EDIT_ID \ --track beta ``` ### Update tester emails ```bash gplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track internal \ --emails "[email protected],[email protected],[email protected]" ``` ### Add testers (append to existing list) ```bash # 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="[email protected],[email protected]" ALL_TESTERS="$CURRENT,$NEW_TESTERS" gplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track internal \ --emails "$ALL_TESTERS" ``` ### Remove tester ```bash # 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 "[email protected]" | paste -sd "," -) gplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track internal \ --emails "$UPDATED" ``` ## Complete Tester Workflow ### Setup internal testing ```bash # 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 "[email protected],[email protected]" # 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 ``` ### track-config.json ```json { "releases": [{ "versionCodes": [123], "status": "completed" }] } ``` ## Internal Testing (Quick Testing) **Characteristics:** - Up to 100 testers - Instant access (no review) - Ideal for rapid iteration ```bash # Release to internal with testers gplay release \ --package com.example.app \ --track internal \ --bundle app.aab \ --testers "[email protected],[email protected],[email protected]" ``` ## Closed Testing (Beta Groups) **Characteristics:** - Unlimited testers - Can have multiple named groups - Testers need opt-in link ### Create beta release ```bash gplay release \ --package com.example.app \ --track beta \ --bundle app.aab ``` ### Testers join via opt-in link Share this link with testers: ``` https://play.google.com/apps/testing/com.example.app ``` ## Open Testing (Public Beta) **Characteristics:** - Anyone can join - Public opt-in page - Still requires Play Store review ```bash gplay release \ --package com.example.app \ --track alpha \ # alpha track = open testing --bundle app.aab ``` ## Tester Management Best Practices ### Organize testers by group **Internal testing:** - Developers - QA team - Product managers **Closed beta:** - Power users - Customer advisory board - Early adopters **Open beta:** - General public - Community members ### Email list management Store tester lists in files: ```bash # testers-internal.txt [email protected] [email protected] [email protected] # testers-beta.txt [email protected] [email protected] [email protected] ``` Update from file: ```bash EMAILS=$(cat testers-internal.txt | paste -sd "," -) gplay testers update \ --package com.example.app \ --edit $EDIT_ID \ --track internal \ --emails "$EMAILS" ``` ## Testing Workflow Examples ### Weekly Beta Release ```bash #!/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 ``` ### Staged Beta Rollout ```bash # 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 10 ``` ## Share Testing Links ### Internal testing link ``` https://play.google.com/apps/internaltest/INTERNAL_TESTING_ID ``` Get from Play Console → Internal testing → Testers → Copy link ### Closed testing opt-in link ``` https://play.google.com/apps/testing/com.example.app ``` ### Email template for testers ``` Subject: 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: [email protected] Thanks, The [App Name] Team ``` ## Monitor Beta Feedback ### Check feedback ```bash # View recent reviews from beta testers gplay reviews list --package com.example.app \ | jq '.reviews[] | select(.comments[0].userComment.reviewerLanguage != null)' ``` ### Crash reports Use Play Console → Quality → Android vitals → Crashes and ANRs Filter by version code to see beta-specific crashes. ## Automated Tester Management ### Sync from CSV ```bash #!/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" ``` ### testers.csv ```csv email,name,role [email protected],Alice Developer,Developer [email protected],Bob QA,QA [email protected],Carol PM,Product Manager ``` ## Remove Inactive Testers ```bash #!/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="[email protected],[email protected]" # Update gplay testers update \ --package $PACKAGE \ --edit $EDIT_ID \ --track beta \ --emails "$ACTIVE" gplay edits commit --package $PACKAGE --edit $EDIT_ID ``` ## Testing Limits | Track | Max Testers | Review Required | Access Speed | |-------|-------------|-----------------|--------------| | Internal | 100 | No | Instant | | Closed | Unlimited | No | Minutes | | Open | Unlimited | Yes | Days | | Production | Unlimited | Yes | Days | ## Best Practices ### DO: - ✅ Start with internal testing - ✅ Gradually expand to beta - ✅ Communicate clearly with testers - ✅ Provide feedback channels - ✅ Acknowledge tester contributions - ✅ Keep tester lists up to date - ✅ Remove inactive testers periodically ### DON'T: - ❌ Skip internal testing - ❌ Add everyone
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.