Files
proxmox/docs/04-configuration/UDM_PRO_AUTOMATION_IMPROVEMENTS.md
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- 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>
2026-02-12 15:46:57 -08:00

220 lines
5.9 KiB
Markdown

# UDM Pro Automation Improvements
**Last Updated:** 2026-01-14
**Status:** ✅ Enhanced with Context-Aware Detection
---
## Summary
The automation script has been improved with:
1.**Enhanced context-aware detection** - Smart methods before brute force
2.**Optional aggressive auto-click** - Only enabled when explicitly requested
3.**Comprehensive documentation** - Clear warnings and usage guidelines
---
## Detection Strategy Order
The script now follows this priority order:
### 1. Standard Selectors (50+ methods)
- Text-based selectors
- Aria-label selectors
- Data attributes
- Class-based patterns
- Icon-based detection
- XPath selectors
### 2. Context-Aware Detection (NEW - Default)
- **Near "Static Routes" text:** Finds buttons in parent/sibling elements
- **Table headers:** Specifically looks for buttons in table headers
- **Prioritization:** Plus icons, table headers, icon-only buttons get priority
- **Smart filtering:** Skips known non-Add buttons
### 3. JavaScript Evaluation
- Evaluates page structure
- Finds buttons with specific characteristics
- Tries multiple click methods
### 4. Aggressive Auto-Click (OPTIONAL - Last Resort)
- **Default:** Disabled
- **Enable:** `AGGRESSIVE_AUTO_CLICK=true`
- Systematically clicks through buttons
- Only used when explicitly enabled
### 5. Manual Intervention (Fallback)
- Waits for user to click Add button
- Automatically detects when form appears
- Continues automatically
---
## Usage
### Default Mode (Recommended)
```bash
cd /home/intlc/projects/proxmox
UNIFI_USERNAME=unifi_api UNIFI_PASSWORD='L@kers2010$$' \
HEADLESS=false \
node scripts/unifi/configure-static-route-playwright.js
```
**What happens:**
1. Tries 50+ standard selectors
2. Tries context-aware detection (near "Static Routes", table headers)
3. Tries JavaScript evaluation
4. If all fail: Waits for manual Add button click (120 seconds)
5. Automatically continues after form appears
### Aggressive Mode (Last Resort)
```bash
cd /home/intlc/projects/proxmox
UNIFI_USERNAME=unifi_api UNIFI_PASSWORD='L@kers2010$$' \
AGGRESSIVE_AUTO_CLICK=true \
HEADLESS=false \
node scripts/unifi/configure-static-route-playwright.js
```
**What happens:**
1. Tries all standard methods
2. Tries context-aware detection
3. Tries JavaScript evaluation
4. **If enabled:** Tries aggressive auto-click (clicks through all buttons)
5. If still fails: Waits for manual intervention
---
## Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `AGGRESSIVE_AUTO_CLICK` | `false` | Enable aggressive auto-click as last resort |
| `HEADLESS` | `true` | Run browser in headless mode |
| `PAUSE_MODE` | `false` | Pause at key points for manual inspection |
| `DRY_RUN` | `false` | Test mode without making changes |
---
## Risks and Warnings
### Aggressive Auto-Click Risks
⚠️ **Only enable if absolutely necessary**
**Risks:**
- May click unintended buttons (navigation, settings, etc.)
- Could trigger side effects (opening menus, dialogs, navigating away)
- May be slow (up to 90 seconds testing 30 buttons)
- Could break if UI structure changes
- Browser window may flicker/jump visibly
**When to use:**
- Standard methods have failed
- Context-aware detection has failed
- You're willing to accept potential side effects
- You're monitoring the browser window
**When NOT to use:**
- In production without testing
- When UI structure is unknown
- When you need predictable behavior
- When you can't monitor the browser
---
## Best Practices
### 1. Use Default Mode First
- Most reliable and predictable
- Uses smart context-aware detection
- Falls back to manual intervention if needed
### 2. Identify Selectors Manually
- Use browser DevTools to inspect Add button
- Find stable selector (data attribute, stable class)
- Add to standard selector list
- Most maintainable long-term solution
### 3. Monitor First Run
- Run with `HEADLESS=false` first time
- Watch what the script does
- Verify it finds the correct button
- Check for any side effects
### 4. Use Aggressive Mode Sparingly
- Only when other methods fail
- Monitor browser window
- Be prepared to stop if issues occur
- Document any side effects
---
## Troubleshooting
### Context-Aware Detection Not Finding Button
1. **Check page structure:**
- Verify "Static Routes" text is visible
- Check if table headers exist
- Inspect button location in DevTools
2. **Improve selectors:**
- Manually identify button selector
- Add to standard selector list
- Update context-aware detection logic
3. **Enable aggressive mode:**
- Use as last resort
- Monitor carefully
- Document results
### Aggressive Auto-Click Causing Issues
1. **Stop the script immediately**
2. **Check what was clicked:**
- Review screenshots
- Check browser state
- Verify no unintended changes
3. **Use manual intervention instead:**
- Run with `HEADLESS=false`
- Click Add button manually
- Script will continue automatically
---
## Performance Comparison
| Method | Speed | Reliability | Side Effects | Recommended |
|--------|-------|-------------|--------------|-------------|
| Standard Selectors | ⚡ Fast | ⭐⭐⭐ High | ✅ None | ✅ Yes |
| Context-Aware | ⚡ Fast | ⭐⭐⭐ High | ✅ None | ✅ Yes |
| JavaScript Eval | ⚡ Fast | ⭐⭐ Medium | ✅ None | ✅ Yes |
| Aggressive Auto-Click | 🐌 Slow | ⭐ Low | ⚠️ Possible | ⚠️ Last Resort |
| Manual Intervention | ⚡ Fast | ⭐⭐⭐ High | ✅ None | ✅ Yes |
---
## Future Improvements
1. **Manual Selector Identification**
- Use DevTools to find stable selector
- Add to standard selector list
- Remove need for aggressive auto-click
2. **Direct URL Navigation**
- If UniFi exposes direct URL for Add Route form
- Navigate directly, skip button detection
3. **API-Based Approach**
- If UniFi adds API support for static routes
- Use API instead of browser automation
---
**Last Updated:** 2026-01-14
**Status:** ✅ Improvements Complete