skills/brownbull/tester/SKILL.md
Comprehensive testing skill for GabeDA application - designs test strategies (UAT, integration, smoke, unit), creates tests for frontend (React/Playwright) and backend (Django/pytest), executes tests, analyzes results, and generates detailed reports with findings. Stores reports in ai/testing/ and tests in appropriate project folders.
npx skillsauth add aiskillstore/marketplace testerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides comprehensive testing capabilities for the GabeDA full-stack application (React frontend + Django backend). Design test strategies, create tests, execute them, analyze results, and generate actionable reports.
Ensure quality and reliability of the GabeDA application through systematic testing across all layers:
Use this skill when:
Follow the AAA Pattern (Arrange-Act-Assert):
def test_example():
# Arrange - Set up test data and preconditions
user = create_test_user()
# Act - Perform the action being tested
result = user.login(email, password)
# Assert - Verify the expected outcome
assert result.is_authenticated == True
# Backend (pytest)
def test_<feature>_<scenario>_<expected_result>():
# Example: test_login_with_valid_credentials_returns_tokens()
pass
# Frontend (Playwright)
test('<feature> - <scenario> - <expected result>', async () => {
// Example: test('Login - valid credentials - redirects to dashboard')
})
GabeDA Project:
├── gabeda_frontend/
│ └── tests/ # Frontend tests (Playwright)
│ ├── e2e/ # End-to-end tests
│ ├── integration/ # Integration tests
│ └── smoke/ # Smoke tests
├── gabeda_backend/
│ └── tests/ # Backend tests (pytest)
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── api/ # API endpoint tests
└── khujta_ai_business/
└── ai/testing/ # Test reports & strategies
├── reports/ # Test execution reports
│ └── YYYY-MM-DD_HH-MM_<test-type>_report.md
├── strategies/ # Test strategy documents
└── findings/ # Bug reports & findings
Purpose: Test individual functions/methods in isolation
When: After creating any new function, API endpoint, or component
Location: Backend tests/unit/, Frontend component tests
Example:
# Backend: Test RUT validation
def test_validate_rut_with_valid_format_returns_cleaned():
result = validate_rut_field('12.345.678-9')
assert result == '123456789'
Purpose: Test interactions between multiple components/services
When: After integrating multiple modules or connecting frontend-backend
Location: Both tests/integration/
Example: Test complete login flow (frontend → API → database → response)
Purpose: Test complete user workflows from browser perspective
When: For critical user journeys and multi-step workflows
Location: gabeda_frontend/tests/e2e/
Example: User registers → creates company → uploads CSV → views dashboard
Purpose: Quick validation of critical functionality after deployment
When: Before/after deployments, CI/CD pipeline
Location: Both tests/smoke/
Duration: Must complete in <5 minutes
Example: Can login? Can create company? Can upload file?
Purpose: Validate business requirements with stakeholders
When: Before major releases, sprint demos
Location: ai/testing/strategies/uat_<feature>.md
Format: Written scenarios with expected outcomes
Step 1: Analyze the Feature
Step 2: Design Test Cases
Step 3: Write Tests
# Frontend (Playwright/Vitest)
# Location: gabeda_frontend/tests/<type>/
# Backend (pytest)
# Location: gabeda_backend/tests/<type>/
Step 4: Execute and Verify
Frontend Tests:
cd gabeda_frontend
# Run all tests
npm run test
# Run E2E tests
npm run test:e2e
# Run specific test file
npm run test tests/e2e/login.spec.ts
Backend Tests:
cd gabeda_backend
# Run all tests
./benv/Scripts/python -m pytest
# Run specific test file
./benv/Scripts/python -m pytest tests/unit/test_rut_validation.py
# Run with coverage
./benv/Scripts/python -m pytest --cov=apps --cov-report=html
After test execution, generate a comprehensive report:
Report Structure (stored in ai/testing/reports/):
# Test Report: <Test Type> - <Date>
## Summary
- Total Tests: X
- Passed: X
- Failed: X
- Skipped: X
- Duration: X minutes
- Coverage: X%
## Test Results by Category
[Breakdown by feature/module]
## Failed Tests
[For each failure:]
- Test Name
- Error Message
- Stack Trace
- Reproduction Steps
- Suggested Fix
## Coverage Analysis
[Areas with low coverage]
## Recommendations
[Next steps, areas needing attention]
# Frontend - All tests
cd gabeda_frontend && npm run test
# Frontend - E2E only
cd gabeda_frontend && npm run test:e2e
# Frontend - Watch mode
cd gabeda_frontend && npm run test:watch
# Backend - All tests
cd gabeda_backend && ./benv/Scripts/python -m pytest
# Backend - With coverage
cd gabeda_backend && ./benv/Scripts/python -m pytest --cov --cov-report=term-missing
# Backend - Specific module
cd gabeda_backend && ./benv/Scripts/python -m pytest tests/unit/accounts/
# Backend - Stop on first failure
cd gabeda_backend && ./benv/Scripts/python -m pytest -x
# Backend - Verbose output
cd gabeda_backend && ./benv/Scripts/python -m pytest -v
Scenario: Test that users with multiple companies can switch between them
Step 1: Test Design
Feature: Company Switcher
Test Type: E2E (Playwright)
Location: gabeda_frontend/tests/e2e/company-switcher.spec.ts
Scenarios:
1. User with 1 company - switcher not visible
2. User with 2+ companies - switcher visible
3. Switching companies - dashboard updates
4. Selected company persists - on page reload
Step 2: Implementation (see references/test-examples.md for complete code)
Step 3: Execution
cd gabeda_frontend
npm run test:e2e tests/e2e/company-switcher.spec.ts
Step 4: Report Generation
Create report in ai/testing/reports/2025-11-01_18-30_e2e-company-switcher_report.md with results
references/test-examples.md - Complete test examples for all test typesreferences/playwright-patterns.md - Playwright best practices and patternsreferences/pytest-patterns.md - Pytest fixtures and patternsreferences/test-data-factories.md - Test data creation strategiesFlaky Tests: Tests that pass/fail inconsistently
Slow Tests: Tests taking too long
Failed Assertions: Tests failing unexpectedly
Test Files:
C:\Projects\play\gabeda_frontend\tests\C:\Projects\play\gabeda_backend\tests\Test Reports:
C:\Projects\play\khujta_ai_business\ai\testing\reports\C:\Projects\play\khujta_ai_business\ai\testing\strategies\C:\Projects\play\khujta_ai_business\ai\testing\findings\Example 1: Create E2E test for company dashboard
User: "Create an E2E test that logs in a test user, creates 2 companies,
and verifies both companies show in the switcher"
Tester Skill:
1. Creates test file at gabeda_frontend/tests/e2e/test-dashboard-multi-company.spec.ts
2. Implements test with Playwright
3. Executes test and collects results
4. Generates report at ai/testing/reports/2025-11-01_19-00_e2e-dashboard_report.md
Example 2: Run smoke tests before deployment
User: "Run smoke tests for the frontend and backend"
Tester Skill:
1. Executes frontend smoke tests
2. Executes backend smoke tests
3. Collects all results
4. Generates combined report with pass/fail status
5. Recommends proceed/block deployment based on results
Example 3: Design UAT strategy for new feature
User: "Design UAT test cases for the file upload feature"
Tester Skill:
1. Reviews feature requirements
2. Creates UAT strategy document at ai/testing/strategies/uat_file_upload.md
3. Lists scenarios: valid CSV, invalid format, large files, etc.
4. Defines acceptance criteria for each scenario
5. Provides test data samples
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.