Connect & Get help from 6000+ developers on our Discord community.Ask the Community
Github Actions
Integrate Low Code Automation API with GitHub Actions to trigger test suite execution and monitor build statuses in your CI/CD workflow.
Run test suites
Integrate the provided script into your GitHub Actions workflow file within a step, ensure to replace placeholders with actual BrowserStack credentials.
```bash
name: Test and Deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Trigger Test Suite
id: trigger_test_suite
run: |
response=$(curl -u YOUR_USERNAME:YOUR_ACCESS_KEY -X POST https://lcnc-api.browserstack.com/api/v1/test-suite/${TEST_SUITE_ID}/run)
BUILD_ID=$(echo $response | jq -r '.build_id')
echo "::set-output name=build_id::$BUILD_ID"
echo "Build ID: $BUILD_ID"
- name: Check Build Status
run: |
buildStatus=""
retryInterval=30
BUILD_ID=$
while [[ ("$buildStatus" != "passed" && "$buildStatus" != "failed") ]]; do
response=$(curl -u YOUR_USERNAME:YOUR_ACCESS_KEY -s https://lcnc-api.browserstack.com/api/v1/builds/$BUILD_ID/status)
buildStatus=$(echo $response | jq -r '.build_status')
sleep $retryInterval
done
if [[ "$buildStatus" == "passed" ]]; then
echo "Build passed"
# Add further steps for actions to be taken if build passed
elif [[ "$buildStatus" == "failed" ]]; then
echo "Build failed"
exit 1
else
echo "Build status unstable"
exit 1
fi
```
If you want to trigger test suites with local testing enabled from Github Actions, pass the local_identifier when triggering a test suite run from a GitHub Action. This helps BrowserStack associate the test run with your local connection instance.
```bash
name: Test and Deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
env:
LOCAL_IDENTIFIER: ${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}
steps:
- name: 'BrowserStack Env Setup'
uses: browserstack/github-actions/setup-env@master
with:
username: ${{ secrets.USERNAME }}
access-key: ${{ secrets.PASSWORD }}
- name: 'BrowserStack Local Tunnel Setup' # Invokes the setup-local action
uses: browserstack/github-actions/setup-local@master
with:
local-testing: start
local-identifier: ${{ env.LOCAL_IDENTIFIER }}
- name: Trigger Test Suite
id: trigger_test_suite
run: |
response=$(curl -u ${{ secrets.USERNAME }}:${{ secrets.PASSWORD }} -H "Content-Type: application/json" -X POST -d "{\"local_identifier\": \"${LOCAL_IDENTIFIER}\"}" https://lcnc-api.browserstack.com/api/v1/test-suite/${{TEST_SUITE_ID }}/run)
BUILD_ID=$(echo $response | jq -r '.build_id')
echo "::set-output name=build_id::$BUILD_ID"
echo "Build ID: $BUILD_ID"
- name: Check Build Status
run: |
buildStatus=""
retryInterval=30
BUILD_ID=$
while [[ ("$buildStatus" != "passed" && "$buildStatus" != "failed") ]]; do
response=$(curl ${{ secrets.USERNAME }}:$ {{ secrets.PASSWORD }} -s https://lcnc-api.browserstack.com/api/v1/builds/$BUILD_ID/status)
buildStatus=$(echo $response | jq -r '.build_status')
sleep $retryInterval
done
if [[ "$buildStatus" == "passed" ]]; then
echo "Build passed"
# Add further steps for actions to be taken if build passed
elif [[ "$buildStatus" == "failed" ]]; then
echo "Build failed"
exit 1
else
echo "Build status unstable"
exit 1
fi
```