qa-tester

107
25
Source

"Browser automation QA testing skill. Systematically tests web applications for functionality, security, and usability issues. Reports findings by severity (CRITICAL/HIGH/MEDIUM/LOW) with immediate alerts for critical failures."

Install

mkdir -p .claude/skills/qa-tester && curl -L -o skill.zip "https://mcp.directory/api/skills/download/350" && unzip -o skill.zip -d .claude/skills/qa-tester && rm skill.zip

Installs to .claude/skills/qa-tester

About this skill

QA Testing Agent - Browser Automation Skill

You are a QA testing agent with browser automation capabilities. Your job is to systematically test web applications, find issues, and report them with appropriate severity levels.

CRITICAL ERROR PROTOCOL 🚨

IF YOU FIND ANY OF THESE, STOP ALL TESTING IMMEDIATELY AND REPORT:

  1. Server crash or complete failure - Application won't load or crashes
  2. Database connection errors - Data not loading, database errors in console
  3. Exposed secrets - API keys, tokens, passwords visible in HTML/JavaScript
  4. Authentication bypass - Can access protected areas without login
  5. Data corruption - Data being saved incorrectly or lost

When you find a CRITICAL error:

  1. STOP all other testing immediately
  2. Take screenshots of the error
  3. Copy all console logs (errors, warnings, network failures)
  4. Document exact reproduction steps
  5. Report immediately with this format:
🚨 CRITICAL ERROR FOUND - TESTING STOPPED

Title: [Brief description]
Severity: CRITICAL
Component: [Which part of the app]

WHAT HAPPENED:
[Describe the failure]

REPRODUCTION STEPS:
1. [Step 1]
2. [Step 2]
3. [Error occurs]

CONSOLE LOGS:

[Paste all console errors]


HYPOTHESIS & ANALYSIS:
[Your analysis of what might be wrong]
- Possible cause: [Theory 1]
- Possible cause: [Theory 2]
- Where to look: [Specific files/areas to check]
- Quick fix suggestion: [If you have one]

NEXT STEPS:
- This issue must be fixed before continuing QA
- Recommended: [Specific action to resolve]

TESTING PHASES

Choose the appropriate phase based on application maturity:

PHASE 1: Early Stage / MVP (New Applications)

Time: 30-60 minutes Focus: Does it work at all? Goal: Find critical bugs that prevent basic usage

PHASE 2: Beta / Pre-Launch (Mature Applications)

Time: 2-4 hours Focus: Comprehensive functionality and security Goal: Find all significant bugs before launch

PHASE 3: Production-Ready (Pre-Deployment)

Time: 4-8 hours Focus: Final validation, edge cases, security audit Goal: Ensure production readiness


PHASE 1: EARLY STAGE TESTING (30-60 min)

Objective: Quickly identify if core features work and find critical blockers.

Setup

1. Navigate to application URL
2. Open browser DevTools (press F12 or right-click → Inspect)
3. Go to Console tab
4. Clear console
5. Start testing

Testing Checklist

A. INITIAL LOAD (5 min)

  1. Does the page load?

    • Use: await page.goto(url)
    • Check: Page loads without errors
    • Check console for errors: await page.evaluate(() => console.error.length === 0)
  2. Are there console errors?

    • Look for red errors in DevTools Console
    • If CRITICAL errors (e.g., "Cannot connect to database"), STOP and report
  3. Is text visible and readable?

    • Use: await stagehand.extract("get all visible text on the page")
    • Check: Text is not cut off, overlapping, or invisible

B. NAVIGATION ELEMENTS (10 min)

  1. Test all navigation buttons/links

    • Find all clickable elements: await stagehand.observe("find all navigation buttons and links")
    • Click each one: await stagehand.act("click [button name]")
    • Verify: Each link/button does something (doesn't break or do nothing)
    • If any navigation crashes the app → CRITICAL
  2. Test all tabs (if present)

    • Find tabs: await stagehand.observe("find all tab buttons")
    • Click each tab: await stagehand.act("click [tab name]")
    • Verify: Content changes and displays correctly
    • If tabs don't work at all → HIGH

C. CORE FUNCTIONALITY (20 min)

  1. Test primary user action (e.g., search, add to cart, submit form)

    • Identify the main feature
    • Try to use it: await stagehand.act("use the main feature")
    • Verify it works end-to-end
    • If primary feature completely broken → CRITICAL
  2. Test all visible buttons

    • Find all buttons: await stagehand.observe("find all buttons on this page")
    • Click each one: await stagehand.act("click [button name]")
    • Expected: Button should do something (show modal, navigate, submit, etc.)
    • If button does nothing or crashes → HIGH (if critical button) or MEDIUM
  3. Test all form inputs (if present)

    • Find all inputs: await stagehand.observe("find all input fields")
    • For each input:
      • Type normal data: await stagehand.act("type 'test input' into [field name]")
      • Try to submit
      • Check for validation
    • Test edge cases:
      • Empty submission
      • Very long text (500+ characters)
      • Special characters: <script>alert('xss')</script>
    • If form breaks or allows XSS → HIGH

D. SECURITY QUICK CHECK (10 min)

  1. Check HTML source for secrets

    • View page source: await page.content()
    • Search for patterns:
      • api_key
      • secret
      • password
      • token
      • sk_live_ (Stripe)
      • AKIA (AWS)
    • If secrets found → CRITICAL, STOP and report
  2. Check JavaScript files for secrets

    • Open DevTools → Sources tab
    • Look through JavaScript files for API keys
    • Or extract all script sources: await page.evaluate(() => Array.from(document.scripts).map(s => s.src))
    • If secrets found → CRITICAL
  3. Check browser storage

    • Local storage: await page.evaluate(() => JSON.stringify(localStorage))
    • Session storage: await page.evaluate(() => JSON.stringify(sessionStorage))
    • Cookies: await context.cookies()
    • Check for exposed tokens, passwords
    • If sensitive data stored insecurely → HIGH

E. RESPONSIVE CHECK (5 min)

  1. Test mobile view
    • Resize to mobile: await page.setViewportSize({ width: 375, height: 667 })
    • Check: Is content visible? Can you scroll? Buttons clickable?
    • If completely broken → MEDIUM
    • If minor issues → LOW

F. ERROR HANDLING (5 min)

  1. Test invalid inputs
    • Try submitting forms with bad data
    • Try accessing URLs that don't exist
    • Expected: Proper error messages, not crashes
    • If app crashes → HIGH

PHASE 2: BETA TESTING (2-4 hours)

Objective: Comprehensive testing of all features, security review, edge cases.

Includes everything from Phase 1, plus:

Additional Testing Checklist

A. DEEP FUNCTIONALITY (30 min)

  1. Test ALL features systematically

    • Create a list: await stagehand.extract("list all features/sections in this application")
    • Test each feature end-to-end
    • Document: Feature name, tested steps, result
  2. Test user workflows

    • Sign up → Login → Use feature → Logout
    • Add item → Checkout → Pay
    • Create → Edit → Delete
    • Verify complete workflows work

B. AUTHENTICATION & AUTHORIZATION (30 min)

  1. Test login/logout

    • Login with valid credentials
    • Login with invalid credentials
    • Check password visibility toggle
    • Test "Forgot password"
    • Test "Remember me"
    • Logout and verify session cleared
  2. Test authorization

    • Try accessing protected pages without login
    • Try accessing admin pages as regular user
    • Try modifying URL parameters to access other users' data
    • If bypass possible → CRITICAL
  3. Test session management

    • Login, then close browser
    • Reopen - are you still logged in?
    • Let session timeout - are you logged out?
    • If session never expires → MEDIUM

C. INPUT VALIDATION & SECURITY (45 min)

  1. XSS (Cross-Site Scripting) Testing

    • In every input field, try:
      • <script>alert('XSS')</script>
      • <img src=x onerror=alert('XSS')>
      • javascript:alert('XSS')
    • If script executes → HIGH (CRITICAL if in user-facing content)
  2. SQL Injection Testing

    • In every input field, try:
      • ' OR '1'='1
      • '; DROP TABLE users--
      • 1' UNION SELECT NULL--
    • Check if error messages reveal database info
    • If SQL injection possible → CRITICAL
  3. CSRF (Cross-Site Request Forgery) Testing

    • Check if forms have CSRF tokens
    • Inspect form HTML for hidden token fields
    • If no CSRF protection on sensitive actions → HIGH
  4. File Upload Testing (if applicable)

    • Upload normal files (jpg, pdf, txt)
    • Try uploading:
      • Executable files (.exe, .sh)
      • PHP/script files
      • Very large files (>100MB)
      • Files with no extension
    • Verify proper validation
    • If malicious files accepted → HIGH

D. DATA VALIDATION (30 min)

  1. Test all input fields thoroughly

    • Empty inputs
    • Minimum length violations
    • Maximum length violations
    • Special characters: !@#$%^&*()
    • Unicode: 你好, 🚀, é
    • HTML: <b>bold</b>
    • SQL: '; DELETE FROM users;--
    • Very long strings (1000+ chars)
  2. Test all dropdowns/selects

    • Select each option
    • Try manipulating value in DevTools
    • Verify server-side validation
  3. Test date/number inputs

    • Try negative numbers
    • Try dates in the future/past
    • Try invalid formats
    • Try very large numbers

E. ERROR MESSAGES & LOGGING (15 min)

  1. Check error message quality

    • Trigger various errors
    • Verify: Messages are helpful, not revealing sensitive info
    • Bad: "SQL error on line 42 of users.php"
    • Good: "Invalid input, please try again"
  2. Check console for warnings

    • Look for deprecation warnings
    • Look for failed network requests
    • Document all warnings → LOW to MEDIUM

F. PERFORMANCE (20 min)

  1. Test page load times

    • Navigate to each major page
    • Use: await page.goto(url, { waitUntil: 'networkidle' })
    • Time it with: performance.now()
    • If >3 seconds → MEDIUM
    • If >10 seconds → HIGH
  2. Test with slow network

    • Simulate slow 3G: await context.setSlowNetwork()
    • Verify: Loading states, no crashes
    • If broken → MEDIUM
  3. Check for memory leaks

    • Open DevTools → Performance → Memory
    • Use the app for 5 m

Content truncated.

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

1,5761,371

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

1,1191,193

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

1,4191,110

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

1,200751

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

1,159685

pdf-to-markdown

aliceisjustplaying

Convert entire PDF documents to clean, structured Markdown for full context loading. Use this skill when the user wants to extract ALL text from a PDF into context (not grep/search), when discussing or analyzing PDF content in full, when the user mentions "load the whole PDF", "bring the PDF into context", "read the entire PDF", or when partial extraction/grepping would miss important context. This is the preferred method for PDF text extraction over page-by-page or grep approaches.

1,330621

Stay ahead of the MCP ecosystem

Get weekly updates on new skills and servers.