<testsuites name="Mocha Tests" time="22.124" tests="74" failures="2">
  <testsuite name="Root Suite" timestamp="2024-05-20T18:10:20" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="browser/modular" timestamp="2024-05-20T18:10:21" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="attempting to initialize with no client options" timestamp="2024-05-20T18:10:26" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest" timestamp="2024-05-20T18:10:26" tests="1" time="0.017" failures="0">
    <testcase name="browser/modular attempting to initialize with no client options BaseRest throws an error" time="0.003" classname="throws an error">
    </testcase>
  </testsuite>
  <testsuite name="_BaseRealtime" timestamp="2024-05-20T18:10:26" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular attempting to initialize with no client options _BaseRealtime throws an error" time="0.000" classname="throws an error">
    </testcase>
  </testsuite>
  <testsuite name="attempting to initialize with just an API key" timestamp="2024-05-20T18:10:26" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest" timestamp="2024-05-20T18:10:26" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular attempting to initialize with just an API key BaseRest throws an error" time="0.000" classname="throws an error">
    </testcase>
  </testsuite>
  <testsuite name="_BaseRealtime" timestamp="2024-05-20T18:10:26" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular attempting to initialize with just an API key _BaseRealtime throws an error" time="0.001" classname="throws an error">
    </testcase>
  </testsuite>
  <testsuite name="attempting to initialize with just a token" timestamp="2024-05-20T18:10:26" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest" timestamp="2024-05-20T18:10:26" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular attempting to initialize with just a token BaseRest throws an error" time="0.001" classname="throws an error">
    </testcase>
  </testsuite>
  <testsuite name="_BaseRealtime" timestamp="2024-05-20T18:10:26" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular attempting to initialize with just a token _BaseRealtime throws an error" time="0.001" classname="throws an error">
    </testcase>
  </testsuite>
  <testsuite name="without any plugins" timestamp="2024-05-20T18:10:26" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest" timestamp="2024-05-20T18:10:26" tests="1" time="0.003" failures="0">
    <testcase name="browser/modular without any plugins BaseRest throws an error due to the absence of an HTTP plugin" time="0.002" classname="throws an error due to the absence of an HTTP plugin">
    </testcase>
  </testsuite>
  <testsuite name="_BaseRealtime" timestamp="2024-05-20T18:10:26" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular without any plugins _BaseRealtime throws an error due to the absence of an HTTP plugin" time="0.001" classname="throws an error due to the absence of an HTTP plugin">
    </testcase>
  </testsuite>
  <testsuite name="Rest" timestamp="2024-05-20T18:10:26" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest without explicit Rest" timestamp="2024-05-20T18:10:26" tests="11" time="2.394" failures="1">
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to use push admin functionality" time="0.193" classname="allows you to use push admin functionality">
      <failure message="expected DOMException{ line: 7740, …(3) } to be null" type="AssertionError"><![CDATA[@http://localhost:3000/test/browser/modular.test.js:160:38]]></failure>
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call `time()`" time="0.181" classname="allows you to call `time()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled" time="0.250" classname="allows you to call `auth.createTokenRequest()` with `queryTime` option enabled">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call `stats()`" time="0.174" classname="allows you to call `stats()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)`" time="0.253" classname="allows you to call `request(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)`" time="0.375" classname="allows you to call `batchPublish(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)`" time="0.175" classname="allows you to call `batchPresence(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)`" time="0.280" classname="allows you to call `auth.revokeTokens(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()`" time="0.190" classname="allows you to call channel’s `history()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()`" time="0.167" classname="allows you to call channel’s `presence.history()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()`" time="0.072" classname="allows you to call channel’s `status()`">
    </testcase>
  </testsuite>
  <testsuite name="BaseRealtime with Rest" timestamp="2024-05-20T18:10:28" tests="11" time="1.820" failures="1">
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality" time="0.098" classname="allows you to use push admin functionality">
      <failure message="expected DOMException{ line: 7740, …(3) } to be null" type="AssertionError"><![CDATA[@http://localhost:3000/test/browser/modular.test.js:188:38]]></failure>
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call `time()`" time="0.071" classname="allows you to call `time()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled" time="0.252" classname="allows you to call `auth.createTokenRequest()` with `queryTime` option enabled">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call `stats()`" time="0.257" classname="allows you to call `stats()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call `request(...)`" time="0.255" classname="allows you to call `request(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)`" time="0.188" classname="allows you to call `batchPublish(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)`" time="0.074" classname="allows you to call `batchPresence(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)`" time="0.181" classname="allows you to call `auth.revokeTokens(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()`" time="0.081" classname="allows you to call channel’s `history()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()`" time="0.080" classname="allows you to call channel’s `presence.history()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()`" time="0.251" classname="allows you to call channel’s `status()`">
    </testcase>
  </testsuite>
  <testsuite name="BaseRealtime without Rest" timestamp="2024-05-20T18:10:30" tests="13" time="0.566" failures="0">
    <testcase name="browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing" time="0.507" classname="still allows publishing and subscribing">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled" time="0.001" classname="allows `auth.createTokenRequest()` without `queryTime` option enabled">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality" time="0.000" classname="throws an error when attempting to use push admin functionality">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()`" time="0.001" classname="throws an error when attempting to call `time()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled" time="0.001" classname="throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()`" time="0.001" classname="throws an error when attempting to call `stats()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)`" time="0.001" classname="throws an error when attempting to call `request(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)`" time="0.001" classname="throws an error when attempting to call `batchPublish(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)`" time="0.000" classname="throws an error when attempting to call `batchPresence(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)`" time="0.000" classname="throws an error when attempting to call `auth.revokeTokens(...)`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()`" time="0.000" classname="throws an error when attempting to call channel’s `history()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()`" time="0.000" classname="throws an error when attempting to call channel’s `presence.history()`">
    </testcase>
    <testcase name="browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()`" time="0.001" classname="throws an error when attempting to call channel’s `status()`">
    </testcase>
  </testsuite>
  <testsuite name="Crypto standalone functions" timestamp="2024-05-20T18:10:30" tests="2" time="0.017" failures="0">
    <testcase name="browser/modular Crypto standalone functions generateRandomKey" time="0.001" classname="generateRandomKey">
    </testcase>
    <testcase name="browser/modular Crypto standalone functions getDefaultCryptoParams" time="0.001" classname="getDefaultCryptoParams">
    </testcase>
  </testsuite>
  <testsuite name="Message standalone functions" timestamp="2024-05-20T18:10:31" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="decodeMessage" timestamp="2024-05-20T18:10:31" tests="2" time="0.014" failures="0">
    <testcase name="browser/modular Message standalone functions decodeMessage decodes a message’s data" time="0.000" classname="decodes a message’s data">
    </testcase>
    <testcase name="browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher" time="0.002" classname="throws an error when given channel options with a cipher">
    </testcase>
  </testsuite>
  <testsuite name="decodeEncryptedMessage" timestamp="2024-05-20T18:10:31" tests="2" time="0.021" failures="0">
    <testcase name="browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data" time="0.000" classname="decodes a message’s data">
    </testcase>
    <testcase name="browser/modular Message standalone functions decodeEncryptedMessage decrypts a message" time="0.017" classname="decrypts a message">
    </testcase>
  </testsuite>
  <testsuite name="decodeMessages" timestamp="2024-05-20T18:10:31" tests="2" time="0.017" failures="0">
    <testcase name="browser/modular Message standalone functions decodeMessages decodes messages’ data" time="0.001" classname="decodes messages’ data">
    </testcase>
    <testcase name="browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher" time="0.009" classname="throws an error when given channel options with a cipher">
    </testcase>
  </testsuite>
  <testsuite name="decodeEncryptedMessages" timestamp="2024-05-20T18:10:31" tests="2" time="0.016" failures="0">
    <testcase name="browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data" time="0.001" classname="decodes messages’ data">
    </testcase>
    <testcase name="browser/modular Message standalone functions decodeEncryptedMessages decrypts messages" time="0.006" classname="decrypts messages">
    </testcase>
  </testsuite>
  <testsuite name="Crypto" timestamp="2024-05-20T18:10:31" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="without Crypto" timestamp="2024-05-20T18:10:31" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest" timestamp="2024-05-20T18:10:31" tests="1" time="0.008" failures="0">
    <testcase name="browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher" time="0.001" classname="throws an error when given channel options with a cipher">
    </testcase>
  </testsuite>
  <testsuite name="_BaseRealtime" timestamp="2024-05-20T18:10:31" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher" time="0.000" classname="throws an error when given channel options with a cipher">
    </testcase>
  </testsuite>
  <testsuite name="with Crypto" timestamp="2024-05-20T18:10:31" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest" timestamp="2024-05-20T18:10:31" tests="1" time="0.539" failures="0">
    <testcase name="browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages" time="0.536" classname="is able to publish encrypted messages">
    </testcase>
  </testsuite>
  <testsuite name="_BaseRealtime" timestamp="2024-05-20T18:10:31" tests="1" time="0.765" failures="0">
    <testcase name="browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages" time="0.762" classname="is able to publish encrypted messages">
    </testcase>
  </testsuite>
  <testsuite name="MsgPack" timestamp="2024-05-20T18:10:32" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="with useBinaryProtocol client option" timestamp="2024-05-20T18:10:32" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="without MsgPack" timestamp="2024-05-20T18:10:32" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest" timestamp="2024-05-20T18:10:32" tests="1" time="0.014" failures="0">
    <testcase name="browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON" time="0.002" classname="uses JSON">
    </testcase>
  </testsuite>
  <testsuite name="BaseRealtime" timestamp="2024-05-20T18:10:32" tests="1" time="0.013" failures="0">
    <testcase name="browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON" time="0.012" classname="uses JSON">
    </testcase>
  </testsuite>
  <testsuite name="with MsgPack" timestamp="2024-05-20T18:10:32" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRest" timestamp="2024-05-20T18:10:32" tests="1" time="0.005" failures="0">
    <testcase name="browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack" time="0.002" classname="uses MessagePack">
    </testcase>
  </testsuite>
  <testsuite name="BaseRealtime" timestamp="2024-05-20T18:10:32" tests="1" time="0.011" failures="0">
    <testcase name="browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack" time="0.009" classname="uses MessagePack">
    </testcase>
  </testsuite>
  <testsuite name="RealtimePresence" timestamp="2024-05-20T18:10:32" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRealtime without RealtimePresence" timestamp="2024-05-20T18:10:32" tests="2" time="1.238" failures="0">
    <testcase name="browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property" time="0.001" classname="throws an error when attempting to access the `presence` property">
    </testcase>
    <testcase name="browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage" time="1.229" classname="doesn’t break when it receives a PRESENCE ProtocolMessage">
    </testcase>
  </testsuite>
  <testsuite name="BaseRealtime with RealtimePresence" timestamp="2024-05-20T18:10:33" tests="1" time="0.547" failures="0">
    <testcase name="browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality" time="0.544" classname="offers realtime presence functionality">
    </testcase>
  </testsuite>
  <testsuite name="PresenceMessage standalone functions" timestamp="2024-05-20T18:10:34" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="decodePresenceMessage" timestamp="2024-05-20T18:10:34" tests="1" time="0.011" failures="0">
    <testcase name="browser/modular PresenceMessage standalone functions decodePresenceMessage decodes a presence message’s data" time="0.001" classname="decodes a presence message’s data">
    </testcase>
  </testsuite>
  <testsuite name="decodeMessages" timestamp="2024-05-20T18:10:34" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular PresenceMessage standalone functions decodeMessages decodes presence messages’ data" time="0.001" classname="decodes presence messages’ data">
    </testcase>
  </testsuite>
  <testsuite name="constructPresenceMessage" timestamp="2024-05-20T18:10:34" tests="1" time="0.003" failures="0">
    <testcase name="browser/modular PresenceMessage standalone functions constructPresenceMessage creates a PresenceMessage instance" time="0.000" classname="creates a PresenceMessage instance">
    </testcase>
  </testsuite>
  <testsuite name="Transports" timestamp="2024-05-20T18:10:34" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRealtime" timestamp="2024-05-20T18:10:34" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="without a transport plugin" timestamp="2024-05-20T18:10:34" tests="1" time="0.002" failures="0">
    <testcase name="browser/modular Transports BaseRealtime without a transport plugin throws an error due to absence of a transport plugin" time="0.001" classname="throws an error due to absence of a transport plugin">
    </testcase>
  </testsuite>
  <testsuite name="with the WebSocketTransport plugin" timestamp="2024-05-20T18:10:34" tests="1" time="0.303" failures="0">
    <testcase name="browser/modular Transports BaseRealtime with the WebSocketTransport plugin is able to use the web_socket transport" time="0.300" classname="is able to use the web_socket transport">
    </testcase>
  </testsuite>
  <testsuite name="with the XHRPolling plugin" timestamp="2024-05-20T18:10:34" tests="1" time="0.083" failures="0">
    <testcase name="browser/modular Transports BaseRealtime with the XHRPolling plugin is able to use the xhr_polling transport" time="0.081" classname="is able to use the xhr_polling transport">
    </testcase>
  </testsuite>
  <testsuite name="HTTP request implementations" timestamp="2024-05-20T18:10:34" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="with multiple HTTP request implementations" timestamp="2024-05-20T18:10:34" tests="1" time="0.170" failures="0">
    <testcase name="browser/modular HTTP request implementations with multiple HTTP request implementations prefers XHR" time="0.167" classname="prefers XHR">
    </testcase>
  </testsuite>
  <testsuite name="MessageInteractions" timestamp="2024-05-20T18:10:34" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="BaseRealtime" timestamp="2024-05-20T18:10:34" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="without MessageInteractions" timestamp="2024-05-20T18:10:34" tests="2" time="0.450" failures="0">
    <testcase name="browser/modular MessageInteractions BaseRealtime without MessageInteractions is able to subscribe to and unsubscribe from channel events, as long as a MessageFilter isn’t passed" time="0.437" classname="is able to subscribe to and unsubscribe from channel events, as long as a MessageFilter isn’t passed">
    </testcase>
    <testcase name="browser/modular MessageInteractions BaseRealtime without MessageInteractions throws an error when attempting to subscribe to channel events using a MessageFilter" time="0.007" classname="throws an error when attempting to subscribe to channel events using a MessageFilter">
    </testcase>
  </testsuite>
  <testsuite name="with MessageInteractions" timestamp="2024-05-20T18:10:35" tests="1" time="7.322" failures="0">
    <testcase name="browser/modular MessageInteractions BaseRealtime with MessageInteractions can take a MessageFilter argument when subscribing to and unsubscribing from channel events" time="1.046" classname="can take a MessageFilter argument when subscribing to and unsubscribing from channel events">
    </testcase>
  </testsuite>
</testsuites>