Selector Issues
Element not found: selector not found
Element not found: selector not found
Error Message:Causes:Or use Use text targeting insteadThis finds any element containing “Submit” and is more resilient to markup changes.Check for dynamic contentIf content loads via JavaScript, add pauses:
- The selector doesn’t match any element
- The element hasn’t loaded yet
- The element is in a shadow DOM
- The selector syntax is invalid
- Navigate to your URL
- Open Console (Cmd+Option+J on macOS)
- Run:
document.querySelector('.my-button') - If it returns
null, the selector is wrong
waitFor at the video level:Element not found: text not found
Element not found: text not found
Error Message:Causes:If this returns Add a wait
- Text doesn’t exist on page
- Text is split across multiple elements
- Text has different capitalization
- Text hasn’t loaded yet
"Sign In"≠"sign in""Sign In"≠"Sign In"(extra space)
false, the text isn’t on the page.Use a selector insteadMultiple elements found
Multiple elements found
Problem: Your selector or text matches multiple elements, and webreel clicks the wrong one.Solutions:Use ‘within’ to scopeThis only searches within Use:Use unique attributes
.modal, ignoring other “Delete” buttons.Make selector more specificInstead of:Timing Issues
Actions happen too fast
Actions happen too fast
Problem: The recording executes too quickly, making it hard to follow.Solutions:Set a default delayAll steps wait 800ms after completing.Add per-step delaysAdd pause steps
Page not fully loaded
Page not fully loaded
Problem: Recording starts before the page is ready.Solutions:Use waitForWebreel waits up to 30 seconds for Wait for specific elements
.main-content to appear.Add initial pauseAnimations interfering with clicks
Animations interfering with clicks
Problem: Elements are animating when webreel tries to click them.Solutions:Add delays after navigationWait for element and pause
Binary Installation Problems
Chrome download failed
Chrome download failed
Error Message:Solutions:Check network connectionWebreel downloads Chrome from the internet on first run. Verify you have an active connection.Retry installationThe
--force flag re-downloads even if Chrome already exists.Manual Chrome pathIf you have Chrome installed, you can point to it by setting an environment variable (this is an advanced workaround and may require code changes).Check disk spaceChrome requires ~300MB in ~/.webreel/. Verify you have sufficient space:ffmpeg download failed
ffmpeg download failed
Error Message:Solutions:Force reinstallCheck platform supportWebreel downloads ffmpeg for:If the file is 0 bytes or corrupted, delete and reinstall:
- macOS (Intel and Apple Silicon)
- Linux (x64 and arm64)
- Windows (x64)
Permission errors on binaries
Permission errors on binaries
Error Message:Solutions:Fix permissionsReinstall
Recording Issues
Recording produces a blank video
Recording produces a blank video
Causes:This runs in a visible browser so you can see what’s happening.Check verbose outputLook for errors in the step execution.Verify the URL loadsOpen the URL in your regular browser. If it doesn’t load there, it won’t load in webreel.Check viewport sizeSome pages break at unusual sizes. Try standard dimensions:
- Page didn’t load
- Viewport is wrong size
- Chrome crashed during recording
Video is too short or cuts off
Video is too short or cuts off
Cause: Recording stops before animations complete.Solution: Add a final pause:This ensures the video captures the final state.
Cursor not visible in recording
Cursor not visible in recording
Cause: Cursor theme or size is incompatible with page styles.Solutions:Increase cursor sizeUse high-contrast cursorProvide a custom SVG with a bright color:Check z-indexIf your page has elements with
z-index over 999999, the cursor may be hidden behind them. This is expected behavior; the cursor is still functional.Recording fails mid-execution
Recording fails mid-execution
Error Message:Solutions:Use verbose modeThis shows exactly which step failed and why.Test steps incrementallyComment out later steps and add them back one at a time:Record after each addition to isolate the problematic step.Check browser consoleRun in preview mode and check the browser console for JavaScript errors from your page.
Configuration Issues
Config file not found
Config file not found
Error Message:Solutions:Check working directoryWebreel looks for Create config
webreel.config.json in the current directory.Specify config pathJSON syntax errors
JSON syntax errors
Error Message:Causes:This reports syntax errors with line numbers.Use IDE validationThe Common fixes:Remove trailing commas:Escape quotes in strings:
- Trailing comma in last array/object item
- Missing quotes around keys
- Missing comma between items
- Unescaped quotes in strings
$schema field enables autocomplete and validation in VS Code and other editors:Schema validation errors
Schema validation errors
Error Message:Cause: Config doesn’t match the schema.Solutions:Check required fieldsEvery step needs an ValidateCheck documentationRefer to the Actions Reference for required fields for each action.
action field:Verbose Mode
Use verbose mode to debug issues:- Each step as it executes:
[step 0] pause 500ms - Element searches:
click text="Submit" - Timing information
- Error details with stack traces
Preview Mode for Debugging
Preview mode runs steps in a visible browser without recording:- Verify selectors work
- Check timing and delays
- See JavaScript errors in DevTools
- Test steps interactively
Dry Run Mode
Print the resolved configuration without executing:- All videos in the config
- Resolved URLs and viewport sizes
- All steps with descriptions
- Inherited values from top-level config
File Path Issues
Local files not loading
Local files not loading
Problem: Use absolute file:// URLsCheck file exists
url: "./web/index.html" fails to load.Solutions:Check relative pathPaths are relative to the config file:Custom cursor SVG not loading
Custom cursor SVG not loading
Problem: Custom cursor doesn’t appear.Solutions:Check file pathPath is relative to config file:Validate SVG syntaxOpen the SVG in a browser to verify it’s valid.Check file permissions
Getting Help
If you’re still stuck:- Check examples: Browse the examples directory for similar use cases
- Search issues: Look for similar problems in GitHub Issues
- Run with verbose: Always include verbose output when reporting issues
- File an issue: Open a new issue with:
- Your config file
- Verbose output
- Expected vs actual behavior
- Operating system and Node version
Next Steps
API Reference
Complete reference for all actions
Examples
Browse working examples
Configuration
Full configuration reference