Skip to content

QVAC-23489 feat[api]: add ABot-World interactive world sessions to the SDK #3679

QVAC-23489 feat[api]: add ABot-World interactive world sessions to the SDK

QVAC-23489 feat[api]: add ABot-World interactive world sessions to the SDK #3679

# QVAC SDK E2E Tests - PR Trigger
#
# Triggers SDK e2e tests via test-sdk.yml when:
# - "test-e2e-smoke" label applied: runs smoke suite on desktop + mobile
# - "test-e2e-full" label applied: runs full suite on desktop + mobile
# - PR opened/updated targeting release-* branch with packages/sdk/ changes: runs full suite
#
# On success, applies "e2e-tested" label to the PR.
#
# Uses pull_request_target for secrets access (Device Farm, MQTT).
# Authorization gate prevents untrusted fork PRs from running.
name: QVAC Tests (sdk) - PR
on:
pull_request_target:
types: [labeled, opened, synchronize]
paths:
- "packages/sdk/**"
permissions:
actions: read
id-token: write
contents: read
pull-requests: write
packages: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
fork-approval:
permissions:
statuses: write
uses: ./.github/workflows/reusable-fork-approval.yml
resolve-config:
needs: [fork-approval]
permissions:
contents: read
pull-requests: write
statuses: read
runs-on: ubuntu-latest
outputs:
should-run: ${{ steps.check.outputs.should-run }}
suite: ${{ steps.check.outputs.suite }}
steps:
- name: Checkout authorize-pr (default branch)
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 6.0.2
with:
ref: ${{ github.event.repository.default_branch }}
sparse-checkout: .github/actions/authorize-pr
sparse-checkout-cone-mode: false
persist-credentials: false
- name: Authorize PR
id: auth
uses: ./.github/actions/authorize-pr
with:
label: safe-to-test
github-token: ${{ github.token }}
- name: Determine test config
if: steps.auth.outputs.allowed == 'true'
id: check
shell: bash
env:
EVENT: ${{ github.event.action }}
LABEL: ${{ github.event.label.name }}
TARGET: ${{ github.base_ref }}
run: |
if [ "$EVENT" = "labeled" ]; then
if [ "$LABEL" = "test-e2e-smoke" ]; then
echo "should-run=true" >> "$GITHUB_OUTPUT"
echo "suite=smoke" >> "$GITHUB_OUTPUT"
elif [ "$LABEL" = "test-e2e-full" ]; then
echo "should-run=true" >> "$GITHUB_OUTPUT"
echo "suite=" >> "$GITHUB_OUTPUT"
else
echo "::notice::Ignoring unrelated label: $LABEL"
echo "should-run=false" >> "$GITHUB_OUTPUT"
fi
elif echo "$TARGET" | grep -q '^release-'; then
# Path filter on the trigger already ensures packages/sdk/ changes exist
echo "::notice::Release branch PR with SDK changes — running full suite"
echo "should-run=true" >> "$GITHUB_OUTPUT"
echo "suite=" >> "$GITHUB_OUTPUT"
else
echo "should-run=false" >> "$GITHUB_OUTPUT"
fi
run-tests:
needs:
- fork-approval
- resolve-config
if: (needs.resolve-config.outputs.should-run == 'true')
uses: ./.github/workflows/test-sdk.yml
with:
targets: desktop + mobile
suite: ${{ needs.resolve-config.outputs.suite }}
secrets: inherit
apply-label:
needs: run-tests
if: success()
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Apply e2e-tested label
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # 7.0.1
with:
script: |
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: ['e2e-tested']
});