WebdriverIO service for better Browserstack integration
npm install @browserstack/wdio-browserstack-serviceCore 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
@wdio/browserstack-service plugin for WebdriverIO.@wdio/browserstack-service package.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 and ts-proto to
generate TypeScript code from Protobuf definitions.$3
- Buf CLI
- Node.js ≥16$3
`bash
Clean previously generated files
npm run cleanGenerate from .proto files
npm run generateCompile 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
``