<testsuites name="Mocha Tests" time="707.532" tests="612" failures="24" skipped="26">
  <testsuite name="Root Suite" timestamp="2024-08-07T12:27:39" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="realtime/api" timestamp="2024-08-07T12:27:39" tests="5" file="/home/runner/work/ably-js/ably-js/test/realtime/api.test.js" time="0.009" failures="0">
    <testcase name="realtime/api Client constructors" time="0.000" classname="Client constructors">
    </testcase>
    <testcase name="realtime/api constructor without any arguments" time="0.001" classname="constructor without any arguments">
    </testcase>
    <testcase name="realtime/api Crypto" time="0.000" classname="Crypto">
    </testcase>
    <testcase name="realtime/api Message" time="0.000" classname="Message">
    </testcase>
    <testcase name="realtime/api PresenceMessage" time="0.000" classname="PresenceMessage">
    </testcase>
  </testsuite>
  <testsuite name="realtime/auth" timestamp="2024-08-07T12:27:39" tests="83" file="/home/runner/work/ably-js/ably-js/test/realtime/auth.test.js" time="5.129" failures="1">
    <testcase name="realtime/auth &quot;before all&quot; hook for &quot;authbase0&quot;" time="5.126" classname="&quot;before all&quot; hook for &quot;authbase0&quot;">
      <failure message="Could not set up Test App: &quot;Invalid HTTP request: &lt;!DOCTYPE HTML PUBLIC \&quot;-//W3C//DTD HTML 4.01 Transitional//EN\&quot; \&quot;http://www.w3.org/TR/html4/loose.dtd\&quot;&gt;\n&lt;HTML&gt;&lt;HEAD&gt;&lt;META HTTP-EQUIV=\&quot;Content-Type\&quot; CONTENT=\&quot;text/html; charset=iso-8859-1\&quot;&gt;\n&lt;TITLE&gt;ERROR: The request could not be satisfied&lt;/TITLE&gt;\n&lt;/HEAD&gt;&lt;BODY&gt;\n&lt;H1&gt;502 ERROR&lt;/H1&gt;\n&lt;H2&gt;The request could not be satisfied.&lt;/H2&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\nThe origin closed the connection.\nWe can&apos;t connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n&lt;BR clear=\&quot;all\&quot;&gt;\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n&lt;BR clear=\&quot;all\&quot;&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\n&lt;PRE&gt;\nGenerated by cloudfront (CloudFront)\nRequest ID: AYxBeBbJii5UIeQ-NqzXWa5R1ivozc7lU1R3wBml46eheK4AB3Yqlg==\n&lt;/PRE&gt;\n&lt;ADDRESS&gt;\n&lt;/ADDRESS&gt;\n&lt;/BODY&gt;&lt;/HTML&gt;; statusCode = 502&quot;" type="Error"><![CDATA[Error: Could not set up Test App: "Invalid HTTP request: <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<HTML><HEAD><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\">\n<TITLE>ERROR: The request could not be satisfied</TITLE>\n</HEAD><BODY>\n<H1>502 ERROR</H1>\n<H2>The request could not be satisfied.</H2>\n<HR noshade size=\"1px\">\nThe origin closed the connection.\nWe can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n<BR clear=\"all\">\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n<BR clear=\"all\">\n<HR noshade size=\"1px\">\n<PRE>\nGenerated by cloudfront (CloudFront)\nRequest ID: AYxBeBbJii5UIeQ-NqzXWa5R1ivozc7lU1R3wBml46eheK4AB3Yqlg==\n</PRE>\n<ADDRESS>\n</ADDRESS>\n</BODY></HTML>; statusCode = 502"
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:35:16
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:149:11
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:116:15)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/channel" timestamp="2024-08-07T12:27:44" tests="119" file="/home/runner/work/ably-js/ably-js/test/realtime/channel.test.js" time="5.142" failures="1">
    <testcase name="realtime/channel &quot;before all&quot; hook for &quot;channelinit0_with_web_socket_binary_transport&quot;" time="5.139" classname="&quot;before all&quot; hook for &quot;channelinit0_with_web_socket_binary_transport&quot;">
      <failure message="Could not set up Test App: &quot;Invalid HTTP request: &lt;!DOCTYPE HTML PUBLIC \&quot;-//W3C//DTD HTML 4.01 Transitional//EN\&quot; \&quot;http://www.w3.org/TR/html4/loose.dtd\&quot;&gt;\n&lt;HTML&gt;&lt;HEAD&gt;&lt;META HTTP-EQUIV=\&quot;Content-Type\&quot; CONTENT=\&quot;text/html; charset=iso-8859-1\&quot;&gt;\n&lt;TITLE&gt;ERROR: The request could not be satisfied&lt;/TITLE&gt;\n&lt;/HEAD&gt;&lt;BODY&gt;\n&lt;H1&gt;502 ERROR&lt;/H1&gt;\n&lt;H2&gt;The request could not be satisfied.&lt;/H2&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\nThe origin closed the connection.\nWe can&apos;t connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n&lt;BR clear=\&quot;all\&quot;&gt;\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n&lt;BR clear=\&quot;all\&quot;&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\n&lt;PRE&gt;\nGenerated by cloudfront (CloudFront)\nRequest ID: nH8MzMZxpRLlrcrkmeBvT9rZUkwa_WQUGKdFjgDaPw_hjm6NUg9FmQ==\n&lt;/PRE&gt;\n&lt;ADDRESS&gt;\n&lt;/ADDRESS&gt;\n&lt;/BODY&gt;&lt;/HTML&gt;; statusCode = 502&quot;" type="Error"><![CDATA[Error: Could not set up Test App: "Invalid HTTP request: <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<HTML><HEAD><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\">\n<TITLE>ERROR: The request could not be satisfied</TITLE>\n</HEAD><BODY>\n<H1>502 ERROR</H1>\n<H2>The request could not be satisfied.</H2>\n<HR noshade size=\"1px\">\nThe origin closed the connection.\nWe can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n<BR clear=\"all\">\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n<BR clear=\"all\">\n<HR noshade size=\"1px\">\n<PRE>\nGenerated by cloudfront (CloudFront)\nRequest ID: nH8MzMZxpRLlrcrkmeBvT9rZUkwa_WQUGKdFjgDaPw_hjm6NUg9FmQ==\n</PRE>\n<ADDRESS>\n</ADDRESS>\n</BODY></HTML>; statusCode = 502"
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:35:16
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:149:11
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:116:15)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/connection" timestamp="2024-08-07T12:27:49" tests="7" file="/home/runner/work/ably-js/ably-js/test/realtime/connection.test.js" time="5.117" failures="2">
    <testcase name="realtime/connection &quot;before all&quot; hook for &quot;connectionPing&quot;" time="5.115" classname="&quot;before all&quot; hook for &quot;connectionPing&quot;">
      <failure message="Could not set up Test App: &quot;Invalid HTTP request: &lt;!DOCTYPE HTML PUBLIC \&quot;-//W3C//DTD HTML 4.01 Transitional//EN\&quot; \&quot;http://www.w3.org/TR/html4/loose.dtd\&quot;&gt;\n&lt;HTML&gt;&lt;HEAD&gt;&lt;META HTTP-EQUIV=\&quot;Content-Type\&quot; CONTENT=\&quot;text/html; charset=iso-8859-1\&quot;&gt;\n&lt;TITLE&gt;ERROR: The request could not be satisfied&lt;/TITLE&gt;\n&lt;/HEAD&gt;&lt;BODY&gt;\n&lt;H1&gt;502 ERROR&lt;/H1&gt;\n&lt;H2&gt;The request could not be satisfied.&lt;/H2&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\nThe origin closed the connection.\nWe can&apos;t connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n&lt;BR clear=\&quot;all\&quot;&gt;\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n&lt;BR clear=\&quot;all\&quot;&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\n&lt;PRE&gt;\nGenerated by cloudfront (CloudFront)\nRequest ID: vbdeCqcaZneh0tdjcT05xviIHkNhzwZbhcWDLiCxHtO4on-xUSTKog==\n&lt;/PRE&gt;\n&lt;ADDRESS&gt;\n&lt;/ADDRESS&gt;\n&lt;/BODY&gt;&lt;/HTML&gt;; statusCode = 502&quot;" type="Error"><![CDATA[Error: Could not set up Test App: "Invalid HTTP request: <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<HTML><HEAD><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\">\n<TITLE>ERROR: The request could not be satisfied</TITLE>\n</HEAD><BODY>\n<H1>502 ERROR</H1>\n<H2>The request could not be satisfied.</H2>\n<HR noshade size=\"1px\">\nThe origin closed the connection.\nWe can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n<BR clear=\"all\">\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n<BR clear=\"all\">\n<HR noshade size=\"1px\">\n<PRE>\nGenerated by cloudfront (CloudFront)\nRequest ID: vbdeCqcaZneh0tdjcT05xviIHkNhzwZbhcWDLiCxHtO4on-xUSTKog==\n</PRE>\n<ADDRESS>\n</ADDRESS>\n</BODY></HTML>; statusCode = 502"
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:35:16
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:149:11
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:116:15)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)]]></failure>
    </testcase>
    <testcase name="realtime/connection &quot;before all&quot; hook for &quot;connectionPing&quot;" time="5.115" classname="&quot;before all&quot; hook for &quot;connectionPing&quot;">
      <failure message="done() called multiple times in hook &lt;realtime/connection &quot;before all&quot; hook for &quot;connectionPing&quot;&gt; of file /home/runner/work/ably-js/ably-js/test/realtime/connection.test.js" type="Error"><![CDATA[Error: done() called multiple times in hook <realtime/connection "before all" hook for "connectionPing"> of file /home/runner/work/ably-js/ably-js/test/realtime/connection.test.js
    at /home/runner/work/ably-js/ably-js/test/realtime/connection.test.js:16:9
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:35:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:149:11
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:116:15)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/connectivity" timestamp="2024-08-07T12:27:54" tests="2" file="/home/runner/work/ably-js/ably-js/test/realtime/connectivity.test.js" time="5.031" failures="2">
    <testcase name="realtime/connectivity &quot;before all&quot; hook for &quot;http_connectivity_check&quot;" time="5.030" classname="&quot;before all&quot; hook for &quot;http_connectivity_check&quot;">
      <failure message="Could not set up Test App: &quot;Invalid HTTP request: &lt;!DOCTYPE HTML PUBLIC \&quot;-//W3C//DTD HTML 4.01 Transitional//EN\&quot; \&quot;http://www.w3.org/TR/html4/loose.dtd\&quot;&gt;\n&lt;HTML&gt;&lt;HEAD&gt;&lt;META HTTP-EQUIV=\&quot;Content-Type\&quot; CONTENT=\&quot;text/html; charset=iso-8859-1\&quot;&gt;\n&lt;TITLE&gt;ERROR: The request could not be satisfied&lt;/TITLE&gt;\n&lt;/HEAD&gt;&lt;BODY&gt;\n&lt;H1&gt;502 ERROR&lt;/H1&gt;\n&lt;H2&gt;The request could not be satisfied.&lt;/H2&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\nThe origin closed the connection.\nWe can&apos;t connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n&lt;BR clear=\&quot;all\&quot;&gt;\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n&lt;BR clear=\&quot;all\&quot;&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\n&lt;PRE&gt;\nGenerated by cloudfront (CloudFront)\nRequest ID: RQ4S9ln0cPb7tw-nwUob4R_Z2qTsdoDC0CmzLTB8KwFHcGVWRP32wA==\n&lt;/PRE&gt;\n&lt;ADDRESS&gt;\n&lt;/ADDRESS&gt;\n&lt;/BODY&gt;&lt;/HTML&gt;; statusCode = 502&quot;" type="Error"><![CDATA[Error: Could not set up Test App: "Invalid HTTP request: <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<HTML><HEAD><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\">\n<TITLE>ERROR: The request could not be satisfied</TITLE>\n</HEAD><BODY>\n<H1>502 ERROR</H1>\n<H2>The request could not be satisfied.</H2>\n<HR noshade size=\"1px\">\nThe origin closed the connection.\nWe can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n<BR clear=\"all\">\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n<BR clear=\"all\">\n<HR noshade size=\"1px\">\n<PRE>\nGenerated by cloudfront (CloudFront)\nRequest ID: RQ4S9ln0cPb7tw-nwUob4R_Z2qTsdoDC0CmzLTB8KwFHcGVWRP32wA==\n</PRE>\n<ADDRESS>\n</ADDRESS>\n</BODY></HTML>; statusCode = 502"
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:35:16
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:149:11
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:116:15)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)]]></failure>
    </testcase>
    <testcase name="realtime/connectivity &quot;before all&quot; hook for &quot;http_connectivity_check&quot;" time="5.030" classname="&quot;before all&quot; hook for &quot;http_connectivity_check&quot;">
      <failure message="done() called multiple times in hook &lt;realtime/connectivity &quot;before all&quot; hook for &quot;http_connectivity_check&quot;&gt; of file /home/runner/work/ably-js/ably-js/test/realtime/connectivity.test.js" type="Error"><![CDATA[Error: done() called multiple times in hook <realtime/connectivity "before all" hook for "http_connectivity_check"> of file /home/runner/work/ably-js/ably-js/test/realtime/connectivity.test.js
    at /home/runner/work/ably-js/ably-js/test/realtime/connectivity.test.js:15:9
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:35:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:149:11
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:116:15)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/crypto" timestamp="2024-08-07T12:27:59" tests="39" file="/home/runner/work/ably-js/ably-js/test/realtime/crypto.test.js" time="5.161" failures="2">
    <testcase name="realtime/crypto &quot;before all&quot; hook for &quot;generateRandomKey0&quot;" time="5.160" classname="&quot;before all&quot; hook for &quot;generateRandomKey0&quot;">
      <failure message="Could not set up Test App: &quot;Invalid HTTP request: &lt;!DOCTYPE HTML PUBLIC \&quot;-//W3C//DTD HTML 4.01 Transitional//EN\&quot; \&quot;http://www.w3.org/TR/html4/loose.dtd\&quot;&gt;\n&lt;HTML&gt;&lt;HEAD&gt;&lt;META HTTP-EQUIV=\&quot;Content-Type\&quot; CONTENT=\&quot;text/html; charset=iso-8859-1\&quot;&gt;\n&lt;TITLE&gt;ERROR: The request could not be satisfied&lt;/TITLE&gt;\n&lt;/HEAD&gt;&lt;BODY&gt;\n&lt;H1&gt;502 ERROR&lt;/H1&gt;\n&lt;H2&gt;The request could not be satisfied.&lt;/H2&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\nThe origin closed the connection.\nWe can&apos;t connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n&lt;BR clear=\&quot;all\&quot;&gt;\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n&lt;BR clear=\&quot;all\&quot;&gt;\n&lt;HR noshade size=\&quot;1px\&quot;&gt;\n&lt;PRE&gt;\nGenerated by cloudfront (CloudFront)\nRequest ID: KBZmvFvRX7PO4FLfX7x8CFrvGf0SWsweWHHWYEIKE_Pa_gUTU_6Dzg==\n&lt;/PRE&gt;\n&lt;ADDRESS&gt;\n&lt;/ADDRESS&gt;\n&lt;/BODY&gt;&lt;/HTML&gt;; statusCode = 502&quot;" type="Error"><![CDATA[Error: Could not set up Test App: "Invalid HTTP request: <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<HTML><HEAD><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\">\n<TITLE>ERROR: The request could not be satisfied</TITLE>\n</HEAD><BODY>\n<H1>502 ERROR</H1>\n<H2>The request could not be satisfied.</H2>\n<HR noshade size=\"1px\">\nThe origin closed the connection.\nWe can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n<BR clear=\"all\">\nIf you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.\n<BR clear=\"all\">\n<HR noshade size=\"1px\">\n<PRE>\nGenerated by cloudfront (CloudFront)\nRequest ID: KBZmvFvRX7PO4FLfX7x8CFrvGf0SWsweWHHWYEIKE_Pa_gUTU_6Dzg==\n</PRE>\n<ADDRESS>\n</ADDRESS>\n</BODY></HTML>; statusCode = 502"
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:35:16
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:149:11
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:116:15)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)]]></failure>
    </testcase>
    <testcase name="realtime/crypto &quot;before all&quot; hook for &quot;generateRandomKey0&quot;" time="5.160" classname="&quot;before all&quot; hook for &quot;generateRandomKey0&quot;">
      <failure message="done() called multiple times in hook &lt;realtime/crypto &quot;before all&quot; hook for &quot;generateRandomKey0&quot;&gt; of file /home/runner/work/ably-js/ably-js/test/realtime/crypto.test.js" type="Error"><![CDATA[Error: done() called multiple times in hook <realtime/crypto "before all" hook for "generateRandomKey0"> of file /home/runner/work/ably-js/ably-js/test/realtime/crypto.test.js
    at /home/runner/work/ably-js/ably-js/test/realtime/crypto.test.js:94:9
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:35:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:149:11
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:116:15)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/delta" timestamp="2024-08-07T12:28:05" tests="5" file="/home/runner/work/ably-js/ably-js/test/realtime/delta.test.js" time="36.085" failures="0">
    <testcase name="realtime/delta deltaPlugin" time="24.575" classname="deltaPlugin">
    </testcase>
    <testcase name="realtime/delta unusedPlugin" time="2.239" classname="unusedPlugin">
    </testcase>
    <testcase name="realtime/delta lastMessageNotFoundRecovery" time="2.297" classname="lastMessageNotFoundRecovery">
    </testcase>
    <testcase name="realtime/delta deltaDecodeFailureRecovery" time="2.256" classname="deltaDecodeFailureRecovery">
    </testcase>
    <testcase name="realtime/delta noPlugin" time="0.670" classname="noPlugin">
    </testcase>
  </testsuite>
  <testsuite name="realtime/encoding" timestamp="2024-08-07T12:28:41" tests="2" file="/home/runner/work/ably-js/ably-js/test/realtime/encoding.test.js" time="2.383" failures="0">
    <testcase name="realtime/encoding message_decoding" time="0.921" classname="message_decoding">
    </testcase>
    <testcase name="realtime/encoding message_encoding" time="1.461" classname="message_encoding">
    </testcase>
  </testsuite>
  <testsuite name="realtime/event_emitter" timestamp="2024-08-07T12:28:43" tests="13" file="/home/runner/work/ably-js/ably-js/test/realtime/event_emitter.test.js" time="0.000" failures="0">
    <testcase name="realtime/event_emitter attachdetach0" time="0.499" classname="attachdetach0">
    </testcase>
    <testcase name="realtime/event_emitter emitCallsAllCallbacksIgnoringExceptions" time="0.001" classname="emitCallsAllCallbacksIgnoringExceptions">
    </testcase>
    <testcase name="realtime/event_emitter onceCalledOnlyOnce" time="0.001" classname="onceCalledOnlyOnce">
    </testcase>
    <testcase name="realtime/event_emitter onceCallbackDoesNotImpactOnCallback" time="0.001" classname="onceCallbackDoesNotImpactOnCallback">
    </testcase>
    <testcase name="realtime/event_emitter offRemovesAllMatchingListeners" time="0.001" classname="offRemovesAllMatchingListeners">
    </testcase>
    <testcase name="realtime/event_emitter offRemovesAllListeners" time="0.000" classname="offRemovesAllListeners">
    </testcase>
    <testcase name="realtime/event_emitter offRemovesAllMatchingEventListeners" time="0.001" classname="offRemovesAllMatchingEventListeners">
    </testcase>
    <testcase name="realtime/event_emitter offRemovesAllMatchingEvents" time="0.000" classname="offRemovesAllMatchingEvents">
    </testcase>
    <testcase name="realtime/event_emitter offRemovesEmptyEventNameListeners" time="0.000" classname="offRemovesEmptyEventNameListeners">
    </testcase>
    <testcase name="realtime/event_emitter arrayOfEvents" time="0.001" classname="arrayOfEvents">
    </testcase>
    <testcase name="realtime/event_emitter arrayOfEventsWithOnce" time="0.000" classname="arrayOfEventsWithOnce">
    </testcase>
    <testcase name="realtime/event_emitter listenerAddedInListenerCb" time="0.000" classname="listenerAddedInListenerCb">
    </testcase>
    <testcase name="realtime/event_emitter listenerRemovedInListenerCb" time="0.001" classname="listenerRemovedInListenerCb">
    </testcase>
  </testsuite>
  <testsuite name="event_emitter_promise" timestamp="2024-08-07T12:28:43" tests="4" file="/home/runner/work/ably-js/ably-js/test/realtime/event_emitter.test.js" time="0.830" failures="0">
    <testcase name="realtime/event_emitter event_emitter_promise whenState" time="0.416" classname="whenState">
    </testcase>
    <testcase name="realtime/event_emitter event_emitter_promise once" time="0.412" classname="once">
    </testcase>
    <testcase name="realtime/event_emitter event_emitter_promise anyEventsWithOnce" time="0.000" classname="anyEventsWithOnce">
    </testcase>
    <testcase name="realtime/event_emitter event_emitter_promise arrayOfEventsWithOnce" time="0.000" classname="arrayOfEventsWithOnce">
    </testcase>
  </testsuite>
  <testsuite name="realtime/failure" timestamp="2024-08-07T12:28:44" tests="20" file="/home/runner/work/ably-js/ably-js/test/realtime/failure.test.js" time="29.804" failures="0">
    <testcase name="realtime/failure invalid_cred_failure" time="0.655" classname="invalid_cred_failure">
    </testcase>
    <testcase name="realtime/failure break_transport" time="0.419" classname="break_transport">
    </testcase>
    <testcase name="realtime/failure no_connection_lifecycle" time="4.802" classname="no_connection_lifecycle">
    </testcase>
    <testcase name="realtime/failure disconnected_backoff_web_socket" time="1.180" classname="disconnected_backoff_web_socket">
    </testcase>
    <testcase name="realtime/failure disconnected_backoff_comet" time="1.125" classname="disconnected_backoff_comet">
    </testcase>
    <testcase name="realtime/failure failed_channel" time="0.495" classname="failed_channel">
    </testcase>
    <testcase name="realtime/failure attach_timeout" time="3.373" classname="attach_timeout">
    </testcase>
    <testcase name="realtime/failure channel_backoff_web_socket" time="1.771" classname="channel_backoff_web_socket">
    </testcase>
    <testcase name="realtime/failure channel_backoff_comet" time="1.469" classname="channel_backoff_comet">
    </testcase>
    <testcase name="realtime/failure nack_on_connection_suspended" time="0.412" classname="nack_on_connection_suspended">
    </testcase>
    <testcase name="realtime/failure nack_on_connection_failed" time="0.407" classname="nack_on_connection_failed">
    </testcase>
    <testcase name="realtime/failure nack_on_connection_closed" time="0.423" classname="nack_on_connection_closed">
    </testcase>
    <testcase name="realtime/failure idle_transport_timeout" time="2.529" classname="idle_transport_timeout">
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_web_socket_binary_transport" time="0.636" classname="try_fallback_hosts_on_placement_constraint_with_web_socket_binary_transport">
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_web_socket_text_transport" time="0.585" classname="try_fallback_hosts_on_placement_constraint_with_web_socket_text_transport">
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_comet_binary_transport" time="0.403" classname="try_fallback_hosts_on_placement_constraint_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_comet_text_transport" time="0.371" classname="try_fallback_hosts_on_placement_constraint_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_binary_transport" time="0.578" classname="try_fallback_hosts_on_placement_constraint_with_binary_transport">
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_text_transport" time="0.637" classname="try_fallback_hosts_on_placement_constraint_with_text_transport">
    </testcase>
    <testcase name="realtime/failure no_messages_if_not_attached" time="7.519" classname="no_messages_if_not_attached">
    </testcase>
  </testsuite>
  <testsuite name="realtime/history" timestamp="2024-08-07T12:29:14" tests="1" file="/home/runner/work/ably-js/ably-js/test/realtime/history.test.js" time="0.796" failures="0">
    <testcase name="realtime/history history_until_attach" time="0.795" classname="history_until_attach">
    </testcase>
  </testsuite>
  <testsuite name="realtime/init" timestamp="2024-08-07T12:29:15" tests="15" file="/home/runner/work/ably-js/ably-js/test/realtime/init.test.js" time="4.252" failures="0">
    <testcase name="realtime/init initbase0" time="0.407" classname="initbase0">
    </testcase>
    <testcase name="realtime/init init_key_string" time="0.001" classname="init_key_string">
    </testcase>
    <testcase name="realtime/init init_token_string" time="0.475" classname="init_token_string">
    </testcase>
    <testcase name="realtime/init init_key_with_usetokenauth" time="0.496" classname="init_key_with_usetokenauth">
    </testcase>
    <testcase name="realtime/init init_usetokenauth_defaulttokenparams_wildcard" time="0.496" classname="init_usetokenauth_defaulttokenparams_wildcard">
    </testcase>
    <testcase name="realtime/init init_defaulttokenparams_nonwildcard" time="0.504" classname="init_defaulttokenparams_nonwildcard">
    </testcase>
    <testcase name="realtime/init init_conflicting_clientids" time="0.499" classname="init_conflicting_clientids">
    </testcase>
    <testcase name="realtime/init init_with_usetokenauth_false_and_a_clientid" time="0.001" classname="init_with_usetokenauth_false_and_a_clientid">
    </testcase>
    <testcase name="realtime/init init_defaulthost" time="0.000" classname="init_defaulthost">
    </testcase>
    <testcase name="realtime/init init_timeouts" time="0.000" classname="init_timeouts">
    </testcase>
    <testcase name="realtime/init init_fallbacks" time="0.034" classname="init_fallbacks">
    </testcase>
    <testcase name="realtime/init node_transports" time="0.001" classname="node_transports">
    </testcase>
    <testcase name="realtime/init init_and_connection_details" time="0.493" classname="init_and_connection_details">
    </testcase>
    <testcase name="realtime/init init_fallbacks_once_connected" time="0.412" classname="init_fallbacks_once_connected">
    </testcase>
    <testcase name="realtime/init init_fallbacks_once_connected_2" time="0.428" classname="init_fallbacks_once_connected_2">
    </testcase>
  </testsuite>
  <testsuite name="realtime/message" timestamp="2024-08-07T12:29:19" tests="35" file="/home/runner/work/ably-js/ably-js/test/realtime/message.test.js" time="40.430" failures="1">
    <testcase name="realtime/message publishonce" time="0.597" classname="publishonce">
    </testcase>
    <testcase name="realtime/message publishfast_with_web_socket_binary_transport" time="1.126" classname="publishfast_with_web_socket_binary_transport">
    </testcase>
    <testcase name="realtime/message publishfast_with_web_socket_text_transport" time="1.099" classname="publishfast_with_web_socket_text_transport">
    </testcase>
    <testcase name="realtime/message publishfast_with_comet_binary_transport" time="0.568" classname="publishfast_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/message publishfast_with_comet_text_transport" time="0.564" classname="publishfast_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/message publishfast_with_binary_transport" time="1.088" classname="publishfast_with_binary_transport">
    </testcase>
    <testcase name="realtime/message publishfast_with_text_transport" time="1.086" classname="publishfast_with_text_transport">
    </testcase>
    <testcase name="realtime/message publishQueued_with_web_socket_binary_transport" time="1.924" classname="publishQueued_with_web_socket_binary_transport">
    </testcase>
    <testcase name="realtime/message publishQueued_with_web_socket_text_transport" time="1.910" classname="publishQueued_with_web_socket_text_transport">
    </testcase>
    <testcase name="realtime/message publishQueued_with_comet_binary_transport" time="1.704" classname="publishQueued_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/message publishQueued_with_comet_text_transport" time="1.621" classname="publishQueued_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/message publishQueued_with_binary_transport" time="1.954" classname="publishQueued_with_binary_transport">
    </testcase>
    <testcase name="realtime/message publishQueued_with_text_transport" time="1.920" classname="publishQueued_with_text_transport">
    </testcase>
    <testcase name="realtime/message publishEcho" time="0.770" classname="publishEcho">
      <failure message="Received exactly one message on rtNoEcho: expected 2 to equal 1" type="AssertionError"><![CDATA[AssertionError: Received exactly one message on rtNoEcho: expected 2 to equal 1
    at finishTest (test/realtime/message.test.js:261:54)
    at Object.<anonymous> (test/realtime/message.test.js:287:11)
    at callListener (src/common/lib/util/eventemitter.ts:8:14)
    at /home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:220:7
    at Array.forEach (<anonymous>)
    at EventEmitter.emit (src/common/lib/util/eventemitter.ts:219:15)
    at _RealtimeChannel.onEvent (src/common/lib/client/realtimechannel.ts:298:21)
    at _RealtimeChannel.processMessage (src/common/lib/client/realtimechannel.ts:676:14)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Channels2.processChannelMessage (src/common/lib/client/baserealtime.ts:148:5)
    at _ConnectionManager.processChannelMessage (src/common/lib/transport/connectionmanager.ts:1924:5)

      + expected - actual

      -2
      +1
      ]]></failure>
    </testcase>
    <testcase name="realtime/message publishVariations" time="3.942" classname="publishVariations">
    </testcase>
    <testcase name="realtime/message publishDisallowed" time="0.494" classname="publishDisallowed">
    </testcase>
    <testcase name="realtime/message publishEncodings" time="0.848" classname="publishEncodings">
    </testcase>
    <testcase name="realtime/message restpublish" time="5.170" classname="restpublish">
    </testcase>
    <testcase name="realtime/message publish_with_web_socket_binary_transport" time="1.107" classname="publish_with_web_socket_binary_transport">
    </testcase>
    <testcase name="realtime/message publish_with_web_socket_text_transport" time="1.111" classname="publish_with_web_socket_text_transport">
    </testcase>
    <testcase name="realtime/message publish_with_comet_binary_transport" time="0.726" classname="publish_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/message publish_with_comet_text_transport" time="0.614" classname="publish_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/message publish_with_binary_transport" time="1.103" classname="publish_with_binary_transport">
    </testcase>
    <testcase name="realtime/message publish_with_text_transport" time="1.132" classname="publish_with_text_transport">
    </testcase>
    <testcase name="realtime/message implicit_client_id_0" time="0.501" classname="implicit_client_id_0">
    </testcase>
    <testcase name="realtime/message explicit_client_id_0" time="0.575" classname="explicit_client_id_0">
    </testcase>
    <testcase name="realtime/message explicit_client_id_1" time="1.083" classname="explicit_client_id_1">
    </testcase>
    <testcase name="realtime/message subscribe_with_event_array" time="0.625" classname="subscribe_with_event_array">
    </testcase>
    <testcase name="realtime/message subscribe_with_filter_object" time="0.589" classname="subscribe_with_filter_object">
    </testcase>
    <testcase name="realtime/message unsubscribe_with_filter_object" time="0.582" classname="unsubscribe_with_filter_object">
    </testcase>
    <testcase name="realtime/message extras_field" time="0.588" classname="extras_field">
    </testcase>
    <testcase name="realtime/message maxMessageSize" time="0.423" classname="maxMessageSize">
    </testcase>
    <testcase name="realtime/message idempotentRealtimePublishing" time="0.582" classname="idempotentRealtimePublishing">
    </testcase>
    <testcase name="realtime/message subscribes to filtered channel" time="0.687" classname="subscribes to filtered channel">
    </testcase>
  </testsuite>
  <testsuite name="realtime/presence" timestamp="2024-08-07T12:30:00" tests="35" file="/home/runner/work/ably-js/ably-js/test/realtime/presence.test.js" time="89.309" failures="1">
    <testcase name="realtime/presence presenceEnterWithoutAttach" time="0.995" classname="presenceEnterWithoutAttach">
    </testcase>
    <testcase name="realtime/presence presenceEnterWithoutConnect" time="1.018" classname="presenceEnterWithoutConnect">
    </testcase>
    <testcase name="realtime/presence presenceEnterWithCallback" time="1.004" classname="presenceEnterWithCallback">
    </testcase>
    <testcase name="realtime/presence presenceEnterWithNothing" time="1.004" classname="presenceEnterWithNothing">
    </testcase>
    <testcase name="realtime/presence presenceEnterWithData" time="0.993" classname="presenceEnterWithData">
    </testcase>
    <testcase name="realtime/presence presenceMessageAction" time="0.588" classname="presenceMessageAction">
    </testcase>
    <testcase name="realtime/presence presenceMessageExtras" time="0.664" classname="presenceMessageExtras">
    </testcase>
    <testcase name="realtime/presence presenceEnterDetachEnter" time="1.505" classname="presenceEnterDetachEnter">
    </testcase>
    <testcase name="realtime/presence presenceEnterInvalid" time="0.534" classname="presenceEnterInvalid">
    </testcase>
    <testcase name="realtime/presence presenceEnterAndLeave" time="1.023" classname="presenceEnterAndLeave">
    </testcase>
    <testcase name="realtime/presence presenceEnterUpdate" time="1.519" classname="presenceEnterUpdate">
    </testcase>
    <testcase name="realtime/presence presenceEnterGet" time="0.998" classname="presenceEnterGet">
    </testcase>
    <testcase name="realtime/presence presenceSubscribeUnattached" time="0.907" classname="presenceSubscribeUnattached">
    </testcase>
    <testcase name="realtime/presence presenceGetUnattached" time="0.996" classname="presenceGetUnattached">
    </testcase>
    <testcase name="realtime/presence presenceEnterLeaveGet" time="1.498" classname="presenceEnterLeaveGet">
    </testcase>
    <testcase name="realtime/presence presenceHistory" time="1.508" classname="presenceHistory">
    </testcase>
    <testcase name="realtime/presence presenceSecondConnection" time="1.001" classname="presenceSecondConnection">
    </testcase>
    <testcase name="realtime/presence presenceTwoMembers" time="0.184" classname="presenceTwoMembers">
    </testcase>
    <testcase name="realtime/presence presenceEnterAfterClose" time="1.094" classname="presenceEnterAfterClose">
    </testcase>
    <testcase name="realtime/presence presenceEnterClosed" time="3.084" classname="presenceEnterClosed">
    </testcase>
    <testcase name="realtime/presence presenceClientIdIsImplicit" time="1.100" classname="presenceClientIdIsImplicit">
    </testcase>
    <testcase name="realtime/presence presenceEncoding" time="0.138" classname="presenceEncoding">
    </testcase>
    <testcase name="realtime/presence presence_enter_inherited_clientid" time="0.154" classname="presence_enter_inherited_clientid">
    </testcase>
    <testcase name="realtime/presence presence_enter_before_know_clientid" time="0.159" classname="presence_enter_before_know_clientid">
    </testcase>
    <testcase name="realtime/presence presence_refresh_on_detach" time="3.655" classname="presence_refresh_on_detach">
    </testcase>
    <testcase name="realtime/presence presence_detach_during_sync" time="0.097" classname="presence_detach_during_sync">
    </testcase>
    <testcase name="realtime/presence presence_auto_reenter" time="27.624" classname="presence_auto_reenter">
      <failure message="Check correct number of results: expected 2 to equal 3" type="AssertionError"><![CDATA[AssertionError: Check correct number of results: expected 2 to equal 3
    at /home/runner/work/ably-js/ably-js/test/realtime/presence.test.js:1725:43
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:231:11
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

      + expected - actual

      -2
      +3
      ]]></failure>
    </testcase>
    <testcase name="realtime/presence multiple_pending" time="0.153" classname="multiple_pending">
    </testcase>
    <testcase name="realtime/presence leave_published_for_member_missing_from_sync" time="0.156" classname="leave_published_for_member_missing_from_sync">
    </testcase>
    <testcase name="realtime/presence leave_published_for_members_on_presenceless_attached" time="24.424" classname="leave_published_for_members_on_presenceless_attached">
    </testcase>
    <testcase name="realtime/presence suspended_preserves_presence" time="1.197" classname="suspended_preserves_presence">
    </testcase>
    <testcase name="realtime/presence presence_many_updates" time="8.146" classname="presence_many_updates">
    </testcase>
  </testsuite>
  <testsuite name="realtime/reauth" timestamp="2024-08-07T12:31:29" tests="24" file="/home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js" time="10.598" failures="1">
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_web_socket_binary_transport" time="0.134" classname="reauthCapabilityUpgradeNewChannel_with_web_socket_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_web_socket_text_transport" time="0.186" classname="reauthCapabilityUpgradeNewChannel_with_web_socket_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_comet_binary_transport" time="0.256" classname="reauthCapabilityUpgradeNewChannel_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_comet_text_transport" time="0.206" classname="reauthCapabilityUpgradeNewChannel_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_binary_transport" time="0.143" classname="reauthCapabilityUpgradeNewChannel_with_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_text_transport" time="0.105" classname="reauthCapabilityUpgradeNewChannel_with_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_web_socket_binary_transport" time="0.133" classname="reauthCapabilityDowngradeFullChannel_with_web_socket_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_web_socket_text_transport" time="0.088" classname="reauthCapabilityDowngradeFullChannel_with_web_socket_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_comet_binary_transport" time="0.173" classname="reauthCapabilityDowngradeFullChannel_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_comet_text_transport" time="0.207" classname="reauthCapabilityDowngradeFullChannel_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_binary_transport" time="0.126" classname="reauthCapabilityDowngradeFullChannel_with_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_text_transport" time="0.130" classname="reauthCapabilityDowngradeFullChannel_with_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_web_socket_binary_transport" time="0.404" classname="reauthCapabilityUpgradeAddPublish_with_web_socket_binary_transport">
      <failure message="reauthCapabilityUpgradeAddPublish: Connection monitor: connection state changed to disconnected: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeAddPublish: Connection monitor: connection state changed to disconnected: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:190:80
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:52:16
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:696:30
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:167:37
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:1209:30
    at Object.listener (test/realtime/reauth.test.js:57:13)
    at callListener (src/common/lib/util/eventemitter.ts:8:14)
    at /home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:220:7
    at Array.forEach (<anonymous>)
    at Connection.emit (src/common/lib/util/eventemitter.ts:219:15)
    at /home/runner/work/ably-js/ably-js/src/common/lib/client/connection.ts:30:14
    at processTicksAndRejections (node:internal/process/task_queues:77:11)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_web_socket_text_transport" time="5.593" classname="reauthCapabilityUpgradeAddPublish_with_web_socket_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_comet_binary_transport" time="0.259" classname="reauthCapabilityUpgradeAddPublish_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_comet_text_transport" time="0.218" classname="reauthCapabilityUpgradeAddPublish_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_binary_transport" time="0.581" classname="reauthCapabilityUpgradeAddPublish_with_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_text_transport" time="0.626" classname="reauthCapabilityUpgradeAddPublish_with_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_web_socket_binary_transport" time="0.137" classname="reauthCapabilityDowngradePublish_with_web_socket_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_web_socket_text_transport" time="0.118" classname="reauthCapabilityDowngradePublish_with_web_socket_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_comet_binary_transport" time="0.208" classname="reauthCapabilityDowngradePublish_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_comet_text_transport" time="0.168" classname="reauthCapabilityDowngradePublish_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_binary_transport" time="0.214" classname="reauthCapabilityDowngradePublish_with_binary_transport">
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_text_transport" time="0.165" classname="reauthCapabilityDowngradePublish_with_text_transport">
    </testcase>
  </testsuite>
  <testsuite name="realtime/resume" timestamp="2024-08-07T12:31:40" tests="35" file="/home/runner/work/ably-js/ably-js/test/realtime/resume.test.js" time="361.551" failures="13">
    <testcase name="realtime/resume resume_inactive_with_web_socket_binary_transport" time="1.790" classname="resume_inactive_with_web_socket_binary_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_web_socket_text_transport" time="5.082" classname="resume_inactive_with_web_socket_text_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_comet_binary_transport" time="16.028" classname="resume_inactive_with_comet_binary_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_comet_text_transport" time="22.882" classname="resume_inactive_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_binary_transport" time="8.402" classname="resume_inactive_with_binary_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_text_transport" time="8.924" classname="resume_inactive_with_text_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_binary_transport" time="8.402" classname="resume_inactive_with_binary_transport">
      <failure message="done() called multiple times in test &lt;realtime/resume resume_inactive_with_binary_transport&gt; of file /home/runner/work/ably-js/ably-js/test/realtime/resume.test.js; in addition, done() received error: AssertionError: Verify reconnect is resume mode: expected &apos;clean&apos; to equal &apos;resume&apos;
    at Object.&lt;anonymous&gt; (/home/runner/work/ably-js/ably-js/test/realtime/resume.test.js:82:46)
    at callListener (/home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:8:14)
    at /home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:220:7
    at Array.forEach (&lt;anonymous&gt;)
    at _ConnectionManager.emit (/home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:219:15)
    at _ConnectionManager.activateTransport (/home/runner/work/ably-js/ably-js/src/common/lib/transport/connectionmanager.ts:725:10)
    at Object.&lt;anonymous&gt; (/home/runner/work/ably-js/ably-js/src/common/lib/transport/connectionmanager.ts:586:12)
    at callListener (/home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:8:14)
    at /home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:220:7
    at Array.forEach (&lt;anonymous&gt;)
    at WebSocketTransport.emit (/home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:219:15)
    at WebSocketTransport.onProtocolMessage (/home/runner/work/ably-js/ably-js/src/common/lib/transport/transport.ts:150:14)
    at WebSocketTransport.onWsData (/home/runner/work/ably-js/ably-js/src/common/lib/transport/websockettransport.ts:138:12)
    at WebSocket.wsConnection.onmessage (/home/runner/work/ably-js/ably-js/src/common/lib/transport/websockettransport.ts:86:18)
    at callListener (/home/runner/work/ably-js/ably-js/node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (/home/runner/work/ably-js/ably-js/node_modules/ws/lib/event-target.js:209:9)
    at WebSocket.emit (node:events:517:28)
    at Receiver.receiverOnMessage (/home/runner/work/ably-js/ably-js/node_modules/ws/lib/websocket.js:1211:20)
    at Receiver.emit (node:events:517:28)
    at Receiver.dataMessage (/home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:567:14)
    at Receiver.getData (/home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:496:10)
    at Receiver.startLoop (/home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:167:16)
    at Receiver._write (/home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:94:10)
    at writeOrBuffer (node:internal/streams/writable:392:12)
    at _write (node:internal/streams/writable:333:10)
    at Receiver.Writable.write (node:internal/streams/writable:337:10)
    at TLSSocket.socketOnData (/home/runner/work/ably-js/ably-js/node_modules/ws/lib/websocket.js:1305:35)
    at TLSSocket.emit (node:events:517:28)
    at addChunk (node:internal/streams/readable:368:12)
    at readableAddChunk (node:internal/streams/readable:341:9)
    at TLSSocket.Readable.push (node:internal/streams/readable:278:10)
    at TLSWrap.onStreamRead (node:internal/stream_base_commons:190:23) {
  showDiff: true,
  actual: &apos;clean&apos;,
  expected: &apos;resume&apos;,
  operator: &apos;strictEqual&apos;
}" type="Error"><![CDATA[Error: done() called multiple times in test <realtime/resume resume_inactive_with_binary_transport> of file /home/runner/work/ably-js/ably-js/test/realtime/resume.test.js; in addition, done() received error: AssertionError: Verify reconnect is resume mode: expected 'clean' to equal 'resume'
    at Object.<anonymous> (test/realtime/resume.test.js:82:46)
    at callListener (src/common/lib/util/eventemitter.ts:8:14)
    at /home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:220:7
    at Array.forEach (<anonymous>)
    at _ConnectionManager.emit (src/common/lib/util/eventemitter.ts:219:15)
    at _ConnectionManager.activateTransport (src/common/lib/transport/connectionmanager.ts:725:10)
    at Object.<anonymous> (src/common/lib/transport/connectionmanager.ts:586:12)
    at callListener (src/common/lib/util/eventemitter.ts:8:14)
    at /home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:220:7
    at Array.forEach (<anonymous>)
    at WebSocketTransport.emit (src/common/lib/util/eventemitter.ts:219:15)
    at WebSocketTransport.onProtocolMessage (src/common/lib/transport/transport.ts:150:14)
    at WebSocketTransport.onWsData (src/common/lib/transport/websockettransport.ts:138:12)
    at WebSocket.wsConnection.onmessage (src/common/lib/transport/websockettransport.ts:86:18)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at WebSocket.emit (node:events:517:28)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1211:20)
    at Receiver.emit (node:events:517:28)
    at Receiver.dataMessage (node_modules/ws/lib/receiver.js:567:14)
    at Receiver.getData (node_modules/ws/lib/receiver.js:496:10)
    at Receiver.startLoop (node_modules/ws/lib/receiver.js:167:16)
    at Receiver._write (node_modules/ws/lib/receiver.js:94:10)
    at writeOrBuffer (node:internal/streams/writable:392:12)
    at _write (node:internal/streams/writable:333:10)
    at Receiver.Writable.write (node:internal/streams/writable:337:10)
    at TLSSocket.socketOnData (node_modules/ws/lib/websocket.js:1305:35)
    at TLSSocket.emit (node:events:517:28)
    at addChunk (node:internal/streams/readable:368:12)
    at readableAddChunk (node:internal/streams/readable:341:9)
    at TLSSocket.Readable.push (node:internal/streams/readable:278:10)
    at TLSWrap.onStreamRead (node:internal/stream_base_commons:190:23) {
  showDiff: true,
  actual: 'clean',
  expected: 'resume',
  operator: 'strictEqual'
}
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:210:9
    at Object.<anonymous> (test/common/modules/shared_helper.js:293:9)
    at callListener (src/common/lib/util/eventemitter.ts:8:14)
    at /home/runner/work/ably-js/ably-js/src/common/lib/util/eventemitter.ts:220:7
    at Array.forEach (<anonymous>)
    at WebSocketTransport.emit (src/common/lib/util/eventemitter.ts:219:15)
    at WebSocketTransport.onWsClose (src/common/lib/transport/websockettransport.ts:184:10)
    at WebSocket.wsConnection.onclose (src/common/lib/transport/websockettransport.ts:83:18)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onClose (node_modules/ws/lib/event-target.js:220:9)
    at WebSocket.emit (node:events:517:28)
    at WebSocket.emitClose (node_modules/ws/lib/websocket.js:265:10)
    at TLSSocket.socketOnClose (node_modules/ws/lib/websocket.js:1291:15)
    at TLSSocket.emit (node:events:529:35)
    at node:net:350:12
    at TCP.done (node:_tls_wrap:657:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_web_socket_binary_transport" time="33.157" classname="resume_active_with_web_socket_binary_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_web_socket_text_transport" time="12.538" classname="resume_active_with_web_socket_text_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_web_socket_text_transport" time="12.538" classname="resume_active_with_web_socket_text_transport">
      <failure message="done() called multiple times in test &lt;realtime/resume resume_active_with_web_socket_text_transport&gt; of file /home/runner/work/ably-js/ably-js/test/realtime/resume.test.js; in addition, done() received error: [_ErrorInfo: Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;; statusCode=502]" type="Error"><![CDATA[Error: done() called multiple times in test <realtime/resume resume_active_with_web_socket_text_transport> of file /home/runner/work/ably-js/ably-js/test/realtime/resume.test.js; in addition, done() received error: [_ErrorInfo: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>; statusCode=502]
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:210:9
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:286:11
    at processTicksAndRejections (node:internal/process/task_queues:77:11)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_comet_binary_transport" time="5.989" classname="resume_active_with_comet_binary_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_comet_text_transport" time="8.997" classname="resume_active_with_comet_text_transport">
      <failure message="Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>
    at _a._handler (src/platform/nodejs/lib/util/http.ts:168:11)
    at _a.doUri (src/platform/nodejs/lib/util/http.ts:101:21)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Http.doUri (src/common/types/http.ts:257:22)
    at doRequest (src/common/lib/client/resource.ts:341:26)
    at Function.do (src/common/lib/client/resource.ts:359:18)
    at RestChannel._publish (src/common/lib/client/restchannel.ts:134:5)
    at RestChannel.publish (src/common/lib/client/restchannel.ts:130:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_comet_text_transport" time="8.997" classname="resume_active_with_comet_text_transport">
      <failure message="done() called multiple times in test &lt;realtime/resume resume_active_with_comet_text_transport&gt; of file /home/runner/work/ably-js/ably-js/test/realtime/resume.test.js; in addition, done() received error: [_ErrorInfo: Error response received from server: 502 body was: &lt;Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes&gt;; statusCode=502]" type="Error"><![CDATA[Error: done() called multiple times in test <realtime/resume resume_active_with_comet_text_transport> of file /home/runner/work/ably-js/ably-js/test/realtime/resume.test.js; in addition, done() received error: [_ErrorInfo: Error response received from server: 502 body was: <Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 6e 73 ... 886 more bytes>; statusCode=502]
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:210:9
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:286:11
    at processTicksAndRejections (node:internal/process/task_queues:77:11)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_binary_transport" time="95.893" classname="resume_active_with_binary_transport">
    </testcase>
    <testcase name="realtime/resume resume_active_with_text_transport" time="12.295" classname="resume_active_with_text_transport">
    </testcase>
    <testcase name="realtime/resume channel_resumed_flag" time="0.932" classname="channel_resumed_flag">
    </testcase>
    <testcase name="realtime/resume no_resume_once_suspended" time="0.324" classname="no_resume_once_suspended">
    </testcase>
    <testcase name="realtime/resume no_resume_last_activity" time="0.324" classname="no_resume_last_activity">
    </testcase>
    <testcase name="realtime/resume resume_rewind_1" time="7.933" classname="resume_rewind_1">
    </testcase>
    <testcase name="realtime/resume recover multiple channels" time="120.004" classname="recover multiple channels">
      <failure message="Timeout of 120000ms exceeded. For async tests and hooks, ensure &quot;done()&quot; is called; if returning a Promise, ensure it resolves. (/home/runner/work/ably-js/ably-js/test/realtime/resume.test.js)" type="Error"><![CDATA[Error: Timeout of 120000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/home/runner/work/ably-js/ably-js/test/realtime/resume.test.js)
    at listOnTimeout (node:internal/timers:569:17)
    at processTimers (node:internal/timers:512:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/sync" timestamp="2024-08-07T12:37:41" tests="6" file="/home/runner/work/ably-js/ably-js/test/realtime/sync.test.js" time="1.302" failures="0">
    <testcase name="realtime/sync sync_existing_set" time="0.002" classname="sync_existing_set">
    </testcase>
    <testcase name="realtime/sync sync_member_arrives_in_middle" time="0.001" classname="sync_member_arrives_in_middle">
    </testcase>
    <testcase name="realtime/sync sync_member_arrives_normally_after_came_in_sync" time="0.001" classname="sync_member_arrives_normally_after_came_in_sync">
    </testcase>
    <testcase name="realtime/sync sync_member_arrives_normally_before_comes_in_sync" time="0.001" classname="sync_member_arrives_normally_before_comes_in_sync">
    </testcase>
    <testcase name="realtime/sync presence_ordering" time="0.002" classname="presence_ordering">
    </testcase>
    <testcase name="realtime/sync presence_sync_interruptus" time="1.293" classname="presence_sync_interruptus">
    </testcase>
  </testsuite>
  <testsuite name="realtime/transports" timestamp="2024-08-07T12:37:42" tests="5" file="/home/runner/work/ably-js/ably-js/test/realtime/transports.test.js" time="8.328" failures="0">
    <testcase name="realtime/transports websocket_is_default" time="0.427" classname="websocket_is_default">
    </testcase>
    <testcase name="realtime/transports no_ws_connectivity" time="3.199" classname="no_ws_connectivity">
    </testcase>
    <testcase name="realtime/transports ws_primary_host_fails" time="0.425" classname="ws_primary_host_fails">
    </testcase>
    <testcase name="realtime/transports no_internet_connectivity" time="1.271" classname="no_internet_connectivity">
    </testcase>
    <testcase name="realtime/transports no_websocket_or_base_transport" time="3.004" classname="no_websocket_or_base_transport">
    </testcase>
  </testsuite>
  <testsuite name="incremental backoff and jitter" timestamp="2024-08-07T12:37:51" tests="1" file="/home/runner/work/ably-js/ably-js/test/realtime/utils.test.js" time="0.002" failures="0">
    <testcase name="incremental backoff and jitter should calculate retry timeouts using incremental backoff and jitter" time="0.002" classname="should calculate retry timeouts using incremental backoff and jitter">
    </testcase>
  </testsuite>
  <testsuite name="rest/api" timestamp="2024-08-07T12:37:51" tests="5" file="/home/runner/work/ably-js/ably-js/test/rest/api.test.js" time="0.002" failures="0">
    <testcase name="rest/api Client constructors" time="0.000" classname="Client constructors">
    </testcase>
    <testcase name="rest/api constructor without any arguments" time="0.000" classname="constructor without any arguments">
    </testcase>
    <testcase name="rest/api Crypto" time="0.000" classname="Crypto">
    </testcase>
    <testcase name="rest/api Message" time="0.000" classname="Message">
    </testcase>
    <testcase name="rest/api PresenceMessage" time="0.000" classname="PresenceMessage">
    </testcase>
  </testsuite>
  <testsuite name="rest/auth" timestamp="2024-08-07T12:37:51" tests="32" file="/home/runner/work/ably-js/ably-js/test/rest/auth.test.js" time="5.938" failures="0">
    <testcase name="rest/auth Base token generation case" time="0.111" classname="Base token generation case">
    </testcase>
    <testcase name="rest/auth Base token generation with options" time="0.085" classname="Base token generation with options">
    </testcase>
    <testcase name="rest/auth Generate token and init library with it" time="0.086" classname="Generate token and init library with it">
    </testcase>
    <testcase name="rest/auth Token generation with explicit timestamp" time="0.168" classname="Token generation with explicit timestamp">
    </testcase>
    <testcase name="rest/auth Token generation with invalid timestamp" time="0.098" classname="Token generation with invalid timestamp">
    </testcase>
    <testcase name="rest/auth Token generation with system timestamp" time="0.334" classname="Token generation with system timestamp">
    </testcase>
    <testcase name="rest/auth Token generation with duplicate nonce" time="0.278" classname="Token generation with duplicate nonce">
    </testcase>
    <testcase name="rest/auth Token generation with clientId" time="0.083" classname="Token generation with clientId">
    </testcase>
    <testcase name="rest/auth Token generation with empty string clientId should error" time="0.001" classname="Token generation with empty string clientId should error">
    </testcase>
    <testcase name="rest/auth Token generation with capability that subsets key capability" time="0.084" classname="Token generation with capability that subsets key capability">
    </testcase>
    <testcase name="rest/auth Token generation with specified key" time="0.444" classname="Token generation with specified key">
    </testcase>
    <testcase name="rest/auth Token generation with explicit auth" time="0.112" classname="Token generation with explicit auth">
    </testcase>
    <testcase name="rest/auth Token generation with explicit auth, different key" time="0.430" classname="Token generation with explicit auth, different key">
    </testcase>
    <testcase name="rest/auth Token generation with invalid mac" time="0.097" classname="Token generation with invalid mac">
    </testcase>
    <testcase name="rest/auth Token generation with defaultTokenParams set and no tokenParams passed in" time="0.100" classname="Token generation with defaultTokenParams set and no tokenParams passed in">
    </testcase>
    <testcase name="rest/auth Token generation: if tokenParams passed in, defaultTokenParams should be ignored altogether, not merged" time="0.084" classname="Token generation: if tokenParams passed in, defaultTokenParams should be ignored altogether, not merged">
    </testcase>
    <testcase name="rest/auth Authorize with different args" time="0.094" classname="Authorize with different args">
    </testcase>
    <testcase name="rest/auth Specify non-default ttl" time="0.086" classname="Specify non-default ttl">
    </testcase>
    <testcase name="rest/auth Should error with excessive ttl" time="0.090" classname="Should error with excessive ttl">
    </testcase>
    <testcase name="rest/auth Should error with negative ttl" time="0.084" classname="Should error with negative ttl">
    </testcase>
    <testcase name="rest/auth Should error with invalid ttl" time="0.085" classname="Should error with invalid ttl">
    </testcase>
    <testcase name="rest/auth createTokenRequest without authOptions" time="0.000" classname="createTokenRequest without authOptions">
    </testcase>
    <testcase name="rest/auth createTokenRequest uses the key it was initialized with if authOptions does not have a &quot;key&quot; key" time="0.001" classname="createTokenRequest uses the key it was initialized with if authOptions does not have a &quot;key&quot; key">
    </testcase>
    <testcase name="rest/auth createTokenRequest should serialise capability object as JSON" time="0.000" classname="createTokenRequest should serialise capability object as JSON">
    </testcase>
    <testcase name="rest/auth Basic rest JWT" time="0.279" classname="Basic rest JWT">
    </testcase>
    <testcase name="rest/auth Rest JWT with return type " time="0.285" classname="Rest JWT with return type ">
    </testcase>
    <testcase name="rest/auth Rest embedded JWT" time="0.513" classname="Rest embedded JWT">
    </testcase>
    <testcase name="rest/auth Rest embedded JWT with encryption" time="0.215" classname="Rest embedded JWT with encryption">
    </testcase>
    <testcase name="rest/auth JWT request with invalid key" time="0.560" classname="JWT request with invalid key">
    </testcase>
    <testcase name="rest/auth Rest JWT with authCallback" time="0.274" classname="Rest JWT with authCallback">
    </testcase>
    <testcase name="rest/auth Rest JWT with authCallback and invalid keys" time="0.432" classname="Rest JWT with authCallback and invalid keys">
    </testcase>
    <testcase name="rest/auth authCallback is only invoked once on concurrent auth" time="0.250" classname="authCallback is only invoked once on concurrent auth">
    </testcase>
  </testsuite>
  <testsuite name="rest/batchPublish" timestamp="2024-08-07T12:37:57" tests="0" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="0.000" failures="0">
  </testsuite>
  <testsuite name="when invoked with an array of specs" timestamp="2024-08-07T12:37:57" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="0.200" failures="0">
    <testcase name="rest/batchPublish when invoked with an array of specs performs a batch publish and returns an array of results" time="0.200" classname="performs a batch publish and returns an array of results">
    </testcase>
  </testsuite>
  <testsuite name="when invoked with a single spec" timestamp="2024-08-07T12:37:57" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="0.189" failures="0">
    <testcase name="rest/batchPublish when invoked with a single spec performs a batch publish and returns a single result" time="0.189" classname="performs a batch publish and returns a single result">
    </testcase>
  </testsuite>
  <testsuite name="rest/batchPresence" timestamp="2024-08-07T12:37:57" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="1.192" failures="0">
    <testcase name="rest/batchPresence performs a batch presence fetch and returns a result" time="1.191" classname="performs a batch presence fetch and returns a result">
    </testcase>
  </testsuite>
  <testsuite name="rest/revokeTokens" timestamp="2024-08-07T12:37:58" tests="3" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="0.778" failures="0">
    <testcase name="rest/revokeTokens revokes tokens matching the given specifiers" time="0.579" classname="revokes tokens matching the given specifiers">
    </testcase>
    <testcase name="rest/revokeTokens accepts optional issuedBefore and allowReauthMargin parameters" time="0.197" classname="accepts optional issuedBefore and allowReauthMargin parameters">
    </testcase>
    <testcase name="rest/revokeTokens throws an error when using token auth" time="0.000" classname="throws an error when using token auth">
    </testcase>
  </testsuite>
  <testsuite name="rest/bufferutils" timestamp="2024-08-07T12:37:59" tests="2" file="/home/runner/work/ably-js/ably-js/test/rest/bufferutils.test.js" time="0.001" failures="0">
    <testcase name="rest/bufferutils Basic encoding and decoding" time="0.001" classname="Basic encoding and decoding">
    </testcase>
    <testcase name="rest/bufferutils BufferUtils return correct types" time="0.000" classname="BufferUtils return correct types">
    </testcase>
  </testsuite>
  <testsuite name="rest/capability" timestamp="2024-08-07T12:37:59" tests="14" file="/home/runner/work/ably-js/ably-js/test/rest/capability.test.js" time="1.858" failures="0">
    <testcase name="rest/capability Blanket intersection with specified key" time="0.407" classname="Blanket intersection with specified key">
    </testcase>
    <testcase name="rest/capability Equal intersection with specified key" time="0.294" classname="Equal intersection with specified key">
    </testcase>
    <testcase name="rest/capability Empty ops intersection" time="0.084" classname="Empty ops intersection">
    </testcase>
    <testcase name="rest/capability Empty paths intersection" time="0.085" classname="Empty paths intersection">
    </testcase>
    <testcase name="rest/capability Ops intersection non-empty" time="0.084" classname="Ops intersection non-empty">
    </testcase>
    <testcase name="rest/capability Paths intersection non-empty" time="0.097" classname="Paths intersection non-empty">
    </testcase>
    <testcase name="rest/capability Wildcard token with publish and subscribe key" time="0.096" classname="Wildcard token with publish and subscribe key">
    </testcase>
    <testcase name="rest/capability Publish and subscribe token with wildcard key" time="0.084" classname="Publish and subscribe token with wildcard key">
    </testcase>
    <testcase name="rest/capability Resources wildcard matching 1" time="0.097" classname="Resources wildcard matching 1">
    </testcase>
    <testcase name="rest/capability Resources wildcard matching 2" time="0.084" classname="Resources wildcard matching 2">
    </testcase>
    <testcase name="rest/capability Resources wildcard matching 3" time="0.101" classname="Resources wildcard matching 3">
    </testcase>
    <testcase name="rest/capability Invalid capabilities 1" time="0.087" classname="Invalid capabilities 1">
    </testcase>
    <testcase name="rest/capability Invalid capabilities 2" time="0.084" classname="Invalid capabilities 2">
    </testcase>
    <testcase name="rest/capability Invalid capabilities 3" time="0.084" classname="Invalid capabilities 3">
    </testcase>
  </testsuite>
  <testsuite name="rest/defaults" timestamp="2024-08-07T12:38:01" tests="8" file="/home/runner/work/ably-js/ably-js/test/rest/defaults.test.js" time="0.000" failures="0">
    <testcase name="rest/defaults Init with no endpoint-related options" time="0.000" classname="Init with no endpoint-related options">
    </testcase>
    <testcase name="rest/defaults Init with production environment" time="0.001" classname="Init with production environment">
    </testcase>
    <testcase name="rest/defaults Init with given environment" time="0.000" classname="Init with given environment">
    </testcase>
    <testcase name="rest/defaults Init with local environment and non-default ports" time="0.001" classname="Init with local environment and non-default ports">
    </testcase>
    <testcase name="rest/defaults Init with given host" time="0.000" classname="Init with given host">
    </testcase>
    <testcase name="rest/defaults Init with given restHost and realtimeHost" time="0.001" classname="Init with given restHost and realtimeHost">
    </testcase>
    <testcase name="rest/defaults Init with no endpoint-related options and given default environment" time="0.000" classname="Init with no endpoint-related options and given default environment">
    </testcase>
    <testcase name="rest/defaults closeOnUnload" time="0.000" classname="closeOnUnload">
    </testcase>
  </testsuite>
  <testsuite name="normaliseOptions with useBinaryProtocol == true" timestamp="2024-08-07T12:38:01" tests="0" file="/home/runner/work/ably-js/ably-js/test/rest/defaults.test.js" time="0.000" failures="0">
  </testsuite>
  <testsuite name="given MsgPack implementation" timestamp="2024-08-07T12:38:01" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/defaults.test.js" time="0.001" failures="0">
    <testcase name="rest/defaults normaliseOptions with useBinaryProtocol == true given MsgPack implementation maintains useBinaryProtocol as true" time="0.000" classname="maintains useBinaryProtocol as true">
    </testcase>
  </testsuite>
  <testsuite name="given no MsgPack implementation" timestamp="2024-08-07T12:38:01" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/defaults.test.js" time="0.001" failures="0">
    <testcase name="rest/defaults normaliseOptions with useBinaryProtocol == true given no MsgPack implementation changes useBinaryProtocol to false" time="0.000" classname="changes useBinaryProtocol to false">
    </testcase>
  </testsuite>
  <testsuite name="rest/fallbacks" timestamp="2024-08-07T12:38:01" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/fallbacks.test.js" time="0.000" failures="0">
    <testcase name="rest/fallbacks Store working fallback" time="6.253" classname="Store working fallback">
    </testcase>
  </testsuite>
  <testsuite name="Max elapsed time for host retries" timestamp="2024-08-07T12:38:07" tests="2" file="/home/runner/work/ably-js/ably-js/test/rest/fallbacks.test.js" time="3.009" failures="0">
    <testcase name="rest/fallbacks Max elapsed time for host retries can timeout after default host" time="1.002" classname="can timeout after default host">
    </testcase>
    <testcase name="rest/fallbacks Max elapsed time for host retries can timeout after fallback host retries" time="2.004" classname="can timeout after fallback host retries">
    </testcase>
  </testsuite>
  <testsuite name="rest/history" timestamp="2024-08-07T12:38:10" tests="13" file="/home/runner/work/ably-js/ably-js/test/rest/history.test.js" time="17.692" failures="0">
    <testcase name="rest/history history_simple with binary protocol" time="1.102" classname="history_simple with binary protocol">
    </testcase>
    <testcase name="rest/history history_simple with text protocol" time="1.101" classname="history_simple with text protocol">
    </testcase>
    <testcase name="rest/history history_multiple with binary protocol" time="1.101" classname="history_multiple with binary protocol">
    </testcase>
    <testcase name="rest/history history_multiple with text protocol" time="1.106" classname="history_multiple with text protocol">
    </testcase>
    <testcase name="rest/history history_simple_paginated_b with binary protocol" time="2.227" classname="history_simple_paginated_b with binary protocol">
    </testcase>
    <testcase name="rest/history history_simple_paginated_b with text protocol" time="2.237" classname="history_simple_paginated_b with text protocol">
    </testcase>
    <testcase name="rest/history history_simple_paginated_f" time="2.267" classname="history_simple_paginated_f">
    </testcase>
    <testcase name="rest/history history_multiple_paginated_b" time="2.248" classname="history_multiple_paginated_b">
    </testcase>
    <testcase name="rest/history history_multiple_paginated_f" time="1.757" classname="history_multiple_paginated_f">
    </testcase>
    <testcase name="rest/history history_encoding_errors with binary protocol" time="1.102" classname="history_encoding_errors with binary protocol">
    </testcase>
    <testcase name="rest/history history_encoding_errors with text protocol" time="1.107" classname="history_encoding_errors with text protocol">
    </testcase>
    <testcase name="rest/history history_no_next_page with binary protocol" time="0.167" classname="history_no_next_page with binary protocol">
    </testcase>
    <testcase name="rest/history history_no_next_page with text protocol" time="0.164" classname="history_no_next_page with text protocol">
    </testcase>
  </testsuite>
  <testsuite name="rest/http" timestamp="2024-08-07T12:38:28" tests="2" file="/home/runner/work/ably-js/ably-js/test/rest/http.test.js" time="0.543" failures="0">
    <testcase name="rest/http Should send X-Ably-Version and Ably-Agent headers in get/post requests" time="0.541" classname="Should send X-Ably-Version and Ably-Agent headers in get/post requests">
    </testcase>
    <testcase name="rest/http Should handle no content responses" time="0.000" classname="Should handle no content responses">
    </testcase>
  </testsuite>
  <testsuite name="rest/init" timestamp="2024-08-07T12:38:28" tests="6" file="/home/runner/work/ably-js/ably-js/test/rest/init.test.js" time="0.434" failures="0">
    <testcase name="rest/init Init with key string" time="0.000" classname="Init with key string">
    </testcase>
    <testcase name="rest/init Init with token string" time="0.431" classname="Init with token string">
    </testcase>
    <testcase name="rest/init Init with tls: false" time="0.000" classname="Init with tls: false">
    </testcase>
    <testcase name="rest/init Init with tls: true" time="0.000" classname="Init with tls: true">
    </testcase>
    <testcase name="rest/init Init without any tls key should enable tls" time="0.000" classname="Init without any tls key should enable tls">
    </testcase>
    <testcase name="rest/init Init with clientId set to &apos;*&apos; or anything other than a string or null should error" time="0.000" classname="Init with clientId set to &apos;*&apos; or anything other than a string or null should error">
    </testcase>
  </testsuite>
  <testsuite name="rest/message" timestamp="2024-08-07T12:38:29" tests="7" file="/home/runner/work/ably-js/ably-js/test/rest/message.test.js" time="2.423" failures="0">
    <testcase name="rest/message Should implicitly send clientId when authenticated with clientId" time="0.179" classname="Should implicitly send clientId when authenticated with clientId">
    </testcase>
    <testcase name="rest/message Should publish clientId when provided explicitly in message" time="0.196" classname="Should publish clientId when provided explicitly in message">
    </testcase>
    <testcase name="rest/message Should error when clientId sent in message is different than authenticated clientId" time="0.384" classname="Should error when clientId sent in message is different than authenticated clientId">
    </testcase>
    <testcase name="rest/message Should error when publishing message larger than maxMessageSize" time="0.001" classname="Should error when publishing message larger than maxMessageSize">
    </testcase>
    <testcase name="rest/message Should send correct IDs when idempotentRestPublishing set to false" time="0.553" classname="Should send correct IDs when idempotentRestPublishing set to false">
    </testcase>
    <testcase name="rest/message Should add IDs when automatic idempotent rest publishing option enabled" time="0.189" classname="Should add IDs when automatic idempotent rest publishing option enabled">
    </testcase>
    <testcase name="rest/message Rest publish params" time="0.919" classname="Rest publish params">
    </testcase>
  </testsuite>
  <testsuite name="rest/presence" timestamp="2024-08-07T12:38:31" tests="4" file="/home/runner/work/ably-js/ably-js/test/rest/presence.test.js" time="0.560" failures="0">
    <testcase name="rest/presence Presence get simple" time="0.248" classname="Presence get simple">
    </testcase>
    <testcase name="rest/presence Presence history simple" time="0.218" classname="Presence history simple">
    </testcase>
    <testcase name="rest/presence Presence message JSON serialisation" time="0.094" classname="Presence message JSON serialisation">
    </testcase>
    <testcase name="rest/presence Presence get limits and filtering" time="0.000" classname="Presence get limits and filtering">
    </testcase>
  </testsuite>
  <testsuite name="rest/push" timestamp="2024-08-07T12:38:32" tests="9" file="/home/runner/work/ably-js/ably-js/test/rest/push.test.js" time="0.000" failures="0">
    <testcase name="rest/push Get subscriptions" time="1.086" classname="Get subscriptions">
    </testcase>
    <testcase name="rest/push Publish" time="0.599" classname="Publish">
    </testcase>
    <testcase name="rest/push deviceRegistrations save" time="1.378" classname="deviceRegistrations save">
    </testcase>
    <testcase name="rest/push deviceRegistrations get and list" time="2.107" classname="deviceRegistrations get and list">
    </testcase>
    <testcase name="rest/push deviceRegistrations remove removeWhere" time="2.758" classname="deviceRegistrations remove removeWhere">
    </testcase>
    <testcase name="rest/push channelSubscriptions save" time="0.941" classname="channelSubscriptions save">
    </testcase>
    <testcase name="rest/push channelSubscriptions get" time="1.471" classname="channelSubscriptions get">
    </testcase>
    <testcase name="rest/push push_channelSubscriptions_remove" time="0.783" classname="push_channelSubscriptions_remove">
    </testcase>
    <testcase name="rest/push channelSubscriptions listChannels" time="0.909" classname="channelSubscriptions listChannels">
    </testcase>
  </testsuite>
  <testsuite name="push activation" timestamp="2024-08-07T12:38:44" tests="13" file="/home/runner/work/ably-js/ably-js/test/rest/push.test.js" time="11.005" failures="0">
    <testcase name="rest/push push activation push_activation_succeeds" time="0.565" classname="push_activation_succeeds">
    </testcase>
    <testcase name="rest/push push activation device_push" time="0.280" classname="device_push">
    </testcase>
    <testcase name="rest/push push activation subscribe_client" time="1.216" classname="subscribe_client">
    </testcase>
    <testcase name="rest/push push activation subscribe_client_without_clientId" time="0.421" classname="subscribe_client_without_clientId">
    </testcase>
    <testcase name="rest/push push activation unsubscribe_client" time="1.958" classname="unsubscribe_client">
    </testcase>
    <testcase name="rest/push push activation direct_publish_client_id" time="0.817" classname="direct_publish_client_id">
    </testcase>
    <testcase name="rest/push push activation subscribe_device" time="1.007" classname="subscribe_device">
    </testcase>
    <testcase name="rest/push push activation unsubscribe_device" time="1.273" classname="unsubscribe_device">
    </testcase>
    <testcase name="rest/push push activation direct_publish_device_id" time="0.718" classname="direct_publish_device_id">
    </testcase>
    <testcase name="rest/push push activation push_channel_subscription_device_id" time="0.996" classname="push_channel_subscription_device_id">
    </testcase>
    <testcase name="rest/push push activation push_channel_subscription_client_id" time="1.621" classname="push_channel_subscription_client_id">
    </testcase>
    <testcase name="rest/push push activation failed_getting_device_details" time="0.001" classname="failed_getting_device_details">
    </testcase>
    <testcase name="rest/push push activation failed_registration" time="0.124" classname="failed_registration">
    </testcase>
  </testsuite>
  <testsuite name="rest/request" timestamp="2024-08-07T12:38:55" tests="16" file="/home/runner/work/ably-js/ably-js/test/rest/request.test.js" time="2.470" failures="0">
    <testcase name="rest/request request_version with binary protocol" time="0.001" classname="request_version with binary protocol">
    </testcase>
    <testcase name="rest/request request_version with text protocol" time="0.000" classname="request_version with text protocol">
    </testcase>
    <testcase name="rest/request request_time with binary protocol" time="0.086" classname="request_time with binary protocol">
    </testcase>
    <testcase name="rest/request request_time with text protocol" time="0.093" classname="request_time with text protocol">
    </testcase>
    <testcase name="rest/request request_404 with binary protocol" time="0.391" classname="request_404 with binary protocol">
    </testcase>
    <testcase name="rest/request request_404 with text protocol" time="0.343" classname="request_404 with text protocol">
    </testcase>
    <testcase name="rest/request request_network_error" time="0.016" classname="request_network_error">
    </testcase>
    <testcase name="rest/request request_post_get_messages with binary protocol" time="0.466" classname="request_post_get_messages with binary protocol">
    </testcase>
    <testcase name="rest/request request_post_get_messages with text protocol" time="0.479" classname="request_post_get_messages with text protocol">
    </testcase>
    <testcase name="rest/request request_batch_api_success with binary protocol" time="0.093" classname="request_batch_api_success with binary protocol">
    </testcase>
    <testcase name="rest/request request_batch_api_success with text protocol" time="0.092" classname="request_batch_api_success with text protocol">
    </testcase>
    <testcase name="rest/request checkput" time="0.258" classname="checkput">
    </testcase>
    <testcase name="rest/request checkpatch" time="0.074" classname="checkpatch">
    </testcase>
    <testcase name="rest/request checkdelete" time="0.075" classname="checkdelete">
    </testcase>
  </testsuite>
  <testsuite name="rest/stats" timestamp="2024-08-07T12:38:57" tests="11" file="/home/runner/work/ably-js/ably-js/test/rest/stats.test.js" time="22.725" failures="0">
    <testcase name="rest/stats contains expected fields" time="10.378" classname="contains expected fields">
    </testcase>
    <testcase name="rest/stats appstats_minute0" time="0.164" classname="appstats_minute0">
    </testcase>
    <testcase name="rest/stats appstats_minute1" time="0.128" classname="appstats_minute1">
    </testcase>
    <testcase name="rest/stats appstats_hour0" time="0.134" classname="appstats_hour0">
    </testcase>
    <testcase name="rest/stats appstats_limit_backwards" time="0.147" classname="appstats_limit_backwards">
    </testcase>
    <testcase name="rest/stats appstats_limit_forwards" time="0.110" classname="appstats_limit_forwards">
    </testcase>
    <testcase name="rest/stats appstats_pagination_backwards" time="0.476" classname="appstats_pagination_backwards">
    </testcase>
    <testcase name="rest/stats appstats_pagination_forwards" time="0.486" classname="appstats_pagination_forwards">
    </testcase>
    <testcase name="rest/stats appstats_pagination_omitted" time="0.438" classname="appstats_pagination_omitted">
    </testcase>
  </testsuite>
  <testsuite name="rest/status" timestamp="2024-08-07T12:39:20" tests="2" file="/home/runner/work/ably-js/ably-js/test/rest/status.test.js" time="0.256" failures="0">
    <testcase name="rest/status status0 with binary protocol" time="0.167" classname="status0 with binary protocol">
    </testcase>
    <testcase name="rest/status status0 with text protocol" time="0.087" classname="status0 with text protocol">
    </testcase>
  </testsuite>
  <testsuite name="rest/time" timestamp="2024-08-07T12:39:20" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/time.test.js" time="6.175" failures="0">
    <testcase name="rest/time time0" time="0.082" classname="time0">
    </testcase>
  </testsuite>
</testsuites>