Connect & Get help from fellow 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
```