First real upgrade since 2023. Bug fixes you'll feel immediately, a modern toolchain underneath, and a clear compatibility story going forward.
⚠️ Breaking
- Ruby 3.0+ is now required. If your CI still runs Ruby 2.6 or 2.7, pin to
~> 1.0in yourPluginfileand upgrade Ruby when you're ready. Your existingGemfile.lockwill stay on 1.0.5 until you explicitlybundle update.
🐛 Fixed
fastlane action upload_to_testappio(the help/docs introspection command) no longer crashes withNameError. Anilltypo was breaking this path — actual uploads were unaffected; only the docs/introspection command was broken.validate_file_pathno longer raisesTypeErrorwhen only one ofapk_file/ipa_fileis set — fixes iOS-only and Android-only lanes that didn't pass the other file param.- Uploads no longer fail when
ta-cliwrites warning or info lines to stderr — only realError:lines fail the lane now. --api_tokenis now masked (********) in verbose-mode logs — previously echoed in plain text viaUI.command.
✨ Improved
- When an upload fails, the real
ta-clierror message now appears in your CI logs (e.g. "provisioning profile expired" or "Invalid authorization") — no more generic "Error while calling ta-cli". Open3.popen3now uses the array form — no shell, no escaping fragility for special characters inrelease_notesor file paths.- Concurrent stdout/stderr reading prevents a potential pipe-buffer deadlock on large
ta-clioutputs. - API token portal URL updated to https://portal.testapp.io/profile/tokens (was
/settings/api-credentials).
🔧 Internal
- Test coverage: 36.79% → 100% line / 86% branch (49 unit + 2 opt-in integration specs that exercise the real
ta-clibinary). - GitHub Actions CI matrix: Ruby 3.0–3.3 × ubuntu/macos. Travis and CircleCI configs removed.
- Modernized: rubocop 1.50+, simplecov 0.22, fastlane 2.217, Dependabot enabled.
- Automated RubyGems release via OIDC trusted publishing on
v*tag push.
🔒 Already pinned to ~> 1.0?
You're safe — 2.x requires Ruby 3.0+, your pin won't auto-upgrade.
📋 Upgrade path
# In your Pluginfile:
gem 'fastlane-plugin-testappio' # latest 2.x (Ruby 3.0+)
# or
gem 'fastlane-plugin-testappio', '~> 1.0' # stay on 1.x (Ruby 2.6+)Full changelog: CHANGELOG.md · v1.0.5...v2.0.0
Get started: README · Support: https://help.testapp.io/