Run tests on BrowserStack. Use when user mentions "browserstack", "cross-browser", "cloud testing", "browser matrix", "test on safari", "test on firefox", or "browser compatibility".
Run Playwright tests on BrowserStack's cloud grid for cross-browser and cross-device testing.
Environment variables must be set:
BROWSERSTACK_USERNAME — your BrowserStack usernameBROWSERSTACK_ACCESS_KEY — your access keyIf not set, inform the user how to get them from browserstack.com/accounts/settings and stop.
The BrowserStack MCP server is not auto-registered (issue #978).
pw-browserstackwas removed from the plugin's.mcp.jsonbecause it failed to connect for every user (the plugin ships nonode_modules). Thebrowserstack_*MCP tools used below, and the/pw:browserstackcommand, will fail with "tool not found" until it is enabled manually — see the Integrations section of the plugin'sCLAUDE.md(cd integrations/browserstack-mcp && npm install, then register the server in your own user/project MCP config). Setting the env vars alone is not sufficient.
/pw:browserstack setup
Steps:
playwright.config.ts// Add to playwright.config.ts
import { defineConfig } from '@playwright/test';
const isBS = !!process.env.BROWSERSTACK_USERNAME;
export default defineConfig({
// ... existing config
projects: isBS ? [
{
name: "chromelatestwindows-11",
use: {
connectOptions: {
wsEndpoint: `wss://cdp.browserstack.com/playwright?caps=${encodeURIComponent(JSON.stringify({
'browser': 'chrome',
'browser_version': 'latest',
'os': 'Windows',
'os_version': '11',
'browserstack.username': process.env.BROWSERSTACK_USERNAME,
'browserstack.accessKey': process.env.BROWSERSTACK_ACCESS_KEY,
}))}`,
},
},
},
{
name: "firefoxlatestwindows-11",
use: {
connectOptions: {
wsEndpoint: `wss://cdp.browserstack.com/playwright?caps=${encodeURIComponent(JSON.stringify({
'browser': 'playwright-firefox',
'browser_version': 'latest',
'os': 'Windows',
'os_version': '11',
'browserstack.username': process.env.BROWSERSTACK_USERNAME,
'browserstack.accessKey': process.env.BROWSERSTACK_ACCESS_KEY,
}))}`,
},
},
},
{
name: "webkitlatestos-x-ventura",
use: {
connectOptions: {
wsEndpoint: `wss://cdp.browserstack.com/playwright?caps=${encodeURIComponent(JSON.stringify({
'browser': 'playwright-webkit',
'browser_version': 'latest',
'os': 'OS X',
'os_version': 'Ventura',
'browserstack.username': process.env.BROWSERSTACK_USERNAME,
'browserstack.accessKey': process.env.BROWSERSTACK_ACCESS_KEY,
}))}`,
},
},
},
] : [
// ... local projects fallback
],
});
"test:e2e:cloud": "npx playwright test --project='chrome@*' --project='firefox@*' --project='webkit@*'"/pw:browserstack run
Steps:
BROWSERSTACK_USERNAME=$BROWSERSTACK_USERNAME \
BROWSERSTACK_ACCESS_KEY=$BROWSERSTACK_ACCESS_KEY \
npx playwright test --project='chrome@*' --project='firefox@*'
/pw:browserstack results
Steps:
browserstack_get_builds MCP tool/pw:browserstack browsers
Steps:
browserstack_get_browsers MCP tool/pw:browserstack local
For testing localhost or staging behind firewall:
npm install -D browserstack-local| Tool | When |
|---|---|
| browserstack_get_plan | Check account limits |
| browserstack_get_browsers | List available browsers |
| browserstack_get_builds | List recent builds |
| browserstack_get_sessions | Get sessions in a build |
| browserstack_get_session | Get session details (video, logs) |
| browserstack_update_session | Mark pass/fail |
| browserstack_get_logs | Get text/network logs |
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/browserstack · pinned to the source commit
# Run from your project root
git clone https://github.com/alirezarezvani/claude-skills.git .skillboard-tmp
git -C .skillboard-tmp checkout 19392f7a08264ed00486a251f5b2098321771f94
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/.gemini/skills/browserstack" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/alirezarezvani/claude-skills.git .skillboard-tmp
git -C .skillboard-tmp checkout 19392f7a08264ed00486a251f5b2098321771f94
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/.gemini/skills/browserstack" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/browserstack
Scanner static-checks@0.1.0 · commit 19392f7a0826. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
References credentials, tokens or secret files that a skill should not need.
Evidence: [redacted]· fingerprint e9cbb0224c4a3d23
Instructs shell/process/package operations that run commands on the host.
Evidence: npm install· fingerprint 3a2dc0ae21eb56d7