Playwright集成BrowserStack SDK报错:无法读取wsEndpoint属性
解决Playwright + BrowserStack SDK运行时的
wsEndpoint未定义错误 问题分析
使用npx browserstack-node-sdk playwright test运行测试时出现TypeError: Cannot read properties of undefined (reading 'wsEndpoint'),核心原因是BrowserStack SDK未能正确注入Playwright配置,导致无法获取远程浏览器的WebSocket连接端点。
解决方案步骤
1. 修复Playwright配置文件的SDK集成
当前playwright.config.ts未引入BrowserStack SDK的核心配置,导致SDK无法接管远程浏览器连接逻辑。修改配置如下:
import { defineConfig, devices } from '@playwright/test'; import { browserstackPlaywrightConfig } from 'browserstack-node-sdk/dist/playwright'; import path from 'path'; export default defineConfig({ // 继承BrowserStack SDK的基础配置 ...browserstackPlaywrightConfig, testDir: path.join(__dirname, "specs/smoke/playwright/tests"), // 修复拼写错误:plawright → playwright fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, use: { // 继承SDK的use配置,覆盖自定义trace选项 ...browserstackPlaywrightConfig.use, trace: 'on-first-retry', }, })
注意:
testDir中的拼写错误可能导致测试用例无法加载,间接引发配置异常,需优先修复。
2. 完善browserstack.yml配置
补充Playwright版本指定,确保SDK与本地Playwright版本兼容:
userName: 你的BrowserStack用户名 accessKey: 你的BrowserStack访问密钥 framework: playwright playwrightVersion: 1.40.0 # 替换为本地项目安装的Playwright版本 platforms: - os: OS X osVersion: Ventura browserName: Chrome browserVersion: latest browserstackLocal: false buildName: playwright-js buildIdentifier: test-build-1 # 测试阶段用固定值,CI环境再替换为${BUILD_NUMBER} projectName: playwright-js debug: true consoleLogs: verbose
务必替换占位符为真实有效的
userName和accessKey,否则会导致认证失败。
3. 重新初始化SDK并清理依赖
- 执行命令重新初始化SDK,确保配置注入完整:
npx browserstack-node-sdk init - 清理依赖缓存并重新安装,排除版本兼容问题:
rm -rf node_modules package-lock.json npm install
4. 验证环境变量(CI场景)
如果在CI环境运行,需确认BUILD_NUMBER环境变量已正确设置;测试阶段可临时替换为固定值,排除变量未定义导致的配置加载失败。
旧版集成说明
旧版手动拼接cdpUrl的方式不推荐,SDK已封装多平台配置管理、连接稳定性等逻辑,手动配置易出现端点拼接错误、版本不兼容等问题,建议坚持使用SDK方式并完成上述配置修复。
内容的提问来源于stack exchange,提问作者Srikanth Athikari
相关产品推荐
相关产品推荐

