https://github.com/browserstack/wdio-browserstack-service
Browserstack-Webdriverio service integration plugin - A WebdriverIO service that manages local tunnel and job metadata for Browserstack users.
https://github.com/browserstack/wdio-browserstack-service
Last synced: 10 months ago
JSON representation
Browserstack-Webdriverio service integration plugin - A WebdriverIO service that manages local tunnel and job metadata for Browserstack users.
- Host: GitHub
- URL: https://github.com/browserstack/wdio-browserstack-service
- Owner: browserstack
- Created: 2022-03-03T13:25:28.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-08-22T06:45:11.000Z (11 months ago)
- Last Synced: 2025-08-22T08:44:59.322Z (11 months ago)
- Language: TypeScript
- Homepage:
- Size: 1.12 MB
- Stars: 0
- Watchers: 8
- Forks: 3
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# @browserstack/wdio-browserstack-service


Core SDK for BrowserStack integration used by the WebdriverIO BrowserStack Service.
For user configuration and service options, see the official service README:
[https://github.com/webdriverio/webdriverio/blob/main/packages/wdio-browserstack-service/README.md](https://github.com/webdriverio/webdriverio/blob/main/packages/wdio-browserstack-service/README.md)
## Table of Contents
1. [Overview](#overview)
2. [Code Generation](#code-generation)
3. [Development](#development)
4. [Contributing](#contributing)
5. [License](#license)
## Overview
This package provides the TypeScript-based gRPC client and Protobuf definitions
used internally by the `@wdio/browserstack-service` plugin for WebdriverIO.
It includes:
- Generated TypeScript types and clients from Protobuf definitions.
- Message factory constructors for backward compatibility.
## Installation
This module is included as a dependency of the `@wdio/browserstack-service` package.
Users should install and configure the service as documented in the linked README above.
## Setup & Configuration
Add the service to your WebdriverIO configuration (`wdio.conf.js`):
```
export BROWSERSTACK_USERNAME=your_username
export BROWSERSTACK_ACCESS_KEY=your_access_key
```
## Usage
Import and use the gRPC client and message constructors:
```ts
import { SDKClient, StartBinSessionRequestConstructor } from '@browserstack/wdio-browserstack-service';
import path from 'path';
import process from 'process';
import { CLIUtils } from '@browserstack/cli-utils'; // example import, adjust if needed
import { version as packageVersion } from './package.json'; // adjust to your setup
// Initialize the client (uses default insecure credentials unless overridden)
const client = new SDKClient('grpc.browserstack.com:443');
// Collect framework details
const automationFrameworkDetail = CLIUtils.getAutomationFrameworkDetail();
const testFrameworkDetail = CLIUtils.getTestFrameworkDetail();
const frameworkVersions = {
...automationFrameworkDetail.version,
...testFrameworkDetail.version
};
// Build StartBinSessionRequest
const startReq = StartBinSessionRequestConstructor.create({
binSessionId: 'your-session-id', // replace with actual session id
sdkLanguage: CLIUtils.getSdkLanguage(),
sdkVersion: packageVersion,
pathProject: process.cwd(),
pathConfig: path.resolve(process.cwd(), 'browserstack.yml'),
cliArgs: process.argv.slice(2),
frameworks: [automationFrameworkDetail.name, testFrameworkDetail.name],
frameworkVersions,
language: CLIUtils.getSdkLanguage(),
testFramework: testFrameworkDetail.name,
wdioConfig: {}, // provide your WDIO config if applicable
});
// Start a session
client.startBinSession(startReq).then(response => {
console.log('Started session:', response.binSessionId);
}).catch(err => {
console.error('Failed to start session:', err);
});
```
## Code Generation
This project uses [Buf](https://docs.buf.build/) and `ts-proto` to
generate TypeScript code from Protobuf definitions.
### Prerequisites
- [Buf CLI](https://docs.buf.build/installation)
- Node.js ≥16
### Generate & Build
```bash
# Clean previously generated files
npm run clean
# Generate from .proto files
npm run generate
# Compile to JS and declaration files
npm run build
```
Generated files appear under `dist/` and should be published to npm.
## Development
Clone the repository and install dependencies:
```bash
git clone https://github.com/browserstack/wdio-browserstack-service.git
cd wdio-browserstack-service
npm install
```
Run generation and build:
```bash
npm run build
```
## Contributing
Contributions are welcome! Please open issues or pull requests in the [GitHub repository](https://github.com/browserstack/wdio-browserstack-service).
## License
MIT © BrowserStack