This test verifies that dragging a color from one input to another changes the color of the second input. To test manually, drag from inputs on the left and drop into inputs on the right.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Drag and drop should work between two color inputs.

  
Disabled color inputs should not be draggable.

  
Disabled color inputs should not change color when a color is dropped.

  
Read-only color inputs should behave like default color inputs.

  
PASS element('src').value is "#ff0000"
PASS element('dest').value is "#ff0000"
PASS element('disabled-src').value is "#9a9a9a"
PASS element('dest-disabled-src').value is "#ff0000"
PASS element('src-disabled-dest').value is "#ff0000"
PASS element('disabled-dest').value is "#9a9a9a"
PASS element('readonly-src').value is "#ff0000"
PASS element('readonly-dest').value is "#ff0000"
PASS successfullyParsed is true

TEST COMPLETE

