diff --git a/.cursor/plugin.json b/.cursor/plugin.json new file mode 100644 index 0000000..c2e23d8 --- /dev/null +++ b/.cursor/plugin.json @@ -0,0 +1,24 @@ +{ + "name": "browserstack", + "version": "1.0.0", + "description": "BrowserStack integration for Cursor. Test websites and mobile apps on real devices, run automated tests, debug failures, and manage test casesβ€”all using natural language.", + "author": { + "name": "BrowserStack", + "email": "support@browserstack.com", + "url": "https://www.browserstack.com" + }, + "keywords": [ + "browserstack", + "testing", + "automation", + "accessibility", + "quality-assurance", + "playwright", + "selenium", + "manual-testing", + "app-testing", + "real-devices" + ], + "logo": "https://github.com/browserstack/mcp-server/raw/main/assets/browserstack-logo.png", + "primaryColor": "#0070f0" +} diff --git a/README.md b/README.md index 36d0340..c95dfa8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,450 @@ -# browserstack-cursor-plugin -BrowserStack Cursor Plugin +# BrowserStack for Cursor + +Test websites and mobile apps on 3,500+ real devices and browsersβ€”directly from Cursor using natural language. No context switching and very easy to setup. + +## What You Can Do + +**Test anywhere, from anywhere** +- Open your localhost app on an iPhone 15 Pro Max +- Test your website on Safari 17 without owning a Mac +- Debug app crashes on Android 14 in real-time +- Run Playwright tests on 50+ browser/OS combinations + +**Stay in your flow** +- Ask in plain English: *"Test my site on Edge"* +- Get instant access to real devices +- Debug failed tests without leaving Cursor +- Fix accessibility issues with AI suggestions + +**Automate everything** +- Run test suites on BrowserStack infrastructure +- Generate test cases from product requirements +- Auto-heal flaky tests with AI +- Manage test cases and track results + +## Setup + +### Step 1: Install Node.js + +You need Node.js version 18 or higher (we recommend v22.15.0 LTS). + +Check your version: +```bash +node --version +``` + +If you need to install or update: +- **macOS**: `brew update && brew upgrade node` or [download here](https://nodejs.org/en/download) +- **Windows**: Download from [nodejs.org](https://nodejs.org/en/download) + +### Step 2: Get BrowserStack Credentials + +1. **Sign up** at [browserstack.com/users/sign_up](https://www.browserstack.com/users/sign_up) + - Free trial available, no credit card required + - Open source projects get free access + +2. **Get your credentials** from [Account Settings](https://www.browserstack.com/accounts/profile/details) + - You'll need your `Username` and `Access Key` + - Keep these handy for the next step + +### Step 3: Install the Plugin + +1. **Install from Cursor Marketplace** (or manually) + +2. **Add your credentials** to your environment: + + **On macOS/Linux:** + ```bash + # Open your shell profile + nano ~/.zshrc # or ~/.bashrc if you use bash + + # Add these lines at the end (replace with your actual credentials) + export BROWSERSTACK_USERNAME="your_username_here" + export BROWSERSTACK_ACCESS_KEY="your_access_key_here" + + # Save and reload + source ~/.zshrc + ``` + + **On Windows (PowerShell):** + ```powershell + # Open PowerShell profile + notepad $PROFILE + + # Add these lines + $env:BROWSERSTACK_USERNAME="your_username_here" + $env:BROWSERSTACK_ACCESS_KEY="your_access_key_here" + ``` + +3. **Restart Cursor** to activate the plugin + +4. **Verify installation** by asking Cursor: + ``` + "Open google.com on Chrome" + ``` + +βœ… That's it! You're ready to test. + +## Common Workflows + +### πŸš€ Quick Manual Testing + +Testing your local development site on different browsers: + +``` +πŸ’¬ "Open my website running on localhost:3000 on Safari 17" +πŸ’¬ "Test localhost:8080 on the latest Chrome on Windows 11" +πŸ’¬ "Open my site on Firefox on macOS" +πŸ’¬ "Take a screenshot of this page" +``` + +**Use case**: You're developing a feature and need to check if it works on Safari, but you're on Windows. + +**Pro tip**: If you find a visual bug, use the **Visual Issue Fix** skill to get browser-specific fixes. + +--- + +### πŸ“± Mobile App Testing + +Test your mobile app on real devices: + +``` +πŸ’¬ "Open my app on iPhone 15 Pro Max" + (Cursor will ask for your .ipa or .apk file path) + +πŸ’¬ "Test my app on Galaxy S24 with Android 14" +πŸ’¬ "My app crashes on iOS 17 when I tap the login button, help me debug" +``` + +**Use case**: You don't have physical access to an iPhone 15 Pro Max but need to verify the login flow works. + +--- + +### πŸ§ͺ Running Automated Tests + +Run your existing test suite on BrowserStack: + +``` +πŸ’¬ "Setup my Playwright tests to run on BrowserStack" +πŸ’¬ "Run my tests on Chrome, Firefox, and Safari" +πŸ’¬ "My test suite failed on BrowserStack session abc123, help me debug" +``` + +**Workflow example**: +1. You: *"Setup my Playwright tests to run on BrowserStack"* +2. Cursor updates your config files automatically +3. You: *"Run my tests on Chrome and Edge"* +4. BrowserStack runs your tests, Cursor shows you results +5. If tests fail: *"Help me debug the failures"* + +--- + +### β™Ώ Accessibility Scanning + +Catch accessibility issues before production (uses **Accessibility Fix** skill): + +``` +πŸ’¬ "Scan accessibility issues on localhost:3000" +πŸ’¬ "Fix accessibility problems on my checkout page" +πŸ’¬ "Check WCAG 2.1 AA compliance for my signup form" +``` + +**Use case**: You want to ensure your signup form is accessible before deploying. + +**What happens**: The skill scans your page, identifies violations, provides specific code fixes, and verifies after you implement them. + +--- + +### πŸ“‹ Test Case Management + +Organize and track your testing: + +``` +πŸ’¬ "Create a Test Management project called 'Payment Flow'" +πŸ’¬ "Add a test case: Verify credit card payment with invalid CVV" +πŸ’¬ "List all high priority test cases in Payment Flow" +πŸ’¬ "Create a test run for smoke tests" +πŸ’¬ "Mark test case TC-123 as passed" +``` + +**Workflow example**: +1. Create project structure +2. Add test cases as you develop features +3. Create test runs before releases +4. Track results and generate reports + +--- + +### πŸ€– AI-Powered Testing + +**Generate test cases from requirements** (uses **Test Case Generator** agent): +``` +πŸ’¬ @test-case-generator + [Attach your PRD file] + "Generate test cases for project PR-12345" + +πŸ’¬ @test-case-generator + "Create test cases for checkout flow with credit card and PayPal" + "Add to project PR-67890" +``` + +**Auto-heal flaky tests:** +``` +πŸ’¬ "My login test keeps failing because the button selector changed. Fix it with self-healing." +πŸ’¬ "Get self-healed selectors for session session_abc123" +``` + +**Convert manual tests to automation:** +``` +πŸ’¬ "Convert my manual test case TC-45 into a Playwright script" +``` + +--- + +## Built-in Skills & Agents + +The plugin includes specialized workflows and AI agents to streamline common testing tasks. + +### πŸ”§ Skills (Multi-Step Workflows) + +#### Accessibility Fix +**What it does**: Scans your page for WCAG violations, identifies issues, and provides code fixes. + +**When to use**: Before deployment, fixing accessibility bugs, ensuring compliance. + +**Sample commands**: +``` +πŸ’¬ "Scan accessibility issues on localhost:3000" +πŸ’¬ "Fix the accessibility problems on my checkout page" +πŸ’¬ "Check WCAG 2.1 AA compliance for localhost:8080/signup" +``` + +**Workflow**: +1. Runs accessibility scan on your page +2. Categorizes issues (Critical/High/Medium) +3. Provides specific code fixes for each issue +4. Re-scans after you implement fixes to verify + +**Example fix output**: +```html + + + + + + + +``` + +--- + +#### Visual Issue Fix +**What it does**: Captures screenshots across browsers, identifies visual bugs, and provides CSS fixes. + +**When to use**: Cross-browser layout issues, responsive design bugs, visual regressions. + +**Sample commands**: +``` +πŸ’¬ "My navigation is broken in Safari, help me fix it" +πŸ’¬ "Compare how my homepage looks on Chrome vs Firefox" +πŸ’¬ "Fix the layout issue on Safari for localhost:3000" +``` + +**Workflow**: +1. Opens page on target browsers +2. Captures screenshots for comparison +3. Identifies visual differences +4. Provides browser-specific CSS fixes +5. Validates fix doesn't break other browsers + +**Example fix output**: +```css +/* Safari flexbox gap issue fix */ +/* Before */ +.container { + display: flex; + gap: 20px; +} + +/* After - Works everywhere */ +.container { + display: flex; +} +.container > * { + margin-right: 20px; +} +``` + +--- + +### πŸ€– AI Agent + +#### Test Case Generator +**What it does**: Generates comprehensive test cases from requirements, user stories, or PRD documents using BrowserStack AI. + +**When to use**: Planning new features, creating test suites, converting requirements to test cases. + +**Sample commands**: +``` +πŸ’¬ @test-case-generator + [Add your PRD file or requirements document to context] + "Generate test cases for Test Management project PR-12345" + +πŸ’¬ @test-case-generator + "Create test cases for a login feature with email and Google OAuth" + "Add them to project PR-54321" +``` + +**Workflow**: +1. Invoke agent with `@test-case-generator` +2. Add requirements file to context (or describe feature) +3. Provide your Test Management project ID (format: `PR-12345`) +4. Agent generates structured test cases +5. Test cases are added to your BrowserStack Test Management project + +**What you get**: +- Test case title and description +- Priority level (Critical/High/Medium/Low) +- Preconditions +- Step-by-step test steps +- Expected results +- Appropriate tags (@smoke, @regression, @p0, etc.) + +**Example interaction**: +``` +You: @test-case-generator + [Attach: login-feature-spec.pdf] + "Generate test cases for project PR-12345" + +Agent: I'll generate comprehensive test cases for your login feature. + + Test cases generated: + βœ“ TC-001: Login - Valid Credentials - Success (@smoke, @p0) + βœ“ TC-002: Login - Invalid Password - Error (@regression, @p1) + βœ“ TC-003: Login - Google OAuth - Success (@smoke, @p0) + βœ“ TC-004: Login - Empty Fields - Validation (@regression, @p2) + + Added 4 test cases to Test Management project PR-12345 +``` + +--- + +## Real Examples + +### Example 1: Cross-Browser Bug Fix + +**Scenario**: Users report a broken layout on Safari. + +``` +πŸ’¬ "Open localhost:3000/dashboard on Safari 17 on macOS Sonoma" + β†’ BrowserStack opens a real Safari session + β†’ You see the layout is indeed broken + +πŸ’¬ "Take a screenshot of this page" + β†’ Screenshot saved to your project + +πŸ’¬ "Now open the same page on Chrome to compare" + β†’ Opens Chrome session + β†’ Layout works fine + +πŸ’¬ "What CSS properties might cause this Safari-specific issue?" + β†’ Cursor analyzes your code and suggests the problem +``` + +### Example 2: Mobile App Crash Debug + +**Scenario**: Your iOS app crashes on launch for some users. + +``` +πŸ’¬ "Open my app on iPhone 14 with iOS 16" + (Provide path: /Users/me/builds/app-v2.1.ipa) + β†’ App launches successfully + +πŸ’¬ "Try on iPhone 15 with iOS 17" + β†’ App crashes! + +πŸ’¬ "Get the crash logs for this session" + β†’ Cursor retrieves logs + +πŸ’¬ "Analyze these crash logs and suggest a fix" + β†’ Cursor identifies the issue and suggests code changes +``` + +### Example 3: Automated Test Failure Investigation + +**Scenario**: Your CI pipeline shows test failures on BrowserStack. + +``` +πŸ’¬ "My Automate build 'feature-branch-123' has 3 failed tests. What went wrong?" + β†’ Cursor fetches error logs and screenshots + +πŸ’¬ "Show me screenshots from the failed tests" + β†’ Screenshots displayed + +πŸ’¬ "The login button selector seems wrong. Update my test file with the correct selector." + β†’ Cursor updates your test file + +πŸ’¬ "Re-run the tests" + β†’ Tests pass βœ… +``` + +## What's Available + +**Manual Testing** +- Test websites on any browser/OS combination +- Test mobile apps on 3,500+ real devices +- Access localhost from cloud devices (no deployment needed) + +**Automated Testing** +- Run Playwright, Selenium, Cypress, and more +- Parallel test execution across browsers +- Get screenshots, videos, and logs automatically + +**Test Management** +- Create and organize test cases +- Track test execution and results +- Generate test reports + +**Accessibility Testing** +- WCAG 2.0/2.1/2.2 compliance scanning +- AI-powered fix suggestions +- Local and production site scanning + +**AI-Powered Features** +- Generate test cases from requirements documents +- Auto-heal flaky test selectors +- Convert manual tests to automation +- Intelligent failure analysis and debugging + +## Troubleshooting + +**Plugin not responding?** +- Verify your credentials are set correctly: `echo $BROWSERSTACK_USERNAME` +- Restart Cursor after adding credentials +- Check Node.js version: `node --version` (need 18+) + +**"Authentication failed" error?** +- Double-check your username and access key from [Account Settings](https://www.browserstack.com/accounts/profile/details) +- Make sure there are no extra spaces in your environment variables + +**Can't access localhost?** +- This works automatically! Just use `localhost:PORT` in your prompts +- BrowserStack creates a secure tunnel to your local machine + +**Behind a corporate firewall?** +- Contact your IT team to allowlist BrowserStack domains +- Or ask us about enterprise firewall configurations + +## Get Help + +- **Issues with the plugin**: [Open a GitHub issue](https://github.com/browserstack/mcp-server/issues) +- **BrowserStack platform questions**: [Contact Support](https://www.browserstack.com/contact) +- **Documentation**: [BrowserStack Docs](https://www.browserstack.com/docs) + +## Pricing + +- **Free Trial**: Test drive with limited minutes +- **Open Source**: Free for qualifying projects ([apply here](https://www.browserstack.com/open-source)) +- **Paid Plans**: From $29/month for individuals, custom enterprise pricing + +See [pricing details](https://www.browserstack.com/pricing) diff --git a/agents/test-case-generator.md b/agents/test-case-generator.md new file mode 100644 index 0000000..2221ba0 --- /dev/null +++ b/agents/test-case-generator.md @@ -0,0 +1,95 @@ +--- +name: test-case-generator +description: Generate comprehensive test cases from product requirements, user stories, or PRD documents using BrowserStack AI. +--- + +# Test Case Generator + +You help users generate test cases from requirements using BrowserStack's AI-powered test case generation. + +## When to Use + +- User provides product requirements or user stories +- User uploads a PRD document +- Need to create test cases for new features + +## Process + +### 1. Get Requirements + +Ask user to provide: +- Text description of the feature +- Or path to PRD file (PDF, image) + +### 2. Generate Test Cases + +Use BrowserStack AI to generate test cases: +``` +"Generate test cases for [feature description]" +"Generate test cases from PRD file at [file path]" +``` + +### 3. Organize in Test Management + +Create project structure: +``` +"Create Test Management project called '[Project Name]'" +"Add folder '[Feature Name]' to project" +``` + +### 4. Review and Add Test Cases + +The AI will generate test cases with: +- Test case title +- Steps to execute +- Expected results +- Priority level + +Review and add to Test Management: +``` +"Add these test cases to Test Management project" +``` + +## Example Workflow + +**User**: "Generate test cases for a login feature with email and Google OAuth" + +**Your approach**: +``` +I'll generate comprehensive test cases for your login feature. + +First, let me understand the requirements: +- Email/password login +- Google OAuth login +- Forgot password flow +- Any specific error scenarios? + +Then I'll use BrowserStack AI to generate test cases covering: +- Happy path (successful login) +- Error cases (wrong password, unregistered email) +- OAuth flow +- Edge cases (empty fields, SQL injection attempts) + +Once generated, I'll organize them in Test Management: +"Create Test Management project 'User Authentication'" +"Add test cases for email login scenarios" +"Add test cases for OAuth login scenarios" +``` + +## Test Case Structure + +Each generated test case includes: +- **Title**: Clear description (e.g., "Login - Valid Credentials - Success") +- **Priority**: Critical/High/Medium/Low +- **Preconditions**: What needs to be set up +- **Steps**: Numbered actions to perform +- **Expected Results**: What should happen +- **Tags**: @smoke, @regression, @p0, etc. + +## Tips for Better Test Cases + +- Be specific about requirements +- Include edge cases and error scenarios +- Mention any integrations (third-party services) +- Specify target platforms (web, mobile, specific browsers) +- Note any compliance requirements (security, accessibility) diff --git a/mcp.json b/mcp.json new file mode 100644 index 0000000..d0568c8 --- /dev/null +++ b/mcp.json @@ -0,0 +1,12 @@ +{ + "mcpServers": { + "browserstack": { + "command": "npx", + "args": ["-y", "@browserstack/mcp-server@latest"], + "env": { + "BROWSERSTACK_USERNAME": "${BROWSERSTACK_USERNAME}", + "BROWSERSTACK_ACCESS_KEY": "${BROWSERSTACK_ACCESS_KEY}" + } + } + } +} diff --git a/skills/accessibility-fix/SKILL.md b/skills/accessibility-fix/SKILL.md new file mode 100644 index 0000000..cddcbdf --- /dev/null +++ b/skills/accessibility-fix/SKILL.md @@ -0,0 +1,104 @@ +--- +name: accessibility-fix +description: Scan a webpage for accessibility issues, identify violations, generate code fixes, and verify the fixes work. Use when fixing WCAG compliance or accessibility bugs. +--- + +# Accessibility Fix Workflow + +## When to Use + +- User wants to fix accessibility issues on a page +- Need to ensure WCAG compliance +- Fixing specific accessibility bugs + +## Steps + +### 1. Run Accessibility Scan + +Ask for the URL to scan: +``` +"Run accessibility scan on [URL]" +``` + +Example: `"Run accessibility scan on localhost:3000"` + +### 2. Analyze Results + +Review the scan results and categorize issues: +- **Critical**: Blocks users (missing form labels, keyboard traps) +- **High**: Major barriers (poor color contrast, missing alt text) +- **Medium**: Best practices (heading hierarchy) + +### 3. Fix Issues in Code + +For each issue, provide specific code fix: + +**Missing Alt Text:** +```html + + + + +Company Logo +``` + +**Poor Color Contrast:** +```css +/* Before - Contrast 2.8:1 (fails) */ +color: #999; +background: #fff; + +/* After - Contrast 4.6:1 (passes) */ +color: #666; +background: #fff; +``` + +**Missing Form Label:** +```html + + + + + + +``` + +**Keyboard Navigation:** +```html + +
Click me
+ + + +``` + +### 4. Verify Fixes + +After user implements fixes: +``` +"Re-scan [URL] to verify accessibility issues are fixed" +``` + +### 5. Report Results + +Confirm what was fixed and any remaining issues. + +## Quick Reference + +**Common WCAG Requirements:** +- Images need alt text +- Color contrast β‰₯ 4.5:1 for text +- All interactive elements keyboard accessible +- Forms have labels +- Proper heading hierarchy (h1 β†’ h2 β†’ h3) + +## Example + +**User**: "Fix accessibility issues on my login page at localhost:3000/login" + +**Workflow**: +1. Scan: `"Run accessibility scan on localhost:3000/login"` +2. Identify: "Found 3 critical issues: missing form labels, poor contrast, no keyboard nav" +3. Fix: Provide code fixes for each issue +4. Verify: `"Re-scan localhost:3000/login"` +5. Confirm: "All critical issues resolved βœ“" diff --git a/skills/visual-issue-fix/SKILL.md b/skills/visual-issue-fix/SKILL.md new file mode 100644 index 0000000..64989df --- /dev/null +++ b/skills/visual-issue-fix/SKILL.md @@ -0,0 +1,130 @@ +--- +name: visual-issue-fix +description: Capture screenshots of a page across browsers, identify visual issues, fix them in code, and validate. Use for cross-browser layout bugs or visual regressions. +--- + +# Visual Issue Fix Workflow + +## When to Use + +- Layout broken in specific browser +- Visual bugs reported by users +- Cross-browser design inconsistencies +- Responsive design issues + +## Steps + +### 1. Capture Screenshots + +Open page on target browsers: +``` +"Open [URL] on Chrome" +"Open [URL] on Safari" +"Open [URL] on Firefox" +``` + +Take screenshots: +``` +"Take screenshot of the current page" +``` + +### 2. Identify Issues + +Compare screenshots and identify: +- Layout differences (alignment, spacing) +- Missing elements +- Broken styling (fonts, colors, borders) +- Responsive breakpoint problems + +### 3. Fix in Code + +Provide specific code fixes: + +**Flexbox Issue:** +```css +/* Before - Safari issue */ +.container { + display: flex; + gap: 20px; +} + +/* After - Works everywhere */ +.container { + display: flex; +} +.container > * { + margin-right: 20px; +} +``` + +**CSS Grid Issue:** +```css +/* Before - IE11 doesn't support */ +.grid { + display: grid; + grid-template-columns: repeat(3, 1fr); +} + +/* After - Fallback for old browsers */ +.grid { + display: flex; + flex-wrap: wrap; +} +@supports (display: grid) { + .grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + } +} +``` + +**Responsive Issue:** +```css +/* Before - Fixed width breaks on mobile */ +.sidebar { + width: 300px; +} + +/* After - Responsive */ +.sidebar { + width: 100%; +} +@media (min-width: 768px) { + .sidebar { + width: 300px; + } +} +``` + +### 4. Validate Fix + +After user implements fix: +``` +"Re-open [URL] on [browser] to verify the fix" +"Take screenshot to confirm layout is correct" +``` + +### 5. Test Other Browsers + +Ensure fix didn't break other browsers: +``` +"Test on Chrome, Firefox, Safari, and Edge" +``` + +## Quick Tips + +- Test on real devices, not just dev tools +- Check both desktop and mobile +- Verify at different screen sizes +- Look for vendor prefix needs (-webkit-, -moz-) + +## Example + +**User**: "My navigation is broken in Safari" + +**Workflow**: +1. Capture: `"Open localhost:3000 on Safari"` + `"Take screenshot"` +2. Identify: "Navigation items overlapping - flexbox gap issue" +3. Fix: Provide CSS fix replacing gap with margins +4. Validate: `"Re-open localhost:3000 on Safari"` - confirm fixed +5. Cross-check: Test on Chrome, Firefox to ensure no regression