# Default Timeout Update Summary ## Overview Updated all default timeout values from **5 seconds to 30 seconds** across the cremote codebase to provide more reasonable defaults for browser automation operations. ## Files Modified ### 1. daemon/daemon.go Updated all default timeout values: - **General operations**: 5s → 30s (86 instances) - **Selection timeouts**: 5s → 30s (form operations, element selection) - **Action timeouts**: 5s → 30s (clicks, form submissions, file uploads) - **Comments**: Updated all "default to 5 seconds" → "default to 30 seconds" **Exceptions kept at higher values:** - Bulk operations: 30s (unchanged) - Axe-core testing: 30s (unchanged) - OCR processing: 30s (unchanged) - Library injection: 10s (unchanged) - Keyboard testing: 15s (unchanged) - Various accessibility tests: 10-15s (unchanged) ### 2. main.go Updated CLI flag defaults: - `openTabTimeout`: 5s → 30s - `loadURLTimeout`: 5s → 30s ### 3. mcp/main.go Updated MCP server defaults: - **Tool schema defaults**: Updated all `"default": 5` → `"default": 30` in InputSchema definitions - **getIntParam calls**: Updated all `getIntParam(params, "timeout", 5)` → `getIntParam(params, "timeout", 30)` - **Description strings**: Updated all "(default: 5)" → "(default: 30)" **Total changes in mcp/main.go:** - ~40+ tool schema default values - ~35+ getIntParam default values - ~40+ description strings ## Rationale ### Why 30 seconds? 1. **Browser automation is inherently slow**: Modern web pages with heavy JavaScript can take 10-20 seconds to fully load 2. **Network variability**: Users may have slower connections or be testing remote sites 3. **Reduces timeout errors**: 5 seconds was too aggressive and caused frequent timeout failures 4. **Industry standard**: Most browser automation tools (Selenium, Playwright, Puppeteer) use 30s as default 5. **Better user experience**: Users can always override with shorter timeouts if needed, but starting with a reasonable default prevents frustration ### Operations that benefit most: - Page navigation and loading - Element selection (waiting for elements to appear) - Form interactions (especially with validation) - File uploads - JavaScript execution - Screenshot capture ## Testing ✅ Code compiles successfully ✅ All timeout values updated consistently ✅ Comments and documentation updated ✅ No breaking changes (users can still override timeouts) ## Migration Notes - **No breaking changes**: This only affects default values - **Backward compatible**: Users who explicitly set timeout parameters will see no change - **Performance impact**: Operations may take longer to timeout, but this is intentional - **User override**: All timeout parameters can still be explicitly set to any value ## Examples ### Before: ```go timeout := 5 // Default: 5 seconds ``` ### After: ```go timeout := 30 // Default: 30 seconds ``` ### MCP Tool Before: ```go "timeout": map[string]any{ "type": "integer", "description": "Timeout in seconds (default: 5)", "default": 5, } ``` ### MCP Tool After: ```go "timeout": map[string]any{ "type": "integer", "description": "Timeout in seconds (default: 30)", "default": 30, } ``` ## Related Documentation - See `mcp/PERFORMANCE_BEST_PRACTICES.md` for timeout recommendations - See individual tool documentation for specific timeout guidance