       @assertEqual change.componentId, componentId
       @assertIsUndefined change.subscriptionsReady
 
+      # TODO: This is in Vue Tracker. Why?
+      if '$' of stateChanges[0]
+        change = stateChanges.shift()
+        @assertEqual change.componentId, componentId
+        @assertIsUndefined change.$
+
     forthSteps forthComponentId
 
-    change = stateChanges.shift()
-    @assertEqual change.componentId, fifthComponentId
-    @assertEqual change.data, a: "10", b: "11"
-
-    change = stateChanges.shift()
-    @assertEqual change.componentId, fifthComponentId
-    @assertTrue change.subscriptionsReady
-
-    change = stateChanges.shift()
-    @assertEqual change.componentId, fifthComponentId
-    @assertTrue change.isCreated
+    # TODO: In Vue Tracker the order is different. Why?
+    for i in [0..2]
+      change = stateChanges.shift()
+      @assertEqual change.componentId, fifthComponentId
+      if 'data' of change
+        @assertEqual change.data, a: "10", b: "11"
+      else if 'subscriptionsReady' of change
+        @assertTrue change.subscriptionsReady
+      else if 'isCreated' of change
+        @assertTrue change.isCreated
+      else
+        @assertTrue false
 
     forthSteps firstComponentId
     forthSteps secondComponentId

      @assertEqual change.componentId, componentId
      @assertIsUndefined change.$

      change = stateChanges.shift()
      @assertEqual change.componentId, componentId
      @assertTrue change.isDestroyed

      # TODO: Not sure why this change happens?
      change = stateChanges.shift()

      @assertEqual change.componentId, componentId
      @assertFalse change.isRendered

      # TODO: In Vue Tracker "isDestroyed" is here. Why?
      if 'isDestroyed' of stateChanges[0]
        change = stateChanges.shift()
        @assertEqual change.componentId, componentId
        @assertTrue change.isDestroyed

      change = stateChanges.shift()
      @assertEqual change.componentId, componentId
      @assertIsUndefined change.firstNode
