-
Notifications
You must be signed in to change notification settings - Fork 7
refactor(ci): use BrowserStack GitHub Actions #182
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
teodorciuraru
wants to merge
13
commits into
teodorciuraru/extract-seed-document-composite-action
from
teodorciuraru/use-browserstack-gha
Closed
refactor(ci): use BrowserStack GitHub Actions #182
teodorciuraru
wants to merge
13
commits into
teodorciuraru/extract-seed-document-composite-action
from
teodorciuraru/use-browserstack-gha
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…139) Co-authored-by: Bulzan Sergiu <[email protected]>
Replace manual BrowserStackLocal setup with official BrowserStack GitHub Actions: - Use setup-env action to configure BrowserStack credentials - Use setup-local action to start/stop BrowserStackLocal tunnel - Remove manual binary download, installation, and management code - Simplify tunnel lifecycle management Benefits: - Cleaner workflow with less boilerplate - Official BrowserStack-maintained actions - Automatic handling of platform-specific binary downloads - Better error handling and logging 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Replace manual BrowserStackLocal binary management (~40 lines) with official BrowserStack GitHub Actions (~17 lines): - Use setup-env action for credentials and build metadata configuration - Use setup-local action for tunnel lifecycle management (start/stop) - Remove manual binary download, installation, and cleanup - Automatic platform detection and built-in error handling Benefits: - 50% reduction in boilerplate code - Consistent pattern with java-spring-ci.yml - More maintainable and reliable tunnel management 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Add BrowserStack GitHub Actions setup-env to Android C++ and Java workflows
for cleaner credential management:
- Use setup-env action to configure BROWSERSTACK_USERNAME and BROWSERSTACK_ACCESS_KEY
- Replace all inline ${{ secrets.BROWSERSTACK_* }} with $BROWSERSTACK_* env vars
- Simplify curl commands and test execution steps
Benefits:
- Centralized credential configuration
- Cleaner, more maintainable code
- Consistent with Selenium workflows
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
…flows
Add BrowserStack GitHub Actions setup-env to 7 remaining Appium workflows
for cleaner credential management:
Workflows refactored:
- android-kotlin-ci.yml (Espresso tests)
- dotnet-maui-ci.yml (Android + iOS Appium tests)
- flutter-ci.yml (Android + iOS Flutter integration tests)
- kotlin-multiplatform-ci.yml (Espresso tests)
- react-native-ci.yml (Android + iOS Maestro tests)
- react-native-expo-ci.yml (Android + iOS Maestro tests)
- swift-ci.yml (iOS XCUITest)
Changes:
- Use setup-env action to configure BROWSERSTACK_USERNAME and BROWSERSTACK_ACCESS_KEY
- Replace all inline ${{ secrets.BROWSERSTACK_* }} with $BROWSERSTACK_* env vars
- Remove CREDS variable declarations where they existed
- Simplify curl commands for upload, execution, and monitoring steps
Benefits:
- Centralized credential configuration across all BrowserStack workflows
- Cleaner, more maintainable code
- Consistent with Selenium workflows (java-spring-ci, javascript-web-ci)
- Official BrowserStack GitHub Actions best practices
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
Update all BrowserStack project names from "Ditto <SDK>" to "QuickStart <SDK>" for consistency and clarity: - QuickStart Android C++ - QuickStart Android Java - QuickStart Android Kotlin - QuickStart .NET MAUI - QuickStart Flutter - QuickStart Kotlin Multiplatform - QuickStart React Native - QuickStart React Native Expo - QuickStart Swift - QuickStart JavaScript Web - QuickStart Java Spring "Ditto" is redundant since these are official Ditto SDK quickstart projects. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Ensure project names in BrowserStack API JSON payloads match the project-name set in setup-env action: - android-java-ci.yml: "QuickStart Android Java" - react-native-ci.yml: "QuickStart React Native" - react-native-expo-ci.yml: "QuickStart React Native Expo" Consistency ensures proper grouping in BrowserStack dashboard. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
- Rename all browserstack jobs to 'browserstack' or 'browserstack-{platform}'
- Rename 'report-results' and 'build-summary' to 'summary' for consistency
- Update all job dependencies and needs references
Remove `branches:` restrictions from workflow triggers to support stacked PRs. Path-based filtering (`paths:`) already ensures CI only runs on relevant changes, and concurrency groups prevent wasteful parallel runs. This allows CI to run on: - PRs targeting any branch (including stacked PRs) - Pushes to any branch with relevant changes Updated workflows: - android-cpp-ci.yml - android-java-ci.yml - android-kotlin-ci.yml - dotnet-maui-ci.yml - flutter-ci.yml - java-spring-ci.yml - javascript-web-ci.yml - kotlin-multiplatform-ci.yml - react-native-ci.yml - react-native-expo-ci.yml - swift-ci.yml 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Change from 'Build #N' to 'CI Build #N' for consistency with all other workflows. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Contributor
Author
|
Closing this PR to split into smaller, more focused changes. The BrowserStack GitHub Actions integration will be revisited separately. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Refactor all CI workflows to use official BrowserStack GitHub Actions for cleaner credential management.
Workflows Refactored
Selenium (Web Testing with BrowserStackLocal):
java-spring-ci.yml- Replaced manual BrowserStackLocal binary management (~40 lines) withsetup-env+setup-localactions (~17 lines)javascript-web-ci.yml- Same refactoring as java-springAppium (Mobile App Testing):
android-cpp-ci.yml- Addedsetup-envfor credential managementandroid-java-ci.yml- Addedsetup-envfor credential managementandroid-kotlin-ci.yml- Addedsetup-envfor Espresso testsdotnet-maui-ci.yml- Addedsetup-envfor Android + iOS testsflutter-ci.yml- Addedsetup-envfor Android + iOS Flutter integration testskotlin-multiplatform-ci.yml- Addedsetup-envfor Espresso testsreact-native-ci.yml- Addedsetup-envfor Android + iOS Maestro testsreact-native-expo-ci.yml- Addedsetup-envfor Android + iOS Maestro testsswift-ci.yml- Addedsetup-envfor iOS XCUITestTotal: 11 workflows refactored (2 Selenium, 9 Appium)
Changes Made
For Selenium Workflows (java-spring, javascript-web):
setup-envaction for credentials and build metadata configurationsetup-localaction for tunnel lifecycle management (start/stop)For Appium Workflows (all mobile app testing):
setup-envaction to configureBROWSERSTACK_USERNAMEandBROWSERSTACK_ACCESS_KEYenvironment variables${{ secrets.BROWSERSTACK_* }}with$BROWSERSTACK_*env varsCREDSvariable declarations where they existedBenefits
Technical Notes
Why only Selenium workflows need
setup-local:localhost(CI runner), so they need BrowserStackLocal tunnelWhy
setup-envhelps Appium workflows:BROWSERSTACK_USERNAMEandBROWSERSTACK_ACCESS_KEYas environment variables${{ secrets.* }}references in curl commandsStacked on top of #181
🤖 Generated with Claude Code