This commit is contained in:
Josh at WLTechBlog
2025-09-30 14:11:27 -05:00
parent 86d1db55cd
commit a3c782eb24
11 changed files with 4904 additions and 6 deletions

120
test_drag_and_drop.sh Executable file
View File

@@ -0,0 +1,120 @@
#!/bin/bash
# Test script for cremote drag and drop functionality
# This script demonstrates all three drag and drop commands
echo "🎯 Testing Cremote Drag and Drop Functionality"
echo "=============================================="
echo ""
# Check if cremote binary exists
if [ ! -f "./cremote" ]; then
echo "❌ Error: cremote binary not found. Please run 'go build -o cremote .' first"
exit 1
fi
# Check if daemon is running
echo "🔍 Checking if cremotedaemon is running..."
if ! ./cremote status > /dev/null 2>&1; then
echo "❌ Error: cremotedaemon is not running"
echo "Please start the daemon first:"
echo " 1. Start Chrome with debugging: chromium --remote-debugging-port=9222 --user-data-dir=/tmp/chromium-debug"
echo " 2. Start daemon: cd daemon && ./cremotedaemon"
exit 1
fi
echo "✅ Daemon is running"
echo ""
# Test 1: Basic drag and drop between elements
echo "🎯 Test 1: Drag and drop between elements..."
echo "Command: ./cremote drag-and-drop --source=\".draggable\" --target=\".drop-zone\" --timeout=10"
echo ""
echo "Note: This test requires a page with draggable elements."
echo "You can test this on: https://www.w3schools.com/html/html5_draganddrop.asp"
echo ""
echo "Press Enter to continue or Ctrl+C to skip..."
read -r
./cremote drag-and-drop --source="#drag1" --target="#div2" --timeout=10
if [ $? -eq 0 ]; then
echo "✅ Drag and drop between elements completed successfully"
else
echo "⚠️ Drag and drop between elements failed (this is expected if no suitable page is loaded)"
fi
echo ""
# Test 2: Drag and drop to coordinates
echo "🎯 Test 2: Drag and drop to specific coordinates..."
echo "Command: ./cremote drag-and-drop-coordinates --source=\".draggable\" --x=300 --y=200 --timeout=10"
echo ""
./cremote drag-and-drop-coordinates --source="#drag1" --x=300 --y=200 --timeout=10
if [ $? -eq 0 ]; then
echo "✅ Drag and drop to coordinates completed successfully"
else
echo "⚠️ Drag and drop to coordinates failed (this is expected if no suitable page is loaded)"
fi
echo ""
# Test 3: Drag and drop by offset
echo "🎯 Test 3: Drag and drop by relative offset..."
echo "Command: ./cremote drag-and-drop-offset --source=\".draggable\" --offset-x=100 --offset-y=50 --timeout=10"
echo ""
./cremote drag-and-drop-offset --source="#drag1" --offset-x=100 --offset-y=50 --timeout=10
if [ $? -eq 0 ]; then
echo "✅ Drag and drop by offset completed successfully"
else
echo "⚠️ Drag and drop by offset failed (this is expected if no suitable page is loaded)"
fi
echo ""
# Test 4: Help documentation
echo "🎯 Test 4: Testing help documentation..."
echo ""
echo "📖 drag-and-drop help:"
./cremote drag-and-drop -h
echo ""
echo "📖 drag-and-drop-coordinates help:"
./cremote drag-and-drop-coordinates -h
echo ""
echo "📖 drag-and-drop-offset help:"
./cremote drag-and-drop-offset -h
echo ""
echo "🎉 Drag and drop functionality tests completed!"
echo ""
echo "📋 Summary of new features:"
echo " • drag-and-drop: Drag from source element to target element"
echo " • drag-and-drop-coordinates: Drag from source element to specific x,y coordinates"
echo " • drag-and-drop-offset: Drag from source element by relative pixel offset"
echo ""
echo "💡 Use cases:"
echo " • File Upload: Drag files to upload areas"
echo " • Sortable Lists: Reorder items in sortable lists"
echo " • Kanban Boards: Move cards between columns"
echo " • Image Galleries: Rearrange images or media"
echo " • Form Builders: Drag form elements to build layouts"
echo " • Dashboard Widgets: Rearrange dashboard components"
echo " • Game Testing: Test drag-based game mechanics"
echo " • UI Component Testing: Test custom drag and drop components"
echo ""
echo "🔧 Technical features:"
echo " • Uses Chrome DevTools Protocol for precise mouse event simulation"
echo " • Performs realistic drag operations with intermediate mouse movements"
echo " • Calculates element center points automatically for accurate targeting"
echo " • Supports timeout handling for slow or complex drag operations"
echo " • Works with all modern drag and drop APIs"
echo ""
echo "🌐 Test pages you can use:"
echo " • https://www.w3schools.com/html/html5_draganddrop.asp"
echo " • https://jqueryui.com/droppable/"
echo " • https://sortablejs.github.io/Sortable/"
echo " • https://dragula.js.org/"