refactor(provider-webdriver): ship BrowserStack as the `@agent-device/browserstack` plugin
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Refactorización
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- node.js, typescript
- Área
- devtools
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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).
- Lenguaje dominante
- TypeScript
- Estrellas
- 4.9k
- Forks
- 328
- Merge medio
- 12 h 18 min
- PR fusionados (30 d)
- 561
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de callstack/agent-device
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
callstack/agent-device#3407 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
callstack/agent-device#3353 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
callstack/agent-device#1869 ·
Los mantenedores suelen responder en 1 día
-
needs-triage
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
callstack/agent-device#3453 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
callstack/agent-device#3451 ·
Los mantenedores suelen responder en 1 día
Todos los issues de callstack/agent-device
Issues similares
-
enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 80/100
alunduil/projects-v2-sync#21 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
-
enhancement minor
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
testcontainers/testcontainers-node#1539 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
christopher-buss/eslint-plugin-flawless#72 ·
Los mantenedores suelen responder en 1 día
-
cleanName keeps a state code that's joined to the word before it (SavannahGa → "Savannah Ga")Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
openwatersio/slackwater-database#281 ·
Los mantenedores suelen responder en 1 día