- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
6.7 KiB
UDM Pro Browser Automation Progress
Last Updated: 2026-01-14
Status: In Progress - Page Mapping and Button Detection
Summary
We've successfully implemented browser automation for UDM Pro routing configuration using Playwright. The script can:
- ✅ Authenticate with UDM Pro
- ✅ Navigate to Routing & Firewall settings
- ✅ Detect page structure and state
- ✅ Find buttons using multiple detection strategies
- ⚠️ Challenge: Finding the correct "Add Route" button
Completed Features
1. Authentication ✅
- Successfully logs in with
unifi_apiaccount - Handles SSL certificate issues
- Comprehensive error handling
2. Navigation ✅
- Successfully navigates to
Settings → Routing & Firewall → Static Routes - Handles page redirects
- Waits for page load and API responses
3. Page Structure Understanding ✅
- Maps page sections, tables, and buttons
- Understands button context (toolbar, table header, routes section)
- Detects page state and loading indicators
4. Button Detection ✅
- Multiple detection strategies:
- Text-based selectors (50+ variations)
- Aria-label and data-testid selectors
- Class-based selectors
- Icon-based detection
- Position-based detection
- JavaScript evaluation
- XPath selectors
- Priority-based button selection
- Theme button filtering
5. Menu/Dropdown Handling ✅
- Detects when buttons open menus
- Finds menu items
- Attempts to click "Add Route" options in menus
Current Challenge: Add Button Detection
Problem
The script successfully finds buttons on the routing page, but the button it identifies opens a theme menu (with "Light" option) rather than the Add Route form.
Findings
-
Buttons Found:
- Button 0: "UDM Pro" (Site Switcher)
- Button 1: Icon-only, class
unifi-portal-nboz5b e10mj2ih2(theme button) - Button 2: Icon-only, class
unifi-portal-1bmvzvc eqfginb7 button__qx3Rmpxb but - Buttons 4-5: "Submit Support Ticket"
- Button 6: "Go back to Home"
- Buttons 7-8: Icon-only, disabled
-
Page Structure:
- No tables detected on the routing page
- Route-related text not consistently found
- Buttons are in toolbars/headers, not near route content
-
Possible Reasons:
- Add button may be in a different location (sidebar, different tab, collapsed section)
- Add button may only appear when certain conditions are met
- Add button may use different UI patterns than expected
- Page may use a different layout than documented
Tools Created
1. configure-static-route-playwright.js
Main automation script with:
- Comprehensive button detection
- Menu handling
- Form detection
- Error recovery
- Screenshot capture
- Pause mode for manual intervention
2. inspect-routing-page.js
Debugging tool to list all clickable elements and identify potential Add buttons.
3. map-routing-page-structure.js
Page structure mapper that analyzes sections, buttons, forms, and tables.
4. find-add-button-comprehensive.js
Comprehensive button finder that tests potential Add buttons to see what they do.
5. comprehensive-page-mapper.js
Full page mapper that:
- Maps page at different scroll positions
- Analyzes button hierarchy
- Finds route-related text
- Identifies most likely Add button candidates
Next Steps
Immediate Actions
-
Visual Inspection:
- Run script with
HEADLESS=falseto visually see the page - Manually identify where the Add button is located
- Note its exact selector, position, and context
- Run script with
-
Screenshot Analysis:
- Review screenshots in
scripts/unifi/screenshots/ - Identify the Add button location
- Document its characteristics
- Review screenshots in
-
Page State Investigation:
- Check if Add button only appears when:
- Routes table is empty
- Specific tab is selected
- Section is expanded
- User has specific permissions
- Check if Add button only appears when:
-
Alternative Approaches:
- Check if Add button is in a sidebar or different panel
- Look for keyboard shortcuts (Ctrl+N, etc.)
- Check if it's a link instead of a button
- Verify if it requires clicking something else first
Code Improvements
-
Enhanced Page State Detection:
// Add logic to detect: - Empty vs populated routes table - Active tab/section - Expanded/collapsed sections - Permission-based UI differences -
Better Button Prioritization:
// Improve priority calculation: - Check button's actual function (test click) - Verify button opens form vs menu - Filter out theme/settings buttons more aggressively -
Alternative Navigation:
// Try different navigation paths: - Direct URL to static routes - Click through menu items - Use keyboard shortcuts
Usage
Run Main Script
cd /home/intlc/projects/proxmox
UNIFI_USERNAME=unifi_api UNIFI_PASSWORD='L@kers2010$$' \
HEADLESS=true node scripts/unifi/configure-static-route-playwright.js
Run with Visible Browser (for debugging)
UNIFI_USERNAME=unifi_api UNIFI_PASSWORD='L@kers2010$$' \
HEADLESS=false node scripts/unifi/configure-static-route-playwright.js
Run Page Mapper
UNIFI_USERNAME=unifi_api UNIFI_PASSWORD='L@kers2010$$' \
node scripts/unifi/comprehensive-page-mapper.js
Environment Variables
UNIFI_UDM_URL: UDM Pro URL (default:https://192.168.0.1)UNIFI_USERNAME: Username (default:unifi_api)UNIFI_PASSWORD: Password (required)UNIFI_BROWSER_USERNAME: Override username for browser automationUNIFI_BROWSER_PASSWORD: Override password for browser automationDRY_RUN: Set totrueto test without making changesHEADLESS: Set tofalseto see browser (default:true)PAUSE_MODE: Set totrueto pause at key points for manual intervention
Screenshots
Screenshots are automatically saved to scripts/unifi/screenshots/ at each step:
01-login-page.png: Login page02-credentials-filled.png: After filling credentials03-after-login.png: After successful login05-routing-page.png: Routing page06-static-routes-page.png: Static Routes page07-before-add-button.png: Before attempting to click Add button08-after-button-click-menu.png: After clicking button (if menu appears)error-state.png: Error state
Related Documentation
- UDM_PRO_BROWSER_AUTOMATION_GUIDE.md - Setup and usage guide
- UDM_PRO_BROWSER_AUTOMATION_STATUS.md - Status and known issues
- UDM_PRO_ROUTING_API_LIMITATIONS.md - Why browser automation is needed
Last Updated: 2026-01-14