1. Browser fails to launch
Error:Failed to launch browser: Chromium revision is not downloaded.
- Cause: Playwright needs specific browser binaries that aren’t installed.
- Fix (Docker): Rebuild the image to re-download browsers:
- Fix (NPM):
Error:
Protocol error (Target.detachFromTarget): Target closed.
- Cause: The browser crashed, usually due to insufficient memory or shared memory limits.
- Fix:
- Increase Docker memory limits in
docker-compose.yml: - Figranium already passes
--disable-dev-shm-usageby default, which helps on constrained systems.
- Increase Docker memory limits in
Error:
spawn ENOMEM or Cannot allocate memory
- Cause: The host machine is out of RAM.
- Fix: Restart Docker, increase swap space, or upgrade your instance.
2. Proxies not working
Error:ERR_PROXY_CONNECTION_FAILED or net::ERR_TUNNEL_CONNECTION_FAILED
- Cause: Invalid proxy credentials, wrong format, or network firewall blocking the connection.
- Fix:
- Verify the proxy format:
http://user:pass@host:portorsocks5://host:port. - Test the proxy from your server:
curl --proxy "http://host:port" https://ifconfig.me. - Check your server’s outbound firewall rules.
- Verify the proxy format:
Error: Proxy is set but traffic is still going through your direct IP.
- Cause: The proxy is configured but the task doesn’t have it enabled.
- Fix:
- Open the task in the Editor > Settings > Proxy tab and confirm proxy use is toggled on.
- Check
Settings > Proxiesto ensure at least one proxy is marked as active/default.
3. Element not found
Error:Timeout 30000ms exceeded while waiting for selector ".foo"
-
Cause 1: The selector is wrong — the element doesn’t match the CSS you provided.
- Fix: Use Headful Debugging to open the browser and inspect the live page. Right-click > Inspect to find the correct selector.
-
Cause 2: The element loads asynchronously after the page renders.
- Fix: Add a
waitaction (e.g., 2000ms) before the failing action, or use await_selectoraction explicitly targeting the element.
- Fix: Add a
-
Cause 3: The element is inside a
<iframe>.- Note: Figranium does not currently support cross-origin iframes. Same-origin iframes may work via JavaScript execution.
-
Cause 4: The element is inside a Shadow DOM.
- Fix: Enable Shadow DOM support in task settings, then use deep selectors.
-
Cause 5: The element is only visible on desktop and the viewport is too small.
- Fix: In task settings, set a larger viewport width (e.g., 1920x1080).
4. Figranium dashboard session expires frequently
Error: You are logged out from the Figranium dashboard repeatedly.- Cause 1: Sessions expire after 7 days. This is expected behavior — log in again to start a new session.
-
Cause 2:
SESSION_SECRETchanges on every server restart (auto-generated secret).- Fix: Set a static
SESSION_SECRETin your.envfile:
- Fix: Set a static
-
Cause 3:
SESSION_COOKIE_SECURE=trueis set but you’re accessing via HTTP.- Fix: Either access via HTTPS, or set
SESSION_COOKIE_SECURE=falsefor HTTP-only setups.
- Fix: Either access via HTTPS, or set
5. CAPTCHA / Bot Detection
Error: Page shows a CAPTCHA, “Access Denied”, or redirects to a block page.- Cause: The target website detected automated browser behavior.
- Fix:
- Enable Stealth Mode options in the Task Editor (natural typing, idle movements, etc.).
- Use high-quality Residential Proxies rather than datacenter IPs.
- Rotate User Agents in
Settings > System > User Agent. - Add random
waitactions (500–2000ms) between interactions. - Avoid actions that no human would do (instant form fill, no mouse movement).
6. Task runs successfully in headful mode but fails headless
- Cause: Some sites detect headless browsers via JavaScript (e.g.,
navigator.webdriver). - Fix:
- Ensure Stealth Plugin is active (it is by default in Figranium).
- Check if the failure is viewport-related (some sites show different content at different sizes). Set a realistic viewport in task settings.
- Compare the page HTML in both modes using
javascriptblocks that returndocument.documentElement.outerHTML.
7. Data extraction returns empty or wrong results
-
Cause 1: The extraction script runs before dynamic content finishes loading.
- Fix: Add
waitorwait_selectoractions before your final extraction step.
- Fix: Add
-
Cause 2: The extraction script has a bug.
- Fix: Use a
javascriptaction in the middle of your task toreturn document.querySelector(".target")?.innerTextand inspect the result in the execution logs.
- Fix: Use a
-
Cause 3: The page structure changed.
- Fix: Open the page in headful mode and re-inspect the selectors.
8. Execution hangs and never completes
-
Cause 1: A
whileloop with a condition that’s always true.- Fix: Add a counter variable and a
stopcondition to break the loop.
- Fix: Add a counter variable and a
-
Cause 2: A
wait_selectorwaiting for an element that never appears.- Fix: Wrap it in an
on_errorblock with a fallback, or reduce the timeout.
- Fix: Wrap it in an
-
Cause 3: A download action waiting for a file that never triggers.
- Fix: Check that the target element actually initiates a download.
9. PostgreSQL connection fails
Error:ECONNREFUSED or password authentication failed for user
- Cause: Database connection environment variables are wrong or the database is unreachable.
- Fix:
- Verify
DB_POSTGRESDB_HOST,DB_POSTGRESDB_PORT,DB_POSTGRESDB_USER,DB_POSTGRESDB_PASSWORDin your.env. - Test connectivity:
psql -h $DB_POSTGRESDB_HOST -U $DB_POSTGRESDB_USER. - Check that the database and user exist with correct permissions.
- Figranium will fall back to file-based storage if the DB is unavailable — check server logs for the fallback warning.
- Verify
10. API requests return 401 or 403
- 401 Unauthorized: Missing or invalid API key.
- Fix: Include the API key in the
X-API-Keyheader. Retrieve it fromSettings > API Keys.
- Fix: Include the API key in the
- 403 Forbidden: Your IP is not in the allowlist.
- Fix: Add your IP to
Settings > System > Allowed IPs, or clear the allowlist to allow all IPs.
- Fix: Add your IP to
11. API key save returns 400 (API_KEY_TOO_LONG)
- Cause: The API key you provided exceeds the 512-character limit. This applies to the system API key and all AI provider keys (Gemini, Claude).
- Fix: Use a shorter key. Standard provider keys are well under this limit — if you hit it, check for accidental whitespace or extra characters in your input.
Getting More Help
- Check the execution logs in the Executions tab for detailed error messages.
- Use the Headful Browser to observe your task running in real time.
- File issues at the Figranium GitHub repository.