Skip to content

feat(browserstack): add --provider-appium-version to pin the hosted Appium server - #2609

Merged
thymikee merged 1 commit into
callstack:mainfrom
Procopis-QG:feat/browserstack-provider-appium-version
Sep 14, 2026
Merged

thymikee merged 1 commit into
callstack:mainfrom
Procopis-QG:feat/browserstack-provider-appium-version

Conversation

@Procopis-QG

Copy link
Copy Markdown
Contributor

Summary

BrowserStack runs Appium 1.x for an App Automate session unless the request names a version in bstack:options.appiumVersion. The mobile: commands the WebDriver interactor issues (deepLink, pressButton, activateApp) need a 2.x or newer server, so a session left on the default fails those commands with no way to opt out from the CLI.

--provider-appium-version <version> (alias --appium-version) joins the BrowserStack device-feature table beside --provider-timezone and friends, following docs/agents/cli-flags.md: contracts (client-connection, lease-scope, remote-config-fields), connection flag definition + group, CLI client config, connection profile, remote config schema, doctor options, integration-progress-model classification, and the BrowserStack docs page. Operator-only (projectConfig: false), not recorded.

agent-device open --platform android --provider browserstack \
  --provider-app bs://<id> --provider-appium-version 3.2.0

18 files touched (+45 / −0). Independent of #2608; the two touch disjoint hunks of one shared integration test.

Validation

Tested commit: bb3daba

  • pnpm check:affected --base upstream/main --run — the scripts/ change fails open to the full local set (59 checks). Every runnable gate passed except mutation-model, whose single failing assertion (scripts/mutation/ownership.test.ts — gestures.test.ts owning scroll-edge-state) fails identically on pristine upstream/main ad9b90614 and is unrelated to this change.
  • pnpm exec vitest run test/integration/provider-scenarios/cloud-webdriver-provider-adapters.test.ts packages/provider-webdriver/src/browserstack-device-features.test.ts src/cli/parser/__tests__/args-parse-session.test.ts — 60/60 passed.
  • Live evidence: Appium 3.x sessions on App Automate from a fork build carrying this flag (v0.21.1-pelago.1).
  • GitHub-authoritative lanes not run locally.

@thymikee

Copy link
Copy Markdown
Member

Reviewed at bb3daba. This looks clean: the flag is one new row in the BrowserStack device-feature table and goes through the existing plumbing to bstack:options.appiumVersion.

No CI checks have run on this head yet.

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Sep 14, 2026
@thymikee

Copy link
Copy Markdown
Member

Reviewed at bb3daba. No code findings: the flag is additive, follows the BrowserStack device-feature table, and its hunks do not overlap #2608.

The live App Automate run in the description ran on the fork release v0.21.1-pelago.1. If you have a run on bb3daba, please link it. CI has not run yet on this fork PR, and there are no conflicts.

@Procopis-QG

Copy link
Copy Markdown
Contributor Author

No dedicated App Automate run on bb3daba yet. The live session in the description exercised this flag via v0.21.1-pelago.1; on this head the provider-integration tests assert appiumVersion lands in bstack:options (cloud-webdriver-provider-adapters.test.ts). Happy to run one on this SHA before merge if you want hosted evidence on the PR head.

@thymikee

thymikee commented Sep 14, 2026 •

Copy link
Copy Markdown
Member

can you rebase to resolve conflicts please?

…ppium server

BrowserStack runs Appium 1.x for an App Automate session unless the request names a
version in `bstack:options.appiumVersion`. The `mobile:` commands the WebDriver
interactor issues (`deepLink`, `pressButton`, `activateApp`) need a 2.x or newer
server, so a session left on the default fails those commands.

`--provider-appium-version <version>` (alias `--appium-version`) joins the BrowserStack
device-feature table beside `--provider-timezone` and friends, and threads through the
same connection profile, lease scope, remote config and doctor surfaces. It is
operator-only (`projectConfig: false`) and not recorded.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Procopis-QG
Procopis-QG force-pushed the feat/browserstack-provider-appium-version branch from bb3daba to 605274f Compare September 14, 2026 19:02
@Procopis-QG

Copy link
Copy Markdown
Contributor Author

Rebased onto current main (605274fda). Only conflict was CHANGELOG.md — kept both the #2608 Fixed entry and this PR's Added entry. CI is rerunning on the new head.

@thymikee
thymikee merged commit a5f1f36 into callstack:main Sep 14, 2026
15 checks passed
@thymikee

Copy link
Copy Markdown
Member

released these two browserstack updates in 0.21.3 so you can test them live

@Procopis-QG
Procopis-QG deleted the feat/browserstack-provider-appium-version branch September 14, 2026 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants