<testsuites name="Mocha Tests" time="418.785" tests="343" failures="0" skipped="2">
  <testsuite name="Root Suite" timestamp="2025-11-11T09:24:27" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="realtime/objects" timestamp="2025-11-11T09:24:27" 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.396" classname="can attach to channel with object modes">
    </testcase>
  </testsuite>
  <testsuite name="Realtime without Objects plugin" timestamp="2025-11-11T09:24:33" tests="3" file="/home/runner/work/ably-js/ably-js/test/realtime/objects.test.js" time="1.534" 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.762" 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.769" 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:35" 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.374" 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.384" 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.370" 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.394" 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.387" 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="0.540" 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.110" 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.951" 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.882" 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.532" 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.550" 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="2.554" 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.506" 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="2.291" 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.149" 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="2.121" 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="2.581" 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.257" 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.518" 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="1.085" 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.886" 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.500" 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="1.528" 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="1.068" 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.586" 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.551" 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.532" 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.896" 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="1.125" 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.527" 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.599" 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="1.178" 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.738" 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.374" 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.974" 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="0.636" 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.595" 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="1.315" 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="0.744" 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.974" 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.950" 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="0.725" 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="1.126" 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.630" 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.994" 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.453" 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.589" 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.126" 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.750" 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="1.081" 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.572" 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.211" 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.738" 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.302" 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="0.744" 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="0.545" 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.079" 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.320" 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="0.889" 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.984" 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="0.826" 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.678" 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.377" 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.023" 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.311" 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="1.180" 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.306" 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.891" 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="0.659" 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.657" 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="1.501" 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="0.908" 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="1.040" 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.205" 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.186" 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.981" 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.638" 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.671" 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.657" 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.993" 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.475" 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.462" 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="0.743" 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="0.619" 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.711" 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="1.185" 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="1.142" 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="0.765" 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="1.036" 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="2.120" 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="1.968" 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.725" 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.855" 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.674" 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="2.039" 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="1.015" 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.457" 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.994" 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.456" 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="0.750" 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="1.123" 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.722" 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.751" 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="1.442" 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="1.063" 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="0.471" 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.999" 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="1.039" 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="1.103" 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.669" 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="5.271" 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="4.451" 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.609" 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.238" 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.955" 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="0.747" 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="4.937" 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.268" 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.630" 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.003" 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="4.670" 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="4.692" 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.621" 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.602" 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.933" 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="1.329" 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.387" 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.620" 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.026" 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="1.910" 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.707" 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.138" 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="1.396" 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.095" 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="1.103" 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="1.124" 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.735" 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.699" 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.110" 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="0.940" 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.788" 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.754" 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="1.192" classname="LiveMap.remove throws on invalid input">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin LiveCounter.create() returns value type object" time="1.051" 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="1.217" 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.147" 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="0.432" 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.974" 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.593" 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.718" 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="1.303" 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.103" 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="1.005" 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="1.411" 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.175" 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.723" 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.988" 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.020" 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.143" 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.123" 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.575" 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.565" 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="1.253" 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.171" 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.626" 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="0.738" 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.391" 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="1.002" 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.191" 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="0.601" 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.726" 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="1.118" 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.949" 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.564" 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.185" 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.629" 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.469" 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.659" 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="1.091" 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.249" 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.155" 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.175" 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="2.039" 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="1.978" 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.227" 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="2.291" 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.469" 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="1.281" 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="1.025" 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="1.044" 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.455" classname="RealtimeObject.get() returns PathObject instance">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.get() returns child PathObject instances" time="1.217" classname="PathObject.get() returns child PathObject instances">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.path() returns correct path strings" time="1.136" classname="PathObject.path() returns correct path strings">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.at() navigates using dot-separated paths" time="1.206" classname="PathObject.at() navigates using dot-separated paths">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject resolves complex path strings" time="1.163" classname="PathObject resolves complex path strings">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.value() returns primitive values correctly" time="1.548" classname="PathObject.value() returns primitive values correctly">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin PathObject.value() returns LiveCounter values" time="0.722" 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.235" 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.699" 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.568" 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="1.160" 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.159" 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.744" 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="1.090" 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.472" 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="1.019" 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="1.120" 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.165" 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.552" 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.187" 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.622" 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="2.658" 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.091" 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.110" 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.726" 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="3.093" 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.461" 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.034" 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.196" 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.041" 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="1.057" 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.602" 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.547" 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.224" 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="2.074" 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.156" 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.026" 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.745" 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.756" 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.233" 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.977" 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.729" 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.021" classname="DefaultInstance.get() returns child DefaultInstance instances">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.value() returns primitive values correctly" time="1.575" classname="DefaultInstance.value() returns primitive values correctly">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance.value() returns LiveCounter values" time="0.731" classname="DefaultInstance.value() returns LiveCounter values">
    </testcase>
    <testcase name="realtime/objects Realtime with Objects plugin DefaultInstance collection methods work for LiveMap objects" time="1.700" 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.575" 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.147" 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="1.150" 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.185" 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.605" 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.127" 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.585" 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="1.606" 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.467" 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="1.613" 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.035" 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="1.114" 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.627" 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.613" 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.632" 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="2.039" 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.164" 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="1.177" 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.756" 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.597" 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.599" 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="0.755" 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.465" 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="1.116" 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="1.567" 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.730" 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.725" 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="0.821" 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="1.495" 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.135" 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.376" 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.795" 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.356" 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="1.019" 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="1.666" 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="0.981" 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="1.727" 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="0.729" 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.228" 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.976" 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="0.805" 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.457" 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.356" 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="0.598" 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="1.142" 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.363" 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.397" 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.617" 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.097" 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="1.478" 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.872" 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.393" 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="1.655" 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.348" 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="0.956" 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="1.168" 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.320" 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.316" 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.563" 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.061" 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="2.063" 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.502" 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.561" 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.564" 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.649" 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.682" 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.652" 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.225" 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.610" 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.660" 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.454" classname="object message publish respects connectionDetails.maxMessageSize">
    </testcase>
  </testsuite>
  <testsuite name="ObjectMessage message size" timestamp="2025-11-11T09:31:20" tests="28" file="/home/runner/work/ably-js/ably-js/test/realtime/objects.test.js" time="6.318" 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.001" 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.000" 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.001" 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.001" 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.000" 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.001" 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.001" 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>