Back to Cypress

BUGBOT

.cursor/BUGBOT.md

15.13.17.5 KB
Original Source

Overview

Essential rules for reviewing code changes in the Cypress monorepo.

Critical PR Review Rules

Security Checklist

  • Input validation: All user inputs are validated
  • Path traversal: File paths are safely resolved
  • Sensitive data: No secrets or sensitive info in logs
  • Network requests: URLs are validated before requests
  • File permissions: Proper permission handling for file operations

Performance Checklist

  • Startup time: No blocking operations during startup
  • Memory usage: Resources are properly disposed
  • Bundle size: No unnecessary dependencies added
  • Async operations: Non-blocking where possible
  • Caching: Appropriate caching strategies used

Cypress-Specific Rules

  • Browser compatibility: Test on Chrome, Firefox, Edge, Safari
  • Network stubbing: Proper request/response mocking
  • DOM manipulation: Safe element selection and manipulation
  • Test isolation: Tests don't interfere with each other
  • Command chaining: Proper use of Cypress command chaining
  • Assertions: Meaningful assertions with clear failure messages
  • Timeouts: Appropriate timeout values for different operations
  • Retry logic: Proper retry strategies for flaky operations

Code Quality Rules

  • Naming: Variables and functions have descriptive names
  • Comments: Complex logic is explained with comments
  • Imports: Imports are organized and minimal
  • Exports: Only necessary functions/classes are exported
  • Side effects: Functions are pure when possible
  • Error boundaries: Proper error boundaries in React components
  • Magic numbers and Regex: Extract to named constants

Testing Rules

  • Test naming: Tests describe the behavior being tested
  • Test isolation: Each test is independent
  • Mocking: External dependencies are properly mocked
  • Coverage: Critical paths have test coverage
  • Edge cases: Error conditions and edge cases are tested
  • Performance: Tests don't take too long to run
  • Flakiness: Tests are deterministic and not flaky
  • Setup/teardown: Proper test setup and cleanup

Package-Specific Priorities

Critical Packages (Highest Priority)

  • @packages/server: The heart of Cypress - changes affect everything
    • Focus: Async operations, file system security, proxy logic, performance, cross-platform compatibility
  • @packages/driver: Runs in browser context - security and compatibility crucial
    • Focus: Browser compatibility, DOM safety, network stubbing, test commands, memory management
  • cli: Main command-line interface - user-facing entry point
    • Focus: Command-line argument parsing, user experience, error handling, cross-platform compatibility

User-Facing Packages (High Priority)

  • @packages/app: Main desktop application
    • Focus: UI/UX, Vue component logic, accessibility, state management, performance
  • @packages/launchpad: Project setup UI
    • Focus: User experience, GraphQL integration, onboarding flow, project scaffolding
  • @packages/runner: Test runner interface
    • Focus: React component logic, UI state management, test execution display

Published Packages (High Priority)

  • @cypress/ packages*: Published to npm - breaking changes critical
    • Focus: Backward compatibility, documentation, comprehensive testing, API stability
  • @cypress/vue: Vue component testing support
    • Focus: Vue integration, component testing logic, Vue 3 compatibility
  • @cypress/react: React component testing support
    • Focus: React integration, component testing logic, React version compatibility
  • @cypress/angular: Angular component testing support
    • Focus: Angular integration, component testing logic, Angular CLI integration
  • @cypress/vite-dev-server: Vite development server integration
    • Focus: Vite integration, dev server configuration, ESM compatibility

Core Infrastructure (High Priority)

  • @packages/config: Configuration management
    • Focus: Configuration schema changes, validation logic, backward compatibility
  • @packages/errors: Error handling
    • Focus: Error message clarity, error handling patterns, user-friendly messages
  • @packages/types: TypeScript definitions
    • Focus: Type safety, API compatibility, public interface definitions
  • @packages/network: Network utilities
    • Focus: Network security, request/response handling, HTTP client utilities
  • @packages/proxy: Proxy management
    • Focus: Proxy security, traffic handling, request interception
  • @packages/net-stubbing: Network stubbing
    • Focus: Stubbing logic, network simulation accuracy, request mocking
  • @packages/https-proxy: HTTPS proxy functionality
    • Focus: HTTPS security, certificate management, SSL/TLS handling

Browser & Platform (High Priority)

  • @packages/launcher: Browser management
    • Focus: Cross-platform compatibility, browser binary handling, process management
  • @packages/electron: Electron integration
    • Focus: Electron API usage, binary packaging, cross-platform builds, app distribution
  • @packages/extension: Browser extension
    • Focus: Extension API usage, browser compatibility, communication protocols

Data & State Management (Medium Priority)

  • @packages/data-context: Data management
    • Focus: State management patterns, data consistency, application state, GraphQL schema changes, resolver logic, API schema definition
  • @packages/socket: WebSocket communication
    • Focus: Socket security, message handling, real-time communication

Code Processing (Medium Priority)

  • @packages/rewriter: Code rewriting
    • Focus: Code transformation logic, source map accuracy, JavaScript instrumentation
  • @packages/v8-snapshot-require: V8 snapshot support
    • Focus: Snapshot compatibility, performance impact, Electron integration
  • @packages/packherd-require: Dependency packing
    • Focus: Bundle optimization, dependency management, module resolution

UI & Frontend (Medium Priority)

  • @packages/frontend-shared: Shared frontend utilities
    • Focus: Component reusability, utility functions, shared UI components
  • @packages/icons: Icon assets
    • Focus: Asset organization, icon consistency, visual design
  • @packages/reporter: Test reporting
    • Focus: Report accuracy, formatting logic, test result display

Development & Build (Medium Priority)

  • @packages/ts: TypeScript configuration
    • Focus: TypeScript configuration, compilation setup, type checking
  • @packages/web-config: Web configuration
    • Focus: Configuration logic, build setup, web app configuration
  • @packages/scaffold-config: Project scaffolding
    • Focus: Scaffolding logic, template accuracy, project initialization

Utility Packages (Lower Priority)

  • @packages/root: Root package
    • Focus: Monorepo setup, package coordination
  • @packages/example: Example project
    • Focus: Example accuracy, documentation quality, test examples
  • @packages/resolve-dist: Path resolution
    • Focus: Asset resolution, path handling, build artifact management

Tooling Packages (Lower Priority)

  • @tooling/electron-mksnapshot: Electron snapshot tool
    • Focus: Snapshot generation logic, Electron integration, performance optimization
  • @tooling/packherd: Dependency packing tool
    • Focus: Bundle optimization, dependency resolution, module bundling
  • @tooling/v8-snapshot: V8 snapshot tooling
    • Focus: Snapshot management, performance optimization, V8 integration