<testsuites name="Mocha Tests" time="391.184" tests="343" failures="0" skipped="2">
  <testsuite name="Root Suite" timestamp="2025-11-11T09:24:07" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="realtime/objects" timestamp="2025-11-11T09:24:07" tests="1" file="/home/runner/work/ably-js/ably-js/test/realtime/objects.test.js" time="0.000" failures="0">
    <testcase name="realtime/objects can attach to channel with object modes" time="0.409" classname="can attach to channel with object modes">
    </testcase>
  </testsuite>
  <testsuite name="Realtime without Objects plugin" timestamp="2025-11-11T09:24:13" tests="3" file="/home/runner/work/ably-js/ably-js/test/realtime/objects.test.js" time="1.491" failures="0">
    <testcase name="realtime/objects Realtime without Objects plugin throws an error when attempting to access the channel&apos;s `object` property" time="0.001" classname="throws an error when attempting to access the channel&apos;s `object` property">
    </testcase>
    <testcase name="realtime/objects Realtime without Objects plugin doesn&apos;t break when it receives an OBJECT ProtocolMessage" time="0.815" classname="doesn&apos;t break when it receives an OBJECT ProtocolMessage">
    </testcase>
    <testcase name="realtime/objects Realtime without Objects plugin doesn&apos;t break when it receives an OBJECT_SYNC ProtocolMessage" time="0.673" classname="doesn&apos;t break when it receives an OBJECT_SYNC ProtocolMessage">
    </testcase>
  </testsuite>
  <testsuite name="Realtime with Objects plugin" timestamp="2025-11-11T09:24:14" tests="311" file="/home/runner/work/ably-js/ably-js/test/realtime/objects.test.js" time="0.000" failures="0">
    <testcase name="realtime/objects Realtime with Objects plugin returns RealtimeObject class instance when accessing channel&apos;s `object` property" time="0.001" classname="returns RealtimeObject class instance when accessing channel&apos;s `object` property">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin RealtimeObject.get() returns LiveObject with id &quot;root&quot;" time="0.283" classname="RealtimeObject.get() returns LiveObject with id &quot;root&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin RealtimeObject.get() returns empty root when no objects exist on a channel" time="0.288" classname="RealtimeObject.get() returns empty root when no objects exist on a channel">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin RealtimeObject.get() waits for initial OBJECT_SYNC to be completed before resolving" time="0.291" classname="RealtimeObject.get() waits for initial OBJECT_SYNC to be completed before resolving">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin RealtimeObject.get() resolves immediately when OBJECT_SYNC sequence is completed" time="0.282" classname="RealtimeObject.get() resolves immediately when OBJECT_SYNC sequence is completed">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin RealtimeObject.get() waits for OBJECT_SYNC with empty cursor before resolving" time="0.287" classname="RealtimeObject.get() waits for OBJECT_SYNC with empty cursor before resolving">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree on channel attachment with web_socket binary protocol" time="1.059" classname="OBJECT_SYNC sequence builds object tree on channel attachment with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree on channel attachment with web_socket text protocol" time="1.023" classname="OBJECT_SYNC sequence builds object tree on channel attachment with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree on channel attachment with comet binary protocol" time="0.456" classname="OBJECT_SYNC sequence builds object tree on channel attachment with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree on channel attachment with comet text protocol" time="0.550" classname="OBJECT_SYNC sequence builds object tree on channel attachment with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree on channel attachment with binary protocol" time="0.953" classname="OBJECT_SYNC sequence builds object tree on channel attachment with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree on channel attachment with text protocol" time="0.419" classname="OBJECT_SYNC sequence builds object tree on channel attachment with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree with all operations applied with web_socket binary protocol" time="1.916" classname="OBJECT_SYNC sequence builds object tree with all operations applied with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree with all operations applied with web_socket text protocol" time="2.321" classname="OBJECT_SYNC sequence builds object tree with all operations applied with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree with all operations applied with comet binary protocol" time="1.697" classname="OBJECT_SYNC sequence builds object tree with all operations applied with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree with all operations applied with comet text protocol" time="2.154" classname="OBJECT_SYNC sequence builds object tree with all operations applied with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree with all operations applied with binary protocol" time="1.786" classname="OBJECT_SYNC sequence builds object tree with all operations applied with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence builds object tree with all operations applied with text protocol" time="1.753" classname="OBJECT_SYNC sequence builds object tree with all operations applied with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence does not change references to existing objects" time="1.208" classname="OBJECT_SYNC sequence does not change references to existing objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter is initialized with initial value from OBJECT_SYNC sequence with web_socket binary protocol" time="0.980" classname="LiveCounter is initialized with initial value from OBJECT_SYNC sequence with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter is initialized with initial value from OBJECT_SYNC sequence with web_socket text protocol" time="0.414" classname="LiveCounter is initialized with initial value from OBJECT_SYNC sequence with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter is initialized with initial value from OBJECT_SYNC sequence with comet binary protocol" time="0.896" classname="LiveCounter is initialized with initial value from OBJECT_SYNC sequence with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter is initialized with initial value from OBJECT_SYNC sequence with comet text protocol" time="0.944" classname="LiveCounter is initialized with initial value from OBJECT_SYNC sequence with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter is initialized with initial value from OBJECT_SYNC sequence with binary protocol" time="0.975" classname="LiveCounter is initialized with initial value from OBJECT_SYNC sequence with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter is initialized with initial value from OBJECT_SYNC sequence with text protocol" time="0.430" classname="LiveCounter is initialized with initial value from OBJECT_SYNC sequence with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap is initialized with initial value from OBJECT_SYNC sequence with web_socket binary protocol" time="0.935" classname="LiveMap is initialized with initial value from OBJECT_SYNC sequence with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap is initialized with initial value from OBJECT_SYNC sequence with web_socket text protocol" time="0.998" classname="LiveMap is initialized with initial value from OBJECT_SYNC sequence with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap is initialized with initial value from OBJECT_SYNC sequence with comet binary protocol" time="0.381" classname="LiveMap is initialized with initial value from OBJECT_SYNC sequence with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap is initialized with initial value from OBJECT_SYNC sequence with comet text protocol" time="0.954" classname="LiveMap is initialized with initial value from OBJECT_SYNC sequence with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap is initialized with initial value from OBJECT_SYNC sequence with binary protocol" time="0.414" classname="LiveMap is initialized with initial value from OBJECT_SYNC sequence with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap is initialized with initial value from OBJECT_SYNC sequence with text protocol" time="0.575" classname="LiveMap is initialized with initial value from OBJECT_SYNC sequence with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object creates tombstoned object" time="0.502" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object creates tombstoned object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with web_socket binary protocol" time="0.631" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with web_socket text protocol" time="0.476" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with comet binary protocol" time="0.587" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with comet text protocol" time="0.966" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with binary protocol" time="1.058" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with text protocol" time="0.625" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object deletes existing object with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with web_socket binary protocol" time="0.539" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with web_socket text protocol" time="1.034" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with comet binary protocol" time="0.905" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with comet text protocol" time="0.961" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with binary protocol" time="1.054" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with text protocol" time="0.652" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object triggers subscription callback for existing object with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object sets &quot;tombstoneAt&quot; from &quot;serialTimestamp&quot;" time="0.500" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object sets &quot;tombstoneAt&quot; from &quot;serialTimestamp&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object sets &quot;tombstoneAt&quot; using local clock if missing &quot;serialTimestamp&quot;" time="0.376" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for an object sets &quot;tombstoneAt&quot; using local clock if missing &quot;serialTimestamp&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for a map entry sets &quot;tombstoneAt&quot; from &quot;serialTimestamp&quot;" time="0.362" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for a map entry sets &quot;tombstoneAt&quot; from &quot;serialTimestamp&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_SYNC sequence with &quot;tombstone=true&quot; for a map entry sets &quot;tombstoneAt&quot; using local clock if missing &quot;serialTimestamp&quot;" time="0.896" classname="OBJECT_SYNC sequence with &quot;tombstone=true&quot; for a map entry sets &quot;tombstoneAt&quot; using local clock if missing &quot;serialTimestamp&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with primitives object operation messages with web_socket binary protocol" time="1.038" classname="can apply MAP_CREATE with primitives object operation messages with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with primitives object operation messages with web_socket text protocol" time="0.614" classname="can apply MAP_CREATE with primitives object operation messages with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with primitives object operation messages with comet binary protocol" time="0.451" classname="can apply MAP_CREATE with primitives object operation messages with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with primitives object operation messages with comet text protocol" time="0.955" classname="can apply MAP_CREATE with primitives object operation messages with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with primitives object operation messages with binary protocol" time="1.075" classname="can apply MAP_CREATE with primitives object operation messages with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with primitives object operation messages with text protocol" time="0.476" classname="can apply MAP_CREATE with primitives object operation messages with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with object ids object operation messages with web_socket binary protocol" time="1.223" classname="can apply MAP_CREATE with object ids object operation messages with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with object ids object operation messages with web_socket text protocol" time="1.498" classname="can apply MAP_CREATE with object ids object operation messages with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with object ids object operation messages with comet binary protocol" time="1.032" classname="can apply MAP_CREATE with object ids object operation messages with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with object ids object operation messages with comet text protocol" time="1.168" classname="can apply MAP_CREATE with object ids object operation messages with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with object ids object operation messages with binary protocol" time="1.121" classname="can apply MAP_CREATE with object ids object operation messages with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_CREATE with object ids object operation messages with text protocol" time="1.236" classname="can apply MAP_CREATE with object ids object operation messages with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin MAP_CREATE object operation messages are applied based on the site timeserials vector of the object" time="0.373" classname="MAP_CREATE object operation messages are applied based on the site timeserials vector of the object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with primitives object operation messages with web_socket binary protocol" time="1.061" classname="can apply MAP_SET with primitives object operation messages with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with primitives object operation messages with web_socket text protocol" time="0.653" classname="can apply MAP_SET with primitives object operation messages with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with primitives object operation messages with comet binary protocol" time="0.394" classname="can apply MAP_SET with primitives object operation messages with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with primitives object operation messages with comet text protocol" time="1.007" classname="can apply MAP_SET with primitives object operation messages with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with primitives object operation messages with binary protocol" time="1.059" classname="can apply MAP_SET with primitives object operation messages with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with primitives object operation messages with text protocol" time="0.449" classname="can apply MAP_SET with primitives object operation messages with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with object ids object operation messages with web_socket binary protocol" time="1.258" classname="can apply MAP_SET with object ids object operation messages with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with object ids object operation messages with web_socket text protocol" time="0.793" classname="can apply MAP_SET with object ids object operation messages with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with object ids object operation messages with comet binary protocol" time="1.023" classname="can apply MAP_SET with object ids object operation messages with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with object ids object operation messages with comet text protocol" time="0.647" classname="can apply MAP_SET with object ids object operation messages with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with object ids object operation messages with binary protocol" time="0.595" classname="can apply MAP_SET with object ids object operation messages with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_SET with object ids object operation messages with text protocol" time="1.155" classname="can apply MAP_SET with object ids object operation messages with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin MAP_SET object operation messages are applied based on the site timeserials vector of the object" time="0.890" classname="MAP_SET object operation messages are applied based on the site timeserials vector of the object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_REMOVE object operation messages with web_socket binary protocol" time="1.058" classname="can apply MAP_REMOVE object operation messages with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_REMOVE object operation messages with web_socket text protocol" time="1.056" classname="can apply MAP_REMOVE object operation messages with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_REMOVE object operation messages with comet binary protocol" time="0.964" classname="can apply MAP_REMOVE object operation messages with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_REMOVE object operation messages with comet text protocol" time="0.637" classname="can apply MAP_REMOVE object operation messages with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_REMOVE object operation messages with binary protocol" time="0.529" classname="can apply MAP_REMOVE object operation messages with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply MAP_REMOVE object operation messages with text protocol" time="0.535" classname="can apply MAP_REMOVE object operation messages with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin MAP_REMOVE object operation messages are applied based on the site timeserials vector of the object" time="0.366" classname="MAP_REMOVE object operation messages are applied based on the site timeserials vector of the object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin MAP_REMOVE for a map entry sets &quot;tombstoneAt&quot; from &quot;serialTimestamp&quot;" time="0.915" classname="MAP_REMOVE for a map entry sets &quot;tombstoneAt&quot; from &quot;serialTimestamp&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin MAP_REMOVE for a map entry sets &quot;tombstoneAt&quot; using local clock if missing &quot;serialTimestamp&quot;" time="0.386" classname="MAP_REMOVE for a map entry sets &quot;tombstoneAt&quot; using local clock if missing &quot;serialTimestamp&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_CREATE object operation messages with web_socket binary protocol" time="1.121" classname="can apply COUNTER_CREATE object operation messages with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_CREATE object operation messages with web_socket text protocol" time="1.120" classname="can apply COUNTER_CREATE object operation messages with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_CREATE object operation messages with comet binary protocol" time="0.978" classname="can apply COUNTER_CREATE object operation messages with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_CREATE object operation messages with comet text protocol" time="0.486" classname="can apply COUNTER_CREATE object operation messages with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_CREATE object operation messages with binary protocol" time="0.666" classname="can apply COUNTER_CREATE object operation messages with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_CREATE object operation messages with text protocol" time="1.072" classname="can apply COUNTER_CREATE object operation messages with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin COUNTER_CREATE object operation messages are applied based on the site timeserials vector of the object" time="0.905" classname="COUNTER_CREATE object operation messages are applied based on the site timeserials vector of the object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_INC object operation messages with web_socket binary protocol" time="1.343" classname="can apply COUNTER_INC object operation messages with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_INC object operation messages with web_socket text protocol" time="2.135" classname="can apply COUNTER_INC object operation messages with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_INC object operation messages with comet binary protocol" time="1.681" classname="can apply COUNTER_INC object operation messages with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_INC object operation messages with comet text protocol" time="1.901" classname="can apply COUNTER_INC object operation messages with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_INC object operation messages with binary protocol" time="1.256" classname="can apply COUNTER_INC object operation messages with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply COUNTER_INC object operation messages with text protocol" time="1.439" classname="can apply COUNTER_INC object operation messages with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin COUNTER_INC object operation messages are applied based on the site timeserials vector of the object" time="0.504" classname="COUNTER_INC object operation messages are applied based on the site timeserials vector of the object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can apply OBJECT_DELETE object operation messages" time="1.150" classname="can apply OBJECT_DELETE object operation messages">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_DELETE for unknown object id creates zero-value tombstoned object" time="0.384" classname="OBJECT_DELETE for unknown object id creates zero-value tombstoned object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_DELETE object operation messages are applied based on the site timeserials vector of the object" time="0.920" classname="OBJECT_DELETE object operation messages are applied based on the site timeserials vector of the object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_DELETE triggers subscription callback with deleted data" time="1.169" classname="OBJECT_DELETE triggers subscription callback with deleted data">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_DELETE for an object sets &quot;tombstoneAt&quot; from &quot;serialTimestamp&quot;" time="0.611" classname="OBJECT_DELETE for an object sets &quot;tombstoneAt&quot; from &quot;serialTimestamp&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin OBJECT_DELETE for an object sets &quot;tombstoneAt&quot; using local clock if missing &quot;serialTimestamp&quot;" time="0.475" classname="OBJECT_DELETE for an object sets &quot;tombstoneAt&quot; using local clock if missing &quot;serialTimestamp&quot;">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin MAP_SET with reference to a tombstoned object results in undefined value on key" time="0.616" classname="MAP_SET with reference to a tombstoned object results in undefined value on key">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin object operation message on a tombstoned object does not revive it" time="0.832" classname="object operation message on a tombstoned object does not revive it">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin object operation messages are buffered during OBJECT_SYNC sequence" time="0.936" classname="object operation messages are buffered during OBJECT_SYNC sequence">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin buffered object operation messages are applied when OBJECT_SYNC sequence ends" time="1.108" classname="buffered object operation messages are applied when OBJECT_SYNC sequence ends">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin buffered object operation messages are discarded when new OBJECT_SYNC sequence starts" time="0.368" classname="buffered object operation messages are discarded when new OBJECT_SYNC sequence starts">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin buffered object operation messages are applied based on the site timeserials vector of the object" time="0.949" classname="buffered object operation messages are applied based on the site timeserials vector of the object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin subsequent object operation messages are applied immediately after OBJECT_SYNC ended and buffers are applied" time="0.553" classname="subsequent object operation messages are applied immediately after OBJECT_SYNC ended and buffers are applied">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.increment sends COUNTER_INC operation with web_socket binary protocol" time="4.568" classname="LiveCounter.increment sends COUNTER_INC operation with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.increment sends COUNTER_INC operation with web_socket text protocol" time="4.543" classname="LiveCounter.increment sends COUNTER_INC operation with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.increment sends COUNTER_INC operation with comet binary protocol" time="6.411" classname="LiveCounter.increment sends COUNTER_INC operation with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.increment sends COUNTER_INC operation with comet text protocol" time="4.449" classname="LiveCounter.increment sends COUNTER_INC operation with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.increment sends COUNTER_INC operation with binary protocol" time="5.233" classname="LiveCounter.increment sends COUNTER_INC operation with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.increment sends COUNTER_INC operation with text protocol" time="4.532" classname="LiveCounter.increment sends COUNTER_INC operation with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.increment throws on invalid input" time="1.037" classname="LiveCounter.increment throws on invalid input">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.decrement sends COUNTER_INC operation with web_socket binary protocol" time="5.095" classname="LiveCounter.decrement sends COUNTER_INC operation with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.decrement sends COUNTER_INC operation with web_socket text protocol" time="5.218" classname="LiveCounter.decrement sends COUNTER_INC operation with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.decrement sends COUNTER_INC operation with comet binary protocol" time="4.983" classname="LiveCounter.decrement sends COUNTER_INC operation with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.decrement sends COUNTER_INC operation with comet text protocol" time="5.070" classname="LiveCounter.decrement sends COUNTER_INC operation with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.decrement sends COUNTER_INC operation with binary protocol" time="5.233" classname="LiveCounter.decrement sends COUNTER_INC operation with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.decrement sends COUNTER_INC operation with text protocol" time="5.151" classname="LiveCounter.decrement sends COUNTER_INC operation with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.decrement throws on invalid input" time="0.478" classname="LiveCounter.decrement throws on invalid input">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with primitive values with web_socket binary protocol" time="1.451" classname="LiveMap.set sends MAP_SET operation with primitive values with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with primitive values with web_socket text protocol" time="1.490" classname="LiveMap.set sends MAP_SET operation with primitive values with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with primitive values with comet binary protocol" time="0.843" classname="LiveMap.set sends MAP_SET operation with primitive values with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with primitive values with comet text protocol" time="1.357" classname="LiveMap.set sends MAP_SET operation with primitive values with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with primitive values with binary protocol" time="1.445" classname="LiveMap.set sends MAP_SET operation with primitive values with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with primitive values with text protocol" time="1.057" classname="LiveMap.set sends MAP_SET operation with primitive values with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with reference to another LiveObject with web_socket binary protocol" time="0.979" classname="LiveMap.set sends MAP_SET operation with reference to another LiveObject with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with reference to another LiveObject with web_socket text protocol" time="1.114" classname="LiveMap.set sends MAP_SET operation with reference to another LiveObject with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with reference to another LiveObject with comet binary protocol" time="1.093" classname="LiveMap.set sends MAP_SET operation with reference to another LiveObject with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with reference to another LiveObject with comet text protocol" time="0.960" classname="LiveMap.set sends MAP_SET operation with reference to another LiveObject with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with reference to another LiveObject with binary protocol" time="1.107" classname="LiveMap.set sends MAP_SET operation with reference to another LiveObject with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set sends MAP_SET operation with reference to another LiveObject with text protocol" time="0.996" classname="LiveMap.set sends MAP_SET operation with reference to another LiveObject with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.set throws on invalid input" time="0.664" classname="LiveMap.set throws on invalid input">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.remove sends MAP_REMOVE operation with web_socket binary protocol" time="1.619" classname="LiveMap.remove sends MAP_REMOVE operation with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.remove sends MAP_REMOVE operation with web_socket text protocol" time="1.549" classname="LiveMap.remove sends MAP_REMOVE operation with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.remove sends MAP_REMOVE operation with comet binary protocol" time="1.513" classname="LiveMap.remove sends MAP_REMOVE operation with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.remove sends MAP_REMOVE operation with comet text protocol" time="1.306" classname="LiveMap.remove sends MAP_REMOVE operation with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.remove sends MAP_REMOVE operation with binary protocol" time="1.549" classname="LiveMap.remove sends MAP_REMOVE operation with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.remove sends MAP_REMOVE operation with text protocol" time="1.607" classname="LiveMap.remove sends MAP_REMOVE operation with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.remove throws on invalid input" time="0.661" classname="LiveMap.remove throws on invalid input">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.create() returns value type object" time="0.501" classname="LiveCounter.create() returns value type object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveCounter.create() can be assigned to the object tree with web_socket binary protocol" time="0.987" classname="value type created with LiveCounter.create() can be assigned to the object tree with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveCounter.create() can be assigned to the object tree with web_socket text protocol" time="1.042" classname="value type created with LiveCounter.create() can be assigned to the object tree with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveCounter.create() can be assigned to the object tree with comet binary protocol" time="1.005" classname="value type created with LiveCounter.create() can be assigned to the object tree with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveCounter.create() can be assigned to the object tree with comet text protocol" time="0.599" classname="value type created with LiveCounter.create() can be assigned to the object tree with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveCounter.create() can be assigned to the object tree with binary protocol" time="0.464" classname="value type created with LiveCounter.create() can be assigned to the object tree with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveCounter.create() can be assigned to the object tree with text protocol" time="0.598" classname="value type created with LiveCounter.create() can be assigned to the object tree with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.create() sends COUNTER_CREATE operation with web_socket binary protocol" time="0.977" classname="LiveCounter.create() sends COUNTER_CREATE operation with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.create() sends COUNTER_CREATE operation with web_socket text protocol" time="1.540" classname="LiveCounter.create() sends COUNTER_CREATE operation with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.create() sends COUNTER_CREATE operation with comet binary protocol" time="2.155" classname="LiveCounter.create() sends COUNTER_CREATE operation with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.create() sends COUNTER_CREATE operation with comet text protocol" time="0.882" classname="LiveCounter.create() sends COUNTER_CREATE operation with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.create() sends COUNTER_CREATE operation with binary protocol" time="1.110" classname="LiveCounter.create() sends COUNTER_CREATE operation with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.create() sends COUNTER_CREATE operation with text protocol" time="1.494" classname="LiveCounter.create() sends COUNTER_CREATE operation with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveCounter.create() with an invalid input throws when assigned to the object tree" time="0.368" classname="value type created with LiveCounter.create() with an invalid input throws when assigned to the object tree">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() returns value type object" time="1.000" classname="LiveMap.create() returns value type object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveMap.create() can be assigned to the object tree with web_socket binary protocol" time="1.144" classname="value type created with LiveMap.create() can be assigned to the object tree with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveMap.create() can be assigned to the object tree with web_socket text protocol" time="1.252" classname="value type created with LiveMap.create() can be assigned to the object tree with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveMap.create() can be assigned to the object tree with comet binary protocol" time="0.982" classname="value type created with LiveMap.create() can be assigned to the object tree with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveMap.create() can be assigned to the object tree with comet text protocol" time="0.564" classname="value type created with LiveMap.create() can be assigned to the object tree with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveMap.create() can be assigned to the object tree with binary protocol" time="0.726" classname="value type created with LiveMap.create() can be assigned to the object tree with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveMap.create() can be assigned to the object tree with text protocol" time="1.044" classname="value type created with LiveMap.create() can be assigned to the object tree with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with primitive values with web_socket binary protocol" time="1.130" classname="LiveMap.create() sends MAP_CREATE operation with primitive values with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with primitive values with web_socket text protocol" time="1.001" classname="LiveMap.create() sends MAP_CREATE operation with primitive values with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with primitive values with comet binary protocol" time="1.457" classname="LiveMap.create() sends MAP_CREATE operation with primitive values with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with primitive values with comet text protocol" time="0.891" classname="LiveMap.create() sends MAP_CREATE operation with primitive values with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with primitive values with binary protocol" time="1.149" classname="LiveMap.create() sends MAP_CREATE operation with primitive values with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with primitive values with text protocol" time="1.059" classname="LiveMap.create() sends MAP_CREATE operation with primitive values with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with web_socket binary protocol" time="0.606" classname="LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with web_socket text protocol" time="0.470" classname="LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with comet binary protocol" time="0.955" classname="LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with comet text protocol" time="0.975" classname="LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with binary protocol" time="1.001" classname="LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with text protocol" time="0.485" classname="LiveMap.create() sends MAP_CREATE operation with reference to another LiveObject with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin value type created with LiveMap.create() with an invalid input throws when assigned to the object tree" time="0.393" classname="value type created with LiveMap.create() with an invalid input throws when assigned to the object tree">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext.get() returns child DefaultBatchContext instances" time="1.614" classname="DefaultBatchContext.get() returns child DefaultBatchContext instances">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext access API methods on objects work and are synchronous" time="0.992" classname="DefaultBatchContext access API methods on objects work and are synchronous">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext write API methods on objects do not mutate objects inside the batch function" time="2.026" classname="DefaultBatchContext write API methods on objects do not mutate objects inside the batch function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext scheduled mutation operations are applied when batch function finishes with web_socket binary protocol" time="2.112" classname="DefaultBatchContext scheduled mutation operations are applied when batch function finishes with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext scheduled mutation operations are applied when batch function finishes with web_socket text protocol" time="2.046" classname="DefaultBatchContext scheduled mutation operations are applied when batch function finishes with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext scheduled mutation operations are applied when batch function finishes with comet binary protocol" time="1.967" classname="DefaultBatchContext scheduled mutation operations are applied when batch function finishes with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext scheduled mutation operations are applied when batch function finishes with comet text protocol" time="2.033" classname="DefaultBatchContext scheduled mutation operations are applied when batch function finishes with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext scheduled mutation operations are applied when batch function finishes with binary protocol" time="2.008" classname="DefaultBatchContext scheduled mutation operations are applied when batch function finishes with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext scheduled mutation operations are applied when batch function finishes with text protocol" time="1.654" classname="DefaultBatchContext scheduled mutation operations are applied when batch function finishes with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.batch()/DefaultInstance.batch() can be called without scheduling any mutation operations" time="0.366" classname="PathObject.batch()/DefaultInstance.batch() can be called without scheduling any mutation operations">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext scheduled mutation operations can be canceled by throwing an error in the batch function" time="0.989" classname="DefaultBatchContext scheduled mutation operations can be canceled by throwing an error in the batch function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext can&apos;t be interacted with after batch function finishes" time="0.941" classname="DefaultBatchContext can&apos;t be interacted with after batch function finishes">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultBatchContext can&apos;t be interacted with after error was thrown from batch function" time="0.936" classname="DefaultBatchContext can&apos;t be interacted with after error was thrown from batch function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin RealtimeObject.get() returns PathObject instance" time="0.944" classname="RealtimeObject.get() returns PathObject instance">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.get() returns child PathObject instances" time="0.915" classname="PathObject.get() returns child PathObject instances">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.path() returns correct path strings" time="0.478" classname="PathObject.path() returns correct path strings">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.at() navigates using dot-separated paths" time="0.521" classname="PathObject.at() navigates using dot-separated paths">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject resolves complex path strings" time="0.704" classname="PathObject resolves complex path strings">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.value() returns primitive values correctly" time="0.955" classname="PathObject.value() returns primitive values correctly">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.value() returns LiveCounter values" time="1.042" classname="PathObject.value() returns LiveCounter values">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.instance() returns DefaultInstance for LiveMap and LiveCounter" time="1.508" classname="PathObject.instance() returns DefaultInstance for LiveMap and LiveCounter">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject collection methods work for LiveMap objects" time="1.981" classname="PathObject collection methods work for LiveMap objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.set() works for LiveMap objects with primitive values" time="1.023" classname="PathObject.set() works for LiveMap objects with primitive values">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.set() works for LiveMap objects with LiveObject references" time="0.466" classname="PathObject.set() works for LiveMap objects with LiveObject references">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.remove() works for LiveMap objects" time="1.437" classname="PathObject.remove() works for LiveMap objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.increment() and PathObject.decrement() work for LiveCounter objects" time="2.712" classname="PathObject.increment() and PathObject.decrement() work for LiveCounter objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.get() throws error for non-string keys" time="0.889" classname="PathObject.get() throws error for non-string keys">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.at() throws error for non-string paths" time="0.897" classname="PathObject.at() throws error for non-string paths">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject handling of operations on non-existent paths" time="0.518" classname="PathObject handling of operations on non-existent paths">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject handling of operations for paths with non-collection intermediate segments" time="0.527" classname="PathObject handling of operations for paths with non-collection intermediate segments">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject handling of operations on wrong underlying object type" time="2.005" classname="PathObject handling of operations on wrong underlying object type">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() receives events for direct changes to the subscribed path" time="0.984" classname="PathObject.subscribe() receives events for direct changes to the subscribed path">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() receives events for nested changes with unlimited depth by default" time="2.083" classname="PathObject.subscribe() receives events for nested changes with unlimited depth by default">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() with depth parameter receives expected events" time="2.501" classname="PathObject.subscribe() with depth parameter receives expected events">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() on nested path receives events for that path and its children" time="3.047" classname="PathObject.subscribe() on nested path receives events for that path and its children">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() works with complex nested paths and escaped dots" time="1.500" classname="PathObject.subscribe() works with complex nested paths and escaped dots">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() on LiveMap path receives set/remove events" time="2.046" classname="PathObject.subscribe() on LiveMap path receives set/remove events">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() on LiveCounter path receives increment/decrement events" time="1.474" classname="PathObject.subscribe() on LiveCounter path receives increment/decrement events">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() on Primitive path receives changes to the primitive value" time="2.559" classname="PathObject.subscribe() on Primitive path receives changes to the primitive value">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() returns &quot;unsubscribe&quot; function" time="0.365" classname="PathObject.subscribe() returns &quot;unsubscribe&quot; function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can unsubscribe from PathObject.subscribe() updates using returned &quot;unsubscribe&quot; function" time="1.450" classname="can unsubscribe from PathObject.subscribe() updates using returned &quot;unsubscribe&quot; function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() handles multiple subscriptions independently" time="1.456" classname="PathObject.subscribe() handles multiple subscriptions independently">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() event object provides correct PathObject instance" time="1.036" classname="PathObject.subscribe() event object provides correct PathObject instance">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() handles subscription listener errors gracefully" time="0.997" classname="PathObject.subscribe() handles subscription listener errors gracefully">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribe() throws error for invalid options" time="0.930" classname="PathObject.subscribe() throws error for invalid options">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribeIterator() yields events for changes to the subscribed path" time="1.061" classname="PathObject.subscribeIterator() yields events for changes to the subscribed path">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribeIterator() with depth option works correctly" time="2.556" classname="PathObject.subscribeIterator() with depth option works correctly">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribeIterator() can be broken out of and subscription is removed properly" time="1.947" classname="PathObject.subscribeIterator() can be broken out of and subscription is removed properly">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.subscribeIterator() handles multiple concurrent iterators independently" time="1.480" classname="PathObject.subscribeIterator() handles multiple concurrent iterators independently">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.compact() returns correct representation for primitive values" time="1.089" classname="PathObject.compact() returns correct representation for primitive values">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.compact() returns number for LiveCounter objects" time="0.616" classname="PathObject.compact() returns number for LiveCounter objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.compact() returns plain object for LiveMap objects" time="0.473" classname="PathObject.compact() returns plain object for LiveMap objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.compact() handles complex nested structures" time="1.123" classname="PathObject.compact() handles complex nested structures">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.batch() passes RootBatchContext to its batch function" time="0.994" classname="PathObject.batch() passes RootBatchContext to its batch function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.id() returns object ID of the underlying LiveObject" time="0.763" classname="DefaultInstance.id() returns object ID of the underlying LiveObject">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.get() returns child DefaultInstance instances" time="1.344" classname="DefaultInstance.get() returns child DefaultInstance instances">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.value() returns primitive values correctly" time="1.065" classname="DefaultInstance.value() returns primitive values correctly">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.value() returns LiveCounter values" time="0.483" classname="DefaultInstance.value() returns LiveCounter values">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance collection methods work for LiveMap objects" time="2.145" classname="DefaultInstance collection methods work for LiveMap objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.set() works for LiveMap objects with primitive values" time="1.459" classname="DefaultInstance.set() works for LiveMap objects with primitive values">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.set() works for LiveMap objects with LiveObject references" time="1.005" classname="DefaultInstance.set() works for LiveMap objects with LiveObject references">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.remove() works for LiveMap objects" time="0.918" classname="DefaultInstance.remove() works for LiveMap objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.increment() and DefaultInstance.decrement() work for LiveCounter objects" time="3.192" classname="DefaultInstance.increment() and DefaultInstance.decrement() work for LiveCounter objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.get() throws error for non-string keys" time="0.438" classname="DefaultInstance.get() throws error for non-string keys">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance handling of operations on wrong underlying object type" time="2.056" classname="DefaultInstance handling of operations on wrong underlying object type">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribe() receives events for LiveMap set/remove operations" time="1.475" classname="DefaultInstance.subscribe() receives events for LiveMap set/remove operations">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribe() receives events for LiveCounter increment/decrement" time="2.079" classname="DefaultInstance.subscribe() receives events for LiveCounter increment/decrement">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribe() returns &quot;unsubscribe&quot; function" time="0.499" classname="DefaultInstance.subscribe() returns &quot;unsubscribe&quot; function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can unsubscribe from DefaultInstance.subscribe() updates using returned &quot;unsubscribe&quot; function" time="0.954" classname="can unsubscribe from DefaultInstance.subscribe() updates using returned &quot;unsubscribe&quot; function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribe() handles multiple subscriptions independently" time="1.527" classname="DefaultInstance.subscribe() handles multiple subscriptions independently">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribe() event object provides correct DefaultInstance reference" time="0.420" classname="DefaultInstance.subscribe() event object provides correct DefaultInstance reference">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribe() handles subscription listener errors gracefully" time="0.656" classname="DefaultInstance.subscribe() handles subscription listener errors gracefully">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribeIterator() yields events for LiveMap set/remove operations" time="1.503" classname="DefaultInstance.subscribeIterator() yields events for LiveMap set/remove operations">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribeIterator() yields events for LiveCounter increment/decrement" time="1.478" classname="DefaultInstance.subscribeIterator() yields events for LiveCounter increment/decrement">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribeIterator() can be broken out of and subscription is removed properly" time="1.950" classname="DefaultInstance.subscribeIterator() can be broken out of and subscription is removed properly">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.subscribeIterator() handles multiple concurrent iterators independently" time="1.467" classname="DefaultInstance.subscribeIterator() handles multiple concurrent iterators independently">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.compact() returns correct representation for primitive values" time="0.937" classname="DefaultInstance.compact() returns correct representation for primitive values">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.compact() returns number for LiveCounter objects" time="0.998" classname="DefaultInstance.compact() returns number for LiveCounter objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.compact() returns plain object for LiveMap objects" time="0.612" classname="DefaultInstance.compact() returns plain object for LiveMap objects">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.compact() handles complex nested structures" time="0.607" classname="DefaultInstance.compact() handles complex nested structures">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.compact() and PathObject.compact() return equivalent results" time="1.021" classname="DefaultInstance.compact() and PathObject.compact() return equivalent results">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.batch() passes RootBatchContext to its batch function" time="0.505" classname="DefaultInstance.batch() passes RootBatchContext to its batch function">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming COUNTER_INC operation on a LiveCounter with web_socket binary protocol" time="0.726" classname="can subscribe to the incoming COUNTER_INC operation on a LiveCounter with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming COUNTER_INC operation on a LiveCounter with web_socket text protocol" time="0.725" classname="can subscribe to the incoming COUNTER_INC operation on a LiveCounter with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming COUNTER_INC operation on a LiveCounter with comet binary protocol" time="0.689" classname="can subscribe to the incoming COUNTER_INC operation on a LiveCounter with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming COUNTER_INC operation on a LiveCounter with comet text protocol" time="0.823" classname="can subscribe to the incoming COUNTER_INC operation on a LiveCounter with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming COUNTER_INC operation on a LiveCounter with binary protocol" time="1.177" classname="can subscribe to the incoming COUNTER_INC operation on a LiveCounter with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming COUNTER_INC operation on a LiveCounter with text protocol" time="0.739" classname="can subscribe to the incoming COUNTER_INC operation on a LiveCounter with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveCounter with web_socket binary protocol" time="1.149" classname="can subscribe to multiple incoming operations on a LiveCounter with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveCounter with web_socket text protocol" time="1.624" classname="can subscribe to multiple incoming operations on a LiveCounter with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveCounter with comet binary protocol" time="0.918" classname="can subscribe to multiple incoming operations on a LiveCounter with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveCounter with comet text protocol" time="1.306" classname="can subscribe to multiple incoming operations on a LiveCounter with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveCounter with binary protocol" time="0.977" classname="can subscribe to multiple incoming operations on a LiveCounter with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveCounter with text protocol" time="0.822" classname="can subscribe to multiple incoming operations on a LiveCounter with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_SET operation on a LiveMap with web_socket binary protocol" time="1.243" classname="can subscribe to the incoming MAP_SET operation on a LiveMap with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_SET operation on a LiveMap with web_socket text protocol" time="0.677" classname="can subscribe to the incoming MAP_SET operation on a LiveMap with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_SET operation on a LiveMap with comet binary protocol" time="1.145" classname="can subscribe to the incoming MAP_SET operation on a LiveMap with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_SET operation on a LiveMap with comet text protocol" time="1.066" classname="can subscribe to the incoming MAP_SET operation on a LiveMap with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_SET operation on a LiveMap with binary protocol" time="0.678" classname="can subscribe to the incoming MAP_SET operation on a LiveMap with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_SET operation on a LiveMap with text protocol" time="1.226" classname="can subscribe to the incoming MAP_SET operation on a LiveMap with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_REMOVE operation on a LiveMap with web_socket binary protocol" time="1.209" classname="can subscribe to the incoming MAP_REMOVE operation on a LiveMap with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_REMOVE operation on a LiveMap with web_socket text protocol" time="1.157" classname="can subscribe to the incoming MAP_REMOVE operation on a LiveMap with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_REMOVE operation on a LiveMap with comet binary protocol" time="1.068" classname="can subscribe to the incoming MAP_REMOVE operation on a LiveMap with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_REMOVE operation on a LiveMap with comet text protocol" time="0.686" classname="can subscribe to the incoming MAP_REMOVE operation on a LiveMap with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_REMOVE operation on a LiveMap with binary protocol" time="1.201" classname="can subscribe to the incoming MAP_REMOVE operation on a LiveMap with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to the incoming MAP_REMOVE operation on a LiveMap with text protocol" time="1.156" classname="can subscribe to the incoming MAP_REMOVE operation on a LiveMap with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveMap with web_socket binary protocol" time="1.607" classname="can subscribe to multiple incoming operations on a LiveMap with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveMap with web_socket text protocol" time="1.054" classname="can subscribe to multiple incoming operations on a LiveMap with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveMap with comet binary protocol" time="2.927" classname="can subscribe to multiple incoming operations on a LiveMap with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveMap with comet text protocol" time="0.830" classname="can subscribe to multiple incoming operations on a LiveMap with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveMap with binary protocol" time="1.390" classname="can subscribe to multiple incoming operations on a LiveMap with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can subscribe to multiple incoming operations on a LiveMap with text protocol" time="0.886" classname="can subscribe to multiple incoming operations on a LiveMap with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin subscription event message contains the metadata of the update" time="2.496" classname="subscription event message contains the metadata of the update">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can unsubscribe from LiveCounter updates via returned &quot;unsubscribe&quot; callback" time="1.313" classname="can unsubscribe from LiveCounter updates via returned &quot;unsubscribe&quot; callback">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin can unsubscribe from LiveMap updates via returned &quot;unsubscribe&quot; callback" time="0.885" classname="can unsubscribe from LiveMap updates via returned &quot;unsubscribe&quot; callback">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin gcGracePeriod is set from connectionDetails.objectsGCGracePeriod" time="0.232" classname="gcGracePeriod is set from connectionDetails.objectsGCGracePeriod">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin gcGracePeriod has a default value if connectionDetails.objectsGCGracePeriod is missing" time="0.232" classname="gcGracePeriod has a default value if connectionDetails.objectsGCGracePeriod is missing">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin tombstoned object is removed from the pool after the GC grace period" time="1.050" classname="tombstoned object is removed from the pool after the GC grace period">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin tombstoned map entry is removed from the LiveMap after the GC grace period with web_socket binary protocol" time="2.050" classname="tombstoned map entry is removed from the LiveMap after the GC grace period with web_socket binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin tombstoned map entry is removed from the LiveMap after the GC grace period with web_socket text protocol" time="1.550" classname="tombstoned map entry is removed from the LiveMap after the GC grace period with web_socket text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin tombstoned map entry is removed from the LiveMap after the GC grace period with comet binary protocol" time="1.502" classname="tombstoned map entry is removed from the LiveMap after the GC grace period with comet binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin tombstoned map entry is removed from the LiveMap after the GC grace period with comet text protocol" time="1.501" classname="tombstoned map entry is removed from the LiveMap after the GC grace period with comet text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin tombstoned map entry is removed from the LiveMap after the GC grace period with binary protocol" time="1.051" classname="tombstoned map entry is removed from the LiveMap after the GC grace period with binary protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin tombstoned map entry is removed from the LiveMap after the GC grace period with text protocol" time="1.549" classname="tombstoned map entry is removed from the LiveMap after the GC grace period with text protocol">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin public API throws missing object modes error when attached without correct modes" time="1.526" classname="public API throws missing object modes error when attached without correct modes">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin public API throws missing object modes error when not yet attached but client options are missing correct modes" time="1.104" classname="public API throws missing object modes error when not yet attached but client options are missing correct modes">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin public API throws invalid channel state error when channel DETACHED" time="1.115" classname="public API throws invalid channel state error when channel DETACHED">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin public API throws invalid channel state error when channel FAILED" time="1.115" classname="public API throws invalid channel state error when channel FAILED">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin public write API throws invalid channel state error when channel SUSPENDED" time="1.553" classname="public write API throws invalid channel state error when channel SUSPENDED">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin public write API throws invalid channel option when &quot;echoMessages&quot; is disabled" time="1.493" classname="public write API throws invalid channel option when &quot;echoMessages&quot; is disabled">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin object message publish respects connectionDetails.maxMessageSize" time="0.502" classname="object message publish respects connectionDetails.maxMessageSize">
    </testcase>
  </testsuite>
  <testsuite name="ObjectMessage message size" timestamp="2025-11-11T09:30:32" tests="28" file="/home/runner/work/ably-js/ably-js/test/realtime/objects.test.js" time="6.111" failures="0">
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size client id" time="0.000" classname="client id">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size extras" time="0.000" classname="extras">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size object id" time="0.000" classname="object id">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size nonce" time="0.000" classname="nonce">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size initial value" time="0.000" classname="initial value">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map create op no payload" time="0.000" classname="map create op no payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map create op with object id payload" time="0.001" classname="map create op with object id payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map create op with string payload" time="0.000" classname="map create op with string payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map create op with bytes payload" time="0.001" classname="map create op with bytes payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map create op with boolean payload" time="0.000" classname="map create op with boolean payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map create op with double payload" time="0.000" classname="map create op with double payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map create op with object payload" time="0.000" classname="map create op with object payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map create op with array payload" time="0.000" classname="map create op with array payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map remove op" time="0.000" classname="map remove op">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=objectId" time="0.000" classname="map set operation value=objectId">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=string" time="0.000" classname="map set operation value=string">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=bytes" time="0.001" classname="map set operation value=bytes">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=boolean true" time="0.000" classname="map set operation value=boolean true">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=boolean false" time="0.000" classname="map set operation value=boolean false">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=double" time="0.000" classname="map set operation value=double">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=double 0" time="0.000" classname="map set operation value=double 0">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=json-object" time="0.000" classname="map set operation value=json-object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map set operation value=json-array" time="0.000" classname="map set operation value=json-array">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size map object" time="0.000" classname="map object">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size counter create op no payload" time="0.000" classname="counter create op no payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size counter create op with payload" time="0.000" classname="counter create op with payload">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size counter inc op" time="0.000" classname="counter inc op">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin ObjectMessage message size counter object" time="0.000" classname="counter object">
    </testcase>
  </testsuite>
</testsuites>