exports.toEqualPositions = function(expected) {
  /**
    We don't care about the other fields, only the positions and that the
    indexes correspond (e.g. the h changes for items with auto height)
  */
  for (var i = 0; i < expected.length; i++) {
    if (expected[i].x != this.actual[i].x ||
        expected[i].y != this.actual[i].y) {
      console.log('Actual positions', expected[i], this.actual[i]);
      return false;
    }
  }
  return true;
};

@@ -197,16 +197,195 @@
 t)%0A  */%0A
+ var _expected,%0A     _actual;%0A this.message = function () %7B%0A    return JSON.stringify(_actual) +%0A           %22 should be at position %22 +%0A           JSON.stringify(_expected);%0A  %7D;%0A
   for (v
@@ -418,24 +418,24 @@
 gth; i++) %7B%0A
-
     if (expe
@@ -522,52 +522,48 @@
     
-console.log('Actual positions', expected%5Bi%5D,
+_expected = expected%5Bi%5D;%0A      _actual =
  thi
@@ -573,17 +573,16 @@
 ctual%5Bi%5D
-)
 ;%0A      

Include offending items in equalPosition matcher failing message