bump
This commit is contained in:
120
test_drag_and_drop.sh
Executable file
120
test_drag_and_drop.sh
Executable 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/"
|
||||
Reference in New Issue
Block a user