refactor(provider-webdriver): ship BrowserStack as the `@agent-device/browserstack` plugin
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
- Issue 类型
- 重构
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- node.js, typescript
- 领域
- devtools
调研方向
First confirm #3312 has landed on main, then read the existing BrowserStack implementation in packages/provider-webdriver and the packaging template in packages/provider-testmu. Move the named modules and tests into packages/provider-browserstack, update core, docs, and provider-scenario tests as specified, and run the listed checks plus a live session. Done when the package check and affected checks pass, the default install shrinks without budget exceptions, and the live session is recorded in the PR.
由索引模型根据 Issue 内容生成。
描述
Purpose and evidence
0.22 stops bundling hosted device providers with the default installation. BrowserStack already presents the plugin factory shape inside core: packages/provider-webdriver/src/browserstack-provider.ts returns { webDriver, connection } next to a manifest-shaped declaration (CLOUD_WEBDRIVER_PROVIDER_DECLARATIONS in providers.ts), composed through the same route an installed WebDriver plugin uses (PR #3312). TestMu (packages/provider-testmu, #3118) is the packaging template: bundled ESM, agentDevicePlugin manifest, ./connection-verification subpath, test/package-smoke.mjs, release through scripts/release-workspace.mjs.
Required behavior and boundary
- New workspace package
packages/provider-browserstackpublishing@agent-device/browserstack, versioned with core, built with tsdown like TestMu. Its default export is(host: ProviderPluginHost) => { webDriver, connection }; the manifest declaresprovider: "browserstack", theconnectioncapabilities andcredentialVariables: ["BROWSERSTACK_USERNAME", "BROWSERSTACK_ACCESS_KEY"]exactly asCLOUD_WEBDRIVER_PROVIDER_DECLARATIONSdoes today. - Move the BrowserStack modules out of
provider-webdriver(browserstack.ts,browserstack-provider.ts,browserstack-connection.ts,browserstack-connection-verification.ts,browserstack-device-features.ts, their tests, and thebs://helpers fromproviders.ts).provider-webdriverkeeps the shared engine and the./pluginsurface only. - Core drops
browserstackfromBUNDLED_CLOUD_WEBDRIVER_PROVIDERSand fromRESERVED_PLUGIN_PROVIDERS; the connect route, credential fingerprint, and daemon composition keep working through the plugin manifest with no provider-name branch left insrc/. agent-device connect browserstackwithout the plugin fails with the existing unknown-provider error namingplugins add @agent-device/browserstack; help,website/docs/docs/browserstack.md,device-clouds.md,plugins.md("remain bundled"), and the README move the provider to the plugin install flow.
agent-device plugins add @agent-device/browserstack
export BROWSERSTACK_USERNAME=... BROWSERSTACK_ACCESS_KEY=...
agent-device connect browserstack --platform android --device "Google Pixel 8" --provider-os-version 14.0 --provider-app bs://app-id
Completion and validation
node scripts/check-provider-plugin.mjs packages/provider-browserstackpasses (packed install, host-recognized errors, CLI connect).- Provider-scenario integration tests that today build the BrowserStack runtime through
createBundledCloudWebDriverRuntimesrun the plugin factory throughcreateCloudWebDriverRuntimethe way the TestMu scenarios do. pnpm check:affected --runpasses; the Size report shows the default install shrinking by the BrowserStack modules; eager-closure budgets need no approval row.- One live BrowserStack session (connect, open, snapshot, close, artifacts) with the packed plugin, recorded in the PR.
Dependencies and readiness
Blocked by: #3312 landing on main. Sibling: the AWS Device Farm and Limrun extractions in this milestone; land this one first, it needs no plugin-host change.
Effort: M. Risk: low (shape already proven by TestMu; user-visible change is the install step).
- 主要语言
- TypeScript
- 星标
- 4.9k
- 派生
- 328
- 平均合并
- 12 小时 13 分钟
- 30 天内合并 PR
- 541
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
callstack/agent-device 的其他 Issue
-
settings clear-app-state fails with ENOENT … scandir '(null)' for iOS system apps such as Settings可能已有人在做 @thymikee 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 80/100
callstack/agent-device#3305 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
callstack/agent-device#1869 ·
维护者通常 1 天内回复
-
install and reinstall from another session in the same daemon replace the app on a claimed device未关闭
难度 4/5 3-5 天 新手友好度 55/100
callstack/agent-device#3345 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 48/100
callstack/agent-device#3344 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 35/100
callstack/agent-device#3342 · 7 条评论 ·
维护者通常 1 天内回复
查看 callstack/agent-device 的全部 Issue
相似的 Issue
-
难度 1/5 1-3 小时 新手友好度 84/100
维护者通常 1 天内回复
-
core
难度 2/5 1-3 小时 新手友好度 70/100
vectorize-io/hindsight#5457 ·
维护者通常 1 天内回复
-
beginner friendly community contributions-welcome good first issue hacktoberfest help wanted testing up-for-grabs
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 85/100
lukilabs/beautiful-mermaid#160 ·
-
难度 2/5 1-3 小时 新手友好度 66/100
rescript-lang/rescript-lang.org#1420 ·
维护者通常 2 天内回复