<testsuites name="Mocha Tests" time="11741.244" tests="597" failures="353" skipped="33">
  <testsuite name="Root Suite" timestamp="2024-03-05T19:52:20" tests="0" time="0.000" failures="0">
  </testsuite>
  <testsuite name="realtime/api" timestamp="2024-03-05T19:52:20" tests="4" file="/home/runner/work/ably-js/ably-js/test/realtime/api.test.js" time="0.005" failures="0">
    <testcase name="realtime/api Client constructors" time="0.000" classname="Client constructors">
    </testcase>
    <testcase name="realtime/api Crypto" time="0.000" classname="Crypto">
    </testcase>
    <testcase name="realtime/api Message" time="0.001" classname="Message">
    </testcase>
    <testcase name="realtime/api PresenceMessage" time="0.000" classname="PresenceMessage">
    </testcase>
  </testsuite>
  <testsuite name="realtime/auth" timestamp="2024-03-05T19:52:20" tests="83" file="/home/runner/work/ably-js/ably-js/test/realtime/auth.test.js" time="2434.720" failures="40">
    <testcase name="realtime/auth authbase0" time="0.263" classname="authbase0">
    </testcase>
    <testcase name="realtime/auth auth_useAuthUrl_json" time="60.002" classname="auth_useAuthUrl_json">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_useAuthUrl_post_json" time="60.001" classname="auth_useAuthUrl_post_json">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_useAuthUrl_plainText" time="60.006" classname="auth_useAuthUrl_plainText">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_useAuthCallback_tokenRequestResponse" time="60.007" classname="auth_useAuthCallback_tokenRequestResponse">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_useAuthCallback_tokenDetailsResponse" time="60.000" classname="auth_useAuthCallback_tokenDetailsResponse">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_useAuthCallback_tokenStringResponse" time="60.005" classname="auth_useAuthCallback_tokenStringResponse">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_useAuthUrl_mixed_authParams_qsParams" time="60.000" classname="auth_useAuthUrl_mixed_authParams_qsParams">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_clientid_inheritance" time="60.001" classname="auth_clientid_inheritance">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_clientid_inheritance2" time="0.076" classname="auth_clientid_inheritance2">
    </testcase>
    <testcase name="realtime/auth auth_clientid_inheritance3" time="60.000" classname="auth_clientid_inheritance3">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_clientid_inheritance4" time="60.000" classname="auth_clientid_inheritance4">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_clientid_inheritance5" time="60.001" classname="auth_clientid_inheritance5">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth authCallback_error" time="0.002" classname="authCallback_error">
    </testcase>
    <testcase name="realtime/auth authCallback_timeout" time="0.100" classname="authCallback_timeout">
    </testcase>
    <testcase name="realtime/auth authCallback_nothing" time="0.001" classname="authCallback_nothing">
    </testcase>
    <testcase name="realtime/auth authCallback_malformed" time="0.001" classname="authCallback_malformed">
    </testcase>
    <testcase name="realtime/auth authCallback_too_long_string" time="0.016" classname="authCallback_too_long_string">
    </testcase>
    <testcase name="realtime/auth authCallback_empty_string" time="0.001" classname="authCallback_empty_string">
    </testcase>
    <testcase name="realtime/auth authUrl_timeout" time="0.101" classname="authUrl_timeout">
    </testcase>
    <testcase name="realtime/auth authUrl_404" time="0.020" classname="authUrl_404">
    </testcase>
    <testcase name="realtime/auth authUrl_wrong_content_type" time="0.007" classname="authUrl_wrong_content_type">
    </testcase>
    <testcase name="realtime/auth authUrl_401" time="0.433" classname="authUrl_401">
    </testcase>
    <testcase name="realtime/auth authUrl_double_encoded" time="0.139" classname="authUrl_double_encoded">
    </testcase>
    <testcase name="realtime/auth authUrl_403" time="0.139" classname="authUrl_403">
    </testcase>
    <testcase name="realtime/auth authUrl_403_custom_error" time="0.138" classname="authUrl_403_custom_error">
    </testcase>
    <testcase name="realtime/auth authUrl_403_previously_active" time="60.000" classname="authUrl_403_previously_active">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_token_expires_with_web_socket_binary_transport" time="60.001" classname="auth_token_expires_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_token_expires_with_web_socket_text_transport" time="60.002" classname="auth_token_expires_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_token_expires_with_comet_binary_transport" time="5.038" classname="auth_token_expires_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_expires_with_comet_text_transport" time="5.034" classname="auth_token_expires_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_expires_with_binary_transport" time="5.033" classname="auth_token_expires_with_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_expires_with_text_transport" time="5.034" classname="auth_token_expires_with_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_query_time_once" time="0.243" classname="auth_query_time_once">
    </testcase>
    <testcase name="realtime/auth auth_tokenDetails_expiry_with_authcallback_with_web_socket_binary_transport" time="60.002" classname="auth_tokenDetails_expiry_with_authcallback_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_tokenDetails_expiry_with_authcallback_with_web_socket_text_transport" time="60.000" classname="auth_tokenDetails_expiry_with_authcallback_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_tokenDetails_expiry_with_authcallback_with_comet_binary_transport" time="5.605" classname="auth_tokenDetails_expiry_with_authcallback_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_tokenDetails_expiry_with_authcallback_with_comet_text_transport" time="5.395" classname="auth_tokenDetails_expiry_with_authcallback_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_tokenDetails_expiry_with_authcallback_with_binary_transport" time="5.366" classname="auth_tokenDetails_expiry_with_authcallback_with_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_tokenDetails_expiry_with_authcallback_with_text_transport" time="5.393" classname="auth_tokenDetails_expiry_with_authcallback_with_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_authcallback_with_web_socket_binary_transport" time="60.001" classname="auth_token_string_expiry_with_authcallback_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_authcallback_with_web_socket_text_transport" time="60.007" classname="auth_token_string_expiry_with_authcallback_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_authcallback_with_comet_binary_transport" time="5.423" classname="auth_token_string_expiry_with_authcallback_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_authcallback_with_comet_text_transport" time="5.417" classname="auth_token_string_expiry_with_authcallback_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_authcallback_with_binary_transport" time="5.367" classname="auth_token_string_expiry_with_authcallback_with_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_authcallback_with_text_transport" time="5.357" classname="auth_token_string_expiry_with_authcallback_with_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_token_with_web_socket_binary_transport" time="60.001" classname="auth_token_string_expiry_with_token_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_token_with_web_socket_text_transport" time="60.002" classname="auth_token_string_expiry_with_token_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_token_with_comet_binary_transport" time="5.036" classname="auth_token_string_expiry_with_token_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_token_with_comet_text_transport" time="5.036" classname="auth_token_string_expiry_with_token_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_token_with_binary_transport" time="5.033" classname="auth_token_string_expiry_with_token_with_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_token_string_expiry_with_token_with_text_transport" time="5.032" classname="auth_token_string_expiry_with_token_with_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_expired_token_string_with_web_socket_binary_transport" time="60.004" classname="auth_expired_token_string_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_expired_token_string_with_web_socket_text_transport" time="60.002" classname="auth_expired_token_string_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_expired_token_string_with_comet_binary_transport" time="0.280" classname="auth_expired_token_string_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_expired_token_string_with_comet_text_transport" time="0.433" classname="auth_expired_token_string_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/auth auth_expired_token_string_with_binary_transport" time="0.450" classname="auth_expired_token_string_with_binary_transport">
    </testcase>
    <testcase name="realtime/auth auth_expired_token_string_with_text_transport" time="0.426" classname="auth_expired_token_string_with_text_transport">
    </testcase>
    <testcase name="realtime/auth authorize_updates_stored_details" time="0.001" classname="authorize_updates_stored_details">
    </testcase>
    <testcase name="realtime/auth mocked_reauth" time="60.001" classname="mocked_reauth">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_jwt_with_clientid" time="60.000" classname="auth_jwt_with_clientid">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_jwt_with_clientid_application_jwt" time="60.000" classname="auth_jwt_with_clientid_application_jwt">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_jwt_with_subscribe_only_capability" time="60.001" classname="auth_jwt_with_subscribe_only_capability">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_jwt_with_publish_capability" time="60.002" classname="auth_jwt_with_publish_capability">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_jwt_with_token_that_expires" time="60.000" classname="auth_jwt_with_token_that_expires">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth auth_jwt_with_token_that_renews" time="60.000" classname="auth_jwt_with_token_that_renews">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth init_client_with_simple_jwt_token" time="60.000" classname="init_client_with_simple_jwt_token">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth reauth_consistently_expired_token" time="3.202" classname="reauth_consistently_expired_token">
      <failure message="expected 1 to equal 2" type="AssertionError"><![CDATA[AssertionError: expected 1 to equal 2
    at Timeout._onTimeout (test/realtime/auth.test.js:1244:48)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)

      + expected - actual

      -1
      +2
      ]]></failure>
    </testcase>
    <testcase name="realtime/auth expired_token_no_autoremove_when_dont_have_servertime" time="60.000" classname="expired_token_no_autoremove_when_dont_have_servertime">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth expired_token_autoremove_when_have_servertime" time="60.000" classname="expired_token_autoremove_when_have_servertime">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth multiple_concurrent_authorize" time="60.001" classname="multiple_concurrent_authorize">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth authorize_immediately_after_init_with_web_socket_binary_transport" time="60.001" classname="authorize_immediately_after_init_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth authorize_immediately_after_init_with_web_socket_text_transport" time="60.000" classname="authorize_immediately_after_init_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth authorize_immediately_after_init_with_comet_binary_transport" time="59.999" classname="authorize_immediately_after_init_with_comet_binary_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth authorize_immediately_after_init_with_comet_text_transport" time="60.000" classname="authorize_immediately_after_init_with_comet_text_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth authorize_immediately_after_init_with_binary_transport" time="60.000" classname="authorize_immediately_after_init_with_binary_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/auth authorize_immediately_after_init_with_text_transport" time="60.000" classname="authorize_immediately_after_init_with_text_transport">
      <failure message="Timeout of 60000ms 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/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/channel" timestamp="2024-03-05T20:32:55" tests="118" file="/home/runner/work/ably-js/ably-js/test/realtime/channel.test.js" time="2859.087" failures="76">
    <testcase name="realtime/channel channelinit0_with_web_socket_binary_transport" time="60.001" classname="channelinit0_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelinit0_with_web_socket_text_transport" time="60.000" classname="channelinit0_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelinit0_with_comet_binary_transport" time="0.130" classname="channelinit0_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelinit0_with_comet_text_transport" time="0.339" classname="channelinit0_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/channel channelinit0_with_binary_transport" time="0.360" classname="channelinit0_with_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelinit0_with_text_transport" time="0.327" classname="channelinit0_with_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattach0_with_web_socket_binary_transport" time="60.001" classname="channelattach0_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattach0_with_web_socket_text_transport" time="60.000" classname="channelattach0_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattach0_with_comet_binary_transport" time="0.588" classname="channelattach0_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattach0_with_comet_text_transport" time="0.356" classname="channelattach0_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattach0_with_binary_transport" time="0.400" classname="channelattach0_with_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattach0_with_text_transport" time="0.413" classname="channelattach0_with_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattach2_with_web_socket_binary_transport" time="60.000" classname="channelattach2_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattach2_with_web_socket_text_transport" time="60.001" classname="channelattach2_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattach2_with_comet_binary_transport" time="0.413" classname="channelattach2_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattach2_with_comet_text_transport" time="0.532" classname="channelattach2_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattach2_with_binary_transport" time="0.532" classname="channelattach2_with_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattach2_with_text_transport" time="0.380" classname="channelattach2_with_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattachempty_with_web_socket_binary_transport" time="60.001" classname="channelattachempty_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattachempty_with_web_socket_text_transport" time="60.000" classname="channelattachempty_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattachempty_with_comet_binary_transport" time="1.441" classname="channelattachempty_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattachempty_with_comet_text_transport" time="1.188" classname="channelattachempty_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattachempty_with_binary_transport" time="1.401" classname="channelattachempty_with_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattachempty_with_text_transport" time="1.385" classname="channelattachempty_with_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattachinvalid_with_web_socket_binary_transport" time="60.001" classname="channelattachinvalid_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattachinvalid_with_web_socket_text_transport" time="60.000" classname="channelattachinvalid_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattachinvalid_with_comet_binary_transport" time="1.500" classname="channelattachinvalid_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattachinvalid_with_comet_text_transport" time="1.354" classname="channelattachinvalid_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattachinvalid_with_binary_transport" time="1.683" classname="channelattachinvalid_with_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattachinvalid_with_text_transport" time="1.404" classname="channelattachinvalid_with_text_transport">
    </testcase>
    <testcase name="realtime/channel publish_no_attach_with_web_socket_binary_transport" time="60.001" classname="publish_no_attach_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel publish_no_attach_with_web_socket_text_transport" time="60.001" classname="publish_no_attach_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel publish_no_attach_with_comet_binary_transport" time="0.204" classname="publish_no_attach_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/channel publish_no_attach_with_comet_text_transport" time="0.346" classname="publish_no_attach_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/channel publish_no_attach_with_binary_transport" time="0.419" classname="publish_no_attach_with_binary_transport">
    </testcase>
    <testcase name="realtime/channel publish_no_attach_with_text_transport" time="0.381" classname="publish_no_attach_with_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattach_publish_invalid_with_web_socket_binary_transport" time="60.000" classname="channelattach_publish_invalid_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattach_publish_invalid_with_web_socket_text_transport" time="60.000" classname="channelattach_publish_invalid_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattach_publish_invalid_with_comet_binary_transport" time="0.365" classname="channelattach_publish_invalid_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattach_publish_invalid_with_comet_text_transport" time="0.390" classname="channelattach_publish_invalid_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattach_publish_invalid_with_binary_transport" time="0.391" classname="channelattach_publish_invalid_with_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattach_publish_invalid_with_text_transport" time="0.411" classname="channelattach_publish_invalid_with_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattach_invalid_twice_with_web_socket_binary_transport" time="60.000" classname="channelattach_invalid_twice_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattach_invalid_twice_with_web_socket_text_transport" time="60.002" classname="channelattach_invalid_twice_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattach_invalid_twice_with_comet_binary_transport" time="1.294" classname="channelattach_invalid_twice_with_comet_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattach_invalid_twice_with_comet_text_transport" time="1.232" classname="channelattach_invalid_twice_with_comet_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattach_invalid_twice_with_binary_transport" time="1.446" classname="channelattach_invalid_twice_with_binary_transport">
    </testcase>
    <testcase name="realtime/channel channelattach_invalid_twice_with_text_transport" time="1.460" classname="channelattach_invalid_twice_with_text_transport">
    </testcase>
    <testcase name="realtime/channel channelattachOnceOrIfAfter" time="60.000" classname="channelattachOnceOrIfAfter">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelattachOnceOrIfBefore" time="60.000" classname="channelattachOnceOrIfBefore">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicChannelsGet_with_web_socket_binary_transport" time="60.001" classname="attachWithChannelParamsBasicChannelsGet_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicChannelsGet_with_web_socket_text_transport" time="60.000" classname="attachWithChannelParamsBasicChannelsGet_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicChannelsGet_with_comet_binary_transport" time="0.549" classname="attachWithChannelParamsBasicChannelsGet_with_comet_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicChannelsGet_with_comet_text_transport" time="0.434" classname="attachWithChannelParamsBasicChannelsGet_with_comet_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicChannelsGet_with_binary_transport" time="0.480" classname="attachWithChannelParamsBasicChannelsGet_with_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicChannelsGet_with_text_transport" time="0.569" classname="attachWithChannelParamsBasicChannelsGet_with_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicSetOptions_with_web_socket_binary_transport" time="60.000" classname="attachWithChannelParamsBasicSetOptions_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicSetOptions_with_web_socket_text_transport" time="60.001" classname="attachWithChannelParamsBasicSetOptions_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicSetOptions_with_comet_binary_transport" time="0.299" classname="attachWithChannelParamsBasicSetOptions_with_comet_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicSetOptions_with_comet_text_transport" time="0.390" classname="attachWithChannelParamsBasicSetOptions_with_comet_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicSetOptions_with_binary_transport" time="0.553" classname="attachWithChannelParamsBasicSetOptions_with_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsBasicSetOptions_with_text_transport" time="0.488" classname="attachWithChannelParamsBasicSetOptions_with_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel subscribeAfterSetOptions_with_web_socket_binary_transport" time="60.000" classname="subscribeAfterSetOptions_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel subscribeAfterSetOptions_with_web_socket_text_transport" time="60.000" classname="subscribeAfterSetOptions_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel subscribeAfterSetOptions_with_comet_binary_transport" time="0.503" classname="subscribeAfterSetOptions_with_comet_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel subscribeAfterSetOptions_with_comet_text_transport" time="0.559" classname="subscribeAfterSetOptions_with_comet_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel subscribeAfterSetOptions_with_binary_transport" time="0.473" classname="subscribeAfterSetOptions_with_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel subscribeAfterSetOptions_with_text_transport" time="0.459" classname="subscribeAfterSetOptions_with_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelGetShouldThrowWhenWouldCauseReattach" time="60.001" classname="channelGetShouldThrowWhenWouldCauseReattach">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel setOptionsCallbackBehaviour_with_web_socket_binary_transport" time="60.000" classname="setOptionsCallbackBehaviour_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel setOptionsCallbackBehaviour_with_web_socket_text_transport" time="60.000" classname="setOptionsCallbackBehaviour_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel setOptionsCallbackBehaviour_with_comet_binary_transport" time="0.449" classname="setOptionsCallbackBehaviour_with_comet_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel setOptionsCallbackBehaviour_with_comet_text_transport" time="0.317" classname="setOptionsCallbackBehaviour_with_comet_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel setOptionsCallbackBehaviour_with_binary_transport" time="0.606" classname="setOptionsCallbackBehaviour_with_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel setOptionsCallbackBehaviour_with_text_transport" time="0.482" classname="setOptionsCallbackBehaviour_with_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsModesAndChannelModes_with_web_socket_binary_transport" time="60.001" classname="attachWithChannelParamsModesAndChannelModes_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsModesAndChannelModes_with_web_socket_text_transport" time="60.000" classname="attachWithChannelParamsModesAndChannelModes_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsModesAndChannelModes_with_comet_binary_transport" time="0.302" classname="attachWithChannelParamsModesAndChannelModes_with_comet_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsModesAndChannelModes_with_comet_text_transport" time="0.394" classname="attachWithChannelParamsModesAndChannelModes_with_comet_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsModesAndChannelModes_with_binary_transport" time="0.490" classname="attachWithChannelParamsModesAndChannelModes_with_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsModesAndChannelModes_with_text_transport" time="0.696" classname="attachWithChannelParamsModesAndChannelModes_with_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelModes_with_web_socket_binary_transport" time="60.001" classname="attachWithChannelModes_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelModes_with_web_socket_text_transport" time="60.000" classname="attachWithChannelModes_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelModes_with_comet_binary_transport" time="0.494" classname="attachWithChannelModes_with_comet_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelModes_with_comet_text_transport" time="0.540" classname="attachWithChannelModes_with_comet_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelModes_with_binary_transport" time="0.674" classname="attachWithChannelModes_with_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelModes_with_text_transport" time="0.781" classname="attachWithChannelModes_with_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsDeltaAndModes_with_web_socket_binary_transport" time="60.002" classname="attachWithChannelParamsDeltaAndModes_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsDeltaAndModes_with_web_socket_text_transport" time="60.000" classname="attachWithChannelParamsDeltaAndModes_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsDeltaAndModes_with_comet_binary_transport" time="0.554" classname="attachWithChannelParamsDeltaAndModes_with_comet_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsDeltaAndModes_with_comet_text_transport" time="0.418" classname="attachWithChannelParamsDeltaAndModes_with_comet_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsDeltaAndModes_with_binary_transport" time="0.732" classname="attachWithChannelParamsDeltaAndModes_with_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithChannelParamsDeltaAndModes_with_text_transport" time="0.468" classname="attachWithChannelParamsDeltaAndModes_with_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/channel attachWithInvalidChannelParams" time="60.000" classname="attachWithInvalidChannelParams">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelsubscribe0" time="60.000" classname="channelsubscribe0">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel channelsubscribe1" time="60.002" classname="channelsubscribe1">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel server_sent_detached" time="60.001" classname="server_sent_detached">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel server_sent_detached_while_attaching" time="60.003" classname="server_sent_detached_while_attaching">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel server_sent_error" time="60.000" classname="server_sent_error">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel server_sent_attached_err" time="60.000" classname="server_sent_attached_err">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel publish_no_queueing" time="0.002" classname="publish_no_queueing">
    </testcase>
    <testcase name="realtime/channel channel_attach_timeout" time="60.000" classname="channel_attach_timeout">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel suspended_connection" time="60.000" classname="suspended_connection">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attached_while_detaching" time="60.001" classname="attached_while_detaching">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel detaching from suspended channel transitions channel to detached state" time="0.001" classname="detaching from suspended channel transitions channel to detached state">
    </testcase>
    <testcase name="realtime/channel detaching from failed channel results in error" time="0.000" classname="detaching from failed channel results in error">
    </testcase>
    <testcase name="realtime/channel rewind works on channel after reattaching" time="60.000" classname="rewind works on channel after reattaching">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel attach_returns_state_change" time="60.000" classname="attach_returns_state_change">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel subscribe_returns_state_change" time="60.000" classname="subscribe_returns_state_change">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel rewind_has_backlog_0" time="60.000" classname="rewind_has_backlog_0">
      <failure message="Timeout of 60000ms 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/channel.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/channel.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/channel rewind_has_backlog_1" time="0.375" classname="rewind_has_backlog_1">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/channel should not throw exception then run RealtimeChannels.get() with same options" time="0.001" classname="should not throw exception then run RealtimeChannels.get() with same options">
    </testcase>
  </testsuite>
  <testsuite name="realtime/connection" timestamp="2024-03-05T21:20:34" tests="6" file="/home/runner/work/ably-js/ably-js/test/realtime/connection.test.js" time="360.008" failures="6">
    <testcase name="realtime/connection connectionPing" time="60.001" classname="connectionPing">
      <failure message="Timeout of 60000ms 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/connection.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/connection.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/connection connectionPingWithCallback" time="60.000" classname="connectionPingWithCallback">
      <failure message="Timeout of 60000ms 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/connection.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/connection.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/connection connectionAttributes" time="60.001" classname="connectionAttributes">
      <failure message="Timeout of 60000ms 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/connection.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/connection.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/connection unrecoverableConnection" time="60.000" classname="unrecoverableConnection">
      <failure message="Timeout of 60000ms 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/connection.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/connection.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/connection connectionQueuing" time="60.000" classname="connectionQueuing">
      <failure message="Timeout of 60000ms 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/connection.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/connection.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/connection connectionDetails" time="60.000" classname="connectionDetails">
      <failure message="Timeout of 60000ms 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/connection.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/connection.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/connectivity" timestamp="2024-03-05T21:26:34" tests="2" file="/home/runner/work/ably-js/ably-js/test/realtime/connectivity.test.js" time="0.000" failures="0">
    <testcase name="realtime/connectivity http_connectivity_check" time="0.044" classname="http_connectivity_check">
    </testcase>
    <testcase name="realtime/connectivity disable_connectivity_check" time="0.001" classname="disable_connectivity_check">
    </testcase>
  </testsuite>
  <testsuite name="configured_connectivity_check_url" timestamp="2024-03-05T21:26:34" tests="6" file="/home/runner/work/ably-js/ably-js/test/realtime/connectivity.test.js" time="1.342" failures="0">
    <testcase name="realtime/connectivity configured_connectivity_check_url succeeds with scheme" time="0.439" classname="succeeds with scheme">
    </testcase>
    <testcase name="realtime/connectivity configured_connectivity_check_url fails with scheme" time="0.139" classname="fails with scheme">
    </testcase>
    <testcase name="realtime/connectivity configured_connectivity_check_url succeeds with querystring" time="0.139" classname="succeeds with querystring">
    </testcase>
    <testcase name="realtime/connectivity configured_connectivity_check_url fails with querystring" time="0.138" classname="fails with querystring">
    </testcase>
    <testcase name="realtime/connectivity configured_connectivity_check_url succeeds with plain url" time="0.348" classname="succeeds with plain url">
    </testcase>
    <testcase name="realtime/connectivity configured_connectivity_check_url fails with plain url" time="0.138" classname="fails with plain url">
    </testcase>
  </testsuite>
  <testsuite name="realtime/crypto" timestamp="2024-03-05T21:26:35" tests="39" file="/home/runner/work/ably-js/ably-js/test/realtime/crypto.test.js" time="1024.565" failures="25">
    <testcase name="realtime/crypto generateRandomKey0" time="0.000" classname="generateRandomKey0">
    </testcase>
    <testcase name="realtime/crypto generateRandomKey1" time="0.000" classname="generateRandomKey1">
    </testcase>
    <testcase name="realtime/crypto getDefaultParams_withResultOfGenerateRandomKey" time="0.000" classname="getDefaultParams_withResultOfGenerateRandomKey">
    </testcase>
    <testcase name="realtime/crypto getDefaultParams_ArrayBuffer_key" time="0.001" classname="getDefaultParams_ArrayBuffer_key">
    </testcase>
    <testcase name="realtime/crypto getDefaultParams_base64_key" time="0.000" classname="getDefaultParams_base64_key">
    </testcase>
    <testcase name="realtime/crypto getDefaultParams_check_keylength" time="0.000" classname="getDefaultParams_check_keylength">
    </testcase>
    <testcase name="realtime/crypto getDefaultParams_preserves_custom_algorithms" time="0.001" classname="getDefaultParams_preserves_custom_algorithms">
    </testcase>
    <testcase name="realtime/crypto encrypt_message_128" time="0.006" classname="encrypt_message_128">
    </testcase>
    <testcase name="realtime/crypto encrypt_message_256" time="0.039" classname="encrypt_message_256">
    </testcase>
    <testcase name="realtime/crypto decrypt_message_128" time="0.003" classname="decrypt_message_128">
    </testcase>
    <testcase name="realtime/crypto decrypt_message_256" time="0.019" classname="decrypt_message_256">
    </testcase>
    <testcase name="realtime/crypto fromEncoded_cipher_options" time="0.009" classname="fromEncoded_cipher_options">
    </testcase>
    <testcase name="realtime/crypto msgpack_128" time="0.005" classname="msgpack_128">
    </testcase>
    <testcase name="realtime/crypto msgpack_256" time="0.034" classname="msgpack_256">
    </testcase>
    <testcase name="realtime/crypto single_send_128_with_web_socket_binary_transport" time="60.000" classname="single_send_128_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_128_with_web_socket_text_transport" time="60.000" classname="single_send_128_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_128_with_comet_binary_transport" time="0.475" classname="single_send_128_with_comet_binary_transport">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at NodeCometTransport.__webpack_modules__.3546.CometTransport.onData (build/ably-node.js:5996:83)
    at Object.<anonymous> (build/ably-node.js:5820:31)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Request.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at Request.complete (build/ably-node.js:11722:12)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11713:14
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_128_with_comet_text_transport" time="0.747" classname="single_send_128_with_comet_text_transport">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at NodeCometTransport.__webpack_modules__.3546.CometTransport.onData (build/ably-node.js:5996:83)
    at Object.<anonymous> (build/ably-node.js:5820:31)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Request.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at Request.complete (build/ably-node.js:11722:12)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11713:14
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_128_with_binary_transport" time="0.656" classname="single_send_128_with_binary_transport">
      <failure message="No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)" type="Error"><![CDATA[Error: No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at deserialize (build/ably-node.js:9188:12)
    at WebSocketTransport.__webpack_modules__.2346.WebSocketTransport.onWsData (build/ably-node.js:8171:70)
    at WebSocket.wsConnection.onmessage (build/ably-node.js:8132:26)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1209:20)
    at /home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:581:16
    at internal/process/task_queues.js:153:7
    at AsyncResource.runInAsyncScope (async_hooks.js:189:9)
    at AsyncResource.runMicrotask (internal/process/task_queues.js:150:8)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_128_with_text_transport" time="0.515" classname="single_send_128_with_text_transport">
      <failure message="No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)" type="Error"><![CDATA[Error: No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at deserialize (build/ably-node.js:9188:12)
    at WebSocketTransport.__webpack_modules__.2346.WebSocketTransport.onWsData (build/ably-node.js:8171:70)
    at WebSocket.wsConnection.onmessage (build/ably-node.js:8132:26)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1209:20)
    at /home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:608:16
    at internal/process/task_queues.js:153:7
    at AsyncResource.runInAsyncScope (async_hooks.js:189:9)
    at AsyncResource.runMicrotask (internal/process/task_queues.js:150:8)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_256_with_web_socket_binary_transport" time="60.001" classname="single_send_256_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_256_with_web_socket_text_transport" time="60.000" classname="single_send_256_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_256_with_comet_binary_transport" time="0.381" classname="single_send_256_with_comet_binary_transport">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at NodeCometTransport.__webpack_modules__.3546.CometTransport.onData (build/ably-node.js:5996:83)
    at Object.<anonymous> (build/ably-node.js:5820:31)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Request.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at Request.complete (build/ably-node.js:11722:12)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11713:14
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_256_with_comet_text_transport" time="0.392" classname="single_send_256_with_comet_text_transport">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at NodeCometTransport.__webpack_modules__.3546.CometTransport.onData (build/ably-node.js:5996:83)
    at Object.<anonymous> (build/ably-node.js:5820:31)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Request.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at Request.complete (build/ably-node.js:11722:12)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11713:14
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_256_with_binary_transport" time="0.654" classname="single_send_256_with_binary_transport">
      <failure message="No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)" type="Error"><![CDATA[Error: No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at deserialize (build/ably-node.js:9188:12)
    at WebSocketTransport.__webpack_modules__.2346.WebSocketTransport.onWsData (build/ably-node.js:8171:70)
    at WebSocket.wsConnection.onmessage (build/ably-node.js:8132:26)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1209:20)
    at /home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:581:16
    at internal/process/task_queues.js:153:7
    at AsyncResource.runInAsyncScope (async_hooks.js:189:9)
    at AsyncResource.runMicrotask (internal/process/task_queues.js:150:8)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_256_with_text_transport" time="0.585" classname="single_send_256_with_text_transport">
      <failure message="No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)" type="Error"><![CDATA[Error: No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at deserialize (build/ably-node.js:9188:12)
    at WebSocketTransport.__webpack_modules__.2346.WebSocketTransport.onWsData (build/ably-node.js:8171:70)
    at WebSocket.wsConnection.onmessage (build/ably-node.js:8132:26)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1209:20)
    at /home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:608:16
    at internal/process/task_queues.js:153:7
    at AsyncResource.runInAsyncScope (async_hooks.js:189:9)
    at AsyncResource.runMicrotask (internal/process/task_queues.js:150:8)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/crypto multiple_send_binary_2_200" time="60.000" classname="multiple_send_binary_2_200">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto multiple_send_text_2_200" time="60.000" classname="multiple_send_text_2_200">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto multiple_send_binary_20_100" time="60.000" classname="multiple_send_binary_20_100">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto multiple_send_text_20_100" time="60.000" classname="multiple_send_text_20_100">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto multiple_send_binary_10_10" time="60.000" classname="multiple_send_binary_10_10">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto multiple_send_text_10_10" time="60.000" classname="multiple_send_text_10_10">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_binary_text" time="60.000" classname="single_send_binary_text">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_text_binary" time="60.000" classname="single_send_text_binary">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto publish_immediately" time="60.001" classname="publish_immediately">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_key_mismatch" time="60.000" classname="single_send_key_mismatch">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_unencrypted" time="60.000" classname="single_send_unencrypted">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto single_send_encrypted_unhandled" time="60.001" classname="single_send_encrypted_unhandled">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/crypto set_cipher_params0" time="60.002" classname="set_cipher_params0">
      <failure message="Timeout of 60000ms 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/crypto.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/crypto.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/delta" timestamp="2024-03-05T21:43:40" tests="4" file="/home/runner/work/ably-js/ably-js/test/realtime/delta.test.js" time="240.008" failures="4">
    <testcase name="realtime/delta deltaPlugin" time="60.000" classname="deltaPlugin">
      <failure message="Timeout of 60000ms 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/delta.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/delta.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/delta unusedPlugin" time="60.000" classname="unusedPlugin">
      <failure message="Timeout of 60000ms 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/delta.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/delta.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/delta lastMessageNotFoundRecovery" time="60.000" classname="lastMessageNotFoundRecovery">
      <failure message="Timeout of 60000ms 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/delta.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/delta.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/delta deltaDecodeFailureRecovery" time="59.999" classname="deltaDecodeFailureRecovery">
      <failure message="Timeout of 60000ms 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/delta.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/delta.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/encoding" timestamp="2024-03-05T21:47:40" tests="2" file="/home/runner/work/ably-js/ably-js/test/realtime/encoding.test.js" time="120.002" failures="2">
    <testcase name="realtime/encoding message_decoding" time="60.001" classname="message_decoding">
      <failure message="Timeout of 60000ms 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/encoding.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/encoding.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/encoding message_encoding" time="60.000" classname="message_encoding">
      <failure message="Timeout of 60000ms 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/encoding.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/encoding.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/event_emitter" timestamp="2024-03-05T21:49:40" tests="13" file="/home/runner/work/ably-js/ably-js/test/realtime/event_emitter.test.js" time="0.000" failures="1">
    <testcase name="realtime/event_emitter attachdetach0" time="0.000" classname="attachdetach0">
      <failure message="Unexpected disconnected event received" type="Error"><![CDATA[Error: Unexpected disconnected event received
    at Object.<anonymous> (test/realtime/event_emitter.test.js:39:18)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/event_emitter emitCallsAllCallbacksIgnoringExceptions" time="0.000" classname="emitCallsAllCallbacksIgnoringExceptions">
    </testcase>
    <testcase name="realtime/event_emitter onceCalledOnlyOnce" time="0.000" 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.001" classname="offRemovesAllListeners">
    </testcase>
    <testcase name="realtime/event_emitter offRemovesAllMatchingEventListeners" time="0.000" 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.001" classname="listenerAddedInListenerCb">
    </testcase>
    <testcase name="realtime/event_emitter listenerRemovedInListenerCb" time="0.000" classname="listenerRemovedInListenerCb">
    </testcase>
  </testsuite>
  <testsuite name="event_emitter_promise" timestamp="2024-03-05T21:49:40" tests="4" file="/home/runner/work/ably-js/ably-js/test/realtime/event_emitter.test.js" time="120.004" failures="3">
    <testcase name="realtime/event_emitter attachdetach0" time="0.000" classname="attachdetach0">
      <failure message="done() called multiple times in test &lt;realtime/event_emitter attachdetach0&gt; of file /home/runner/work/ably-js/ably-js/test/realtime/event_emitter.test.js; in addition, done() received error: Error: Unexpected connecting event received
    at Object.&lt;anonymous&gt; (/home/runner/work/ably-js/ably-js/test/realtime/event_emitter.test.js:39:18)
    at callListener (/home/runner/work/ably-js/ably-js/build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (&lt;anonymous&gt;)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (/home/runner/work/ably-js/ably-js/build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)" type="Error"><![CDATA[Error: done() called multiple times in test <realtime/event_emitter attachdetach0> of file /home/runner/work/ably-js/ably-js/test/realtime/event_emitter.test.js; in addition, done() received error: Error: Unexpected connecting event received
    at Object.<anonymous> (test/realtime/event_emitter.test.js:39:18)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)
    at Object.<anonymous> (test/realtime/event_emitter.test.js:39:13)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/event_emitter event_emitter_promise whenState" time="60.000" classname="whenState">
      <failure message="Timeout of 60000ms 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/event_emitter.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/event_emitter.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/event_emitter event_emitter_promise once" time="60.000" classname="once">
      <failure message="Timeout of 60000ms 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/event_emitter.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/event_emitter.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </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-03-05T21:51:40" tests="20" file="/home/runner/work/ably-js/ably-js/test/realtime/failure.test.js" time="967.011" failures="19">
    <testcase name="realtime/failure invalid_cred_failure" time="0.003" classname="invalid_cred_failure">
      <failure message="connection state for transports web_socket should be failed, not disconnected" type="Error"><![CDATA[Error: connection state for transports web_socket should be failed, not disconnected
    at Object.<anonymous> (test/realtime/failure.test.js:52:17)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/failure break_transport" time="60.000" classname="break_transport">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure no_connection_lifecycle" time="4.801" classname="no_connection_lifecycle">
      <failure message="connection state for web_socket was connecting,disconnected,connecting,disconnected,connecting,disconnected,suspended,connecting,disconnected,connecting,disconnected, expected connecting,disconnected,connecting,disconnected,connecting,disconnected,suspended,connecting,suspended: expected [ &apos;connecting&apos;, &apos;disconnected&apos;, …(9) ] to deeply equal [ &apos;connecting&apos;, &apos;disconnected&apos;, …(7) ]" type="AssertionError"><![CDATA[AssertionError: connection state for web_socket was connecting,disconnected,connecting,disconnected,connecting,disconnected,suspended,connecting,disconnected,connecting,disconnected, expected connecting,disconnected,connecting,disconnected,connecting,disconnected,suspended,connecting,suspended: expected [ 'connecting', 'disconnected', …(9) ] to deeply equal [ 'connecting', 'disconnected', …(7) ]
    at Timeout._onTimeout (test/realtime/failure.test.js:153:50)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)

      + expected - actual

         "connecting"
         "disconnected"
         "suspended"
         "connecting"
      -  "disconnected"
      -  "connecting"
      -  "disconnected"
      +  "suspended"
       ]
      ]]></failure>
    </testcase>
    <testcase name="realtime/failure no_connection_lifecycle" time="4.801" classname="no_connection_lifecycle">
      <failure message="done() called multiple times in test &lt;realtime/failure no_connection_lifecycle&gt; of file /home/runner/work/ably-js/ably-js/test/realtime/failure.test.js" type="Error"><![CDATA[Error: done() called multiple times in test <realtime/failure no_connection_lifecycle> of file /home/runner/work/ably-js/ably-js/test/realtime/failure.test.js
    at /home/runner/work/ably-js/ably-js/test/realtime/failure.test.js:181:13
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:726:13
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:52:16
    at done (node_modules/async/lib/async.js:241:17)
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:44:16
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:723:17
    at /home/runner/work/ably-js/ably-js/node_modules/async/lib/async.js:167:37
    at Timeout._onTimeout (test/realtime/failure.test.js:166:17)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure disconnected_backoff_web_socket" time="1.082" classname="disconnected_backoff_web_socket">
    </testcase>
    <testcase name="realtime/failure disconnected_backoff_comet" time="1.104" classname="disconnected_backoff_comet">
    </testcase>
    <testcase name="realtime/failure failed_channel" time="60.000" classname="failed_channel">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure attach_timeout" time="59.999" classname="attach_timeout">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure channel_backoff_web_socket" time="60.000" classname="channel_backoff_web_socket">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure channel_backoff_comet" time="60.000" classname="channel_backoff_comet">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure nack_on_connection_suspended" time="60.000" classname="nack_on_connection_suspended">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure nack_on_connection_failed" time="60.000" classname="nack_on_connection_failed">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure nack_on_connection_closed" time="60.000" classname="nack_on_connection_closed">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure idle_transport_timeout" time="60.001" classname="idle_transport_timeout">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_web_socket_binary_transport" time="60.000" classname="try_fallback_hosts_on_placement_constraint_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_web_socket_text_transport" time="60.001" classname="try_fallback_hosts_on_placement_constraint_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_comet_binary_transport" time="60.000" classname="try_fallback_hosts_on_placement_constraint_with_comet_binary_transport">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_comet_text_transport" time="60.000" classname="try_fallback_hosts_on_placement_constraint_with_comet_text_transport">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_binary_transport" time="59.999" classname="try_fallback_hosts_on_placement_constraint_with_binary_transport">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure try_fallback_hosts_on_placement_constraint_with_text_transport" time="60.000" classname="try_fallback_hosts_on_placement_constraint_with_text_transport">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/failure no_messages_if_not_attached" time="60.000" classname="no_messages_if_not_attached">
      <failure message="Timeout of 60000ms 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/failure.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/failure.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/history" timestamp="2024-03-05T22:07:47" tests="1" file="/home/runner/work/ably-js/ably-js/test/realtime/history.test.js" time="0.438" failures="1">
    <testcase name="realtime/history history_until_attach" time="0.437" classname="history_until_attach">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/init" timestamp="2024-03-05T22:07:48" tests="15" file="/home/runner/work/ably-js/ably-js/test/realtime/init.test.js" time="480.514" failures="11">
    <testcase name="realtime/init initbase0" time="60.000" classname="initbase0">
      <failure message="Timeout of 60000ms 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/init.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/init.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </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.498" classname="init_token_string">
      <failure message="No key found with id 4TYckA" type="Error"><![CDATA[Error: No key found with id 4TYckA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/init init_key_with_usetokenauth" time="60.000" classname="init_key_with_usetokenauth">
      <failure message="Timeout of 60000ms 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/init.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/init.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/init init_usetokenauth_defaulttokenparams_wildcard" time="60.001" classname="init_usetokenauth_defaulttokenparams_wildcard">
      <failure message="Timeout of 60000ms 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/init.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/init.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/init init_defaulttokenparams_nonwildcard" time="60.000" classname="init_defaulttokenparams_nonwildcard">
      <failure message="Timeout of 60000ms 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/init.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/init.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/init init_conflicting_clientids" time="60.000" classname="init_conflicting_clientids">
      <failure message="Timeout of 60000ms 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/init.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/init.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/init init_with_usetokenauth_false_and_a_clientid" time="0.000" classname="init_with_usetokenauth_false_and_a_clientid">
    </testcase>
    <testcase name="realtime/init init_defaulthost" time="0.001" classname="init_defaulthost">
    </testcase>
    <testcase name="realtime/init init_timeouts" time="0.001" classname="init_timeouts">
    </testcase>
    <testcase name="realtime/init init_fallbacks" time="0.002" classname="init_fallbacks">
      <failure message="Expected error code after no fallback host works: expected 80000 to equal 80003" type="AssertionError"><![CDATA[AssertionError: Expected error code after no fallback host works: expected 80000 to equal 80003
    at Object.<anonymous> (test/realtime/init.test.js:299:48)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)

      + expected - actual

      -80000
      +80003
      ]]></failure>
    </testcase>
    <testcase name="realtime/init node_transports" time="0.001" classname="node_transports">
      <failure message="expected undefined to be truthy" type="AssertionError"><![CDATA[AssertionError: expected undefined to be truthy
    at Context.<anonymous> (test/realtime/init.test.js:319:81)
    at processImmediate (internal/timers.js:461:21)]]></failure>
    </testcase>
    <testcase name="realtime/init init_and_connection_details" time="60.000" classname="init_and_connection_details">
      <failure message="Timeout of 60000ms 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/init.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/init.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/init init_fallbacks_once_connected" time="60.001" classname="init_fallbacks_once_connected">
      <failure message="Timeout of 60000ms 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/init.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/init.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/init init_fallbacks_once_connected_2" time="60.000" classname="init_fallbacks_once_connected_2">
      <failure message="Timeout of 60000ms 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/init.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/init.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/message" timestamp="2024-03-05T22:15:48" tests="35" file="/home/runner/work/ably-js/ably-js/test/realtime/message.test.js" time="1742.687" failures="34">
    <testcase name="realtime/message publishonce" time="60.000" classname="publishonce">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishfast_with_web_socket_binary_transport" time="60.001" classname="publishfast_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishfast_with_web_socket_text_transport" time="60.001" classname="publishfast_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishfast_with_comet_binary_transport" time="0.688" classname="publishfast_with_comet_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/message publishfast_with_comet_text_transport" time="0.402" classname="publishfast_with_comet_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/message publishfast_with_binary_transport" time="0.587" classname="publishfast_with_binary_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/message publishfast_with_text_transport" time="0.586" classname="publishfast_with_text_transport">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/message publishQueued_with_web_socket_binary_transport" time="60.000" classname="publishQueued_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishQueued_with_web_socket_text_transport" time="60.000" classname="publishQueued_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishQueued_with_comet_binary_transport" time="60.000" classname="publishQueued_with_comet_binary_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishQueued_with_comet_text_transport" time="60.000" classname="publishQueued_with_comet_text_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishQueued_with_binary_transport" time="60.001" classname="publishQueued_with_binary_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishQueued_with_text_transport" time="60.001" classname="publishQueued_with_text_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishEcho" time="60.000" classname="publishEcho">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishVariations" time="60.000" classname="publishVariations">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishDisallowed" time="60.000" classname="publishDisallowed">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publishEncodings" time="60.000" classname="publishEncodings">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message restpublish" time="60.000" classname="restpublish">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publish_with_web_socket_binary_transport" time="60.000" classname="publish_with_web_socket_binary_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publish_with_web_socket_text_transport" time="60.002" classname="publish_with_web_socket_text_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publish_with_comet_binary_transport" time="60.001" classname="publish_with_comet_binary_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publish_with_comet_text_transport" time="60.000" classname="publish_with_comet_text_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publish_with_binary_transport" time="60.000" classname="publish_with_binary_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message publish_with_text_transport" time="60.000" classname="publish_with_text_transport">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message implicit_client_id_0" time="60.000" classname="implicit_client_id_0">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message explicit_client_id_0" time="60.000" classname="explicit_client_id_0">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message explicit_client_id_1" time="0.386" classname="explicit_client_id_1">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/message subscribe_with_event_array" time="60.000" classname="subscribe_with_event_array">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message subscribe_with_filter_object" time="60.000" classname="subscribe_with_filter_object">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message unsubscribe_with_filter_object" time="60.000" classname="unsubscribe_with_filter_object">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message extras_field" time="60.001" classname="extras_field">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message maxMessageSize" time="60.000" classname="maxMessageSize">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message idempotentRealtimePublishing" time="60.001" classname="idempotentRealtimePublishing">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/message subscribes to filtered channel" time="60.000" classname="subscribes to filtered channel">
      <failure message="Timeout of 60000ms 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/message.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/message.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/presence" timestamp="2024-03-05T22:44:51" tests="35" file="/home/runner/work/ably-js/ably-js/test/realtime/presence.test.js" time="0.363" failures="1">
    <testcase name="realtime/presence &quot;before all&quot; hook for &quot;presenceAttachAndEnter&quot;" time="0.363" classname="&quot;before all&quot; hook for &quot;presenceAttachAndEnter&quot;">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/reauth" timestamp="2024-03-05T22:44:51" tests="24" file="/home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js" time="10.915" failures="24">
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_web_socket_binary_transport" time="0.390" classname="reauthCapabilityUpgradeNewChannel_with_web_socket_binary_transport">
      <failure message="reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_web_socket_text_transport" time="0.389" classname="reauthCapabilityUpgradeNewChannel_with_web_socket_text_transport">
      <failure message="reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_comet_binary_transport" time="0.547" classname="reauthCapabilityUpgradeNewChannel_with_comet_binary_transport">
      <failure message="reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_comet_text_transport" time="0.453" classname="reauthCapabilityUpgradeNewChannel_with_comet_text_transport">
      <failure message="reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_binary_transport" time="0.589" classname="reauthCapabilityUpgradeNewChannel_with_binary_transport">
      <failure message="reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeNewChannel_with_text_transport" time="0.374" classname="reauthCapabilityUpgradeNewChannel_with_text_transport">
      <failure message="reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeNewChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_web_socket_binary_transport" time="0.579" classname="reauthCapabilityDowngradeFullChannel_with_web_socket_binary_transport">
      <failure message="reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_web_socket_text_transport" time="0.585" classname="reauthCapabilityDowngradeFullChannel_with_web_socket_text_transport">
      <failure message="reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_comet_binary_transport" time="0.470" classname="reauthCapabilityDowngradeFullChannel_with_comet_binary_transport">
      <failure message="reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_comet_text_transport" time="0.395" classname="reauthCapabilityDowngradeFullChannel_with_comet_text_transport">
      <failure message="reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_binary_transport" time="0.393" classname="reauthCapabilityDowngradeFullChannel_with_binary_transport">
      <failure message="reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradeFullChannel_with_text_transport" time="0.377" classname="reauthCapabilityDowngradeFullChannel_with_text_transport">
      <failure message="reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradeFullChannel: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_web_socket_binary_transport" time="0.405" classname="reauthCapabilityUpgradeAddPublish_with_web_socket_binary_transport">
      <failure message="reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_web_socket_text_transport" time="0.395" classname="reauthCapabilityUpgradeAddPublish_with_web_socket_text_transport">
      <failure message="reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_comet_binary_transport" time="0.568" classname="reauthCapabilityUpgradeAddPublish_with_comet_binary_transport">
      <failure message="reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_comet_text_transport" time="0.400" classname="reauthCapabilityUpgradeAddPublish_with_comet_text_transport">
      <failure message="reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_binary_transport" time="0.391" classname="reauthCapabilityUpgradeAddPublish_with_binary_transport">
      <failure message="reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityUpgradeAddPublish_with_text_transport" time="0.391" classname="reauthCapabilityUpgradeAddPublish_with_text_transport">
      <failure message="reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityUpgradeAddPublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_web_socket_binary_transport" time="0.391" classname="reauthCapabilityDowngradePublish_with_web_socket_binary_transport">
      <failure message="reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_web_socket_text_transport" time="0.598" classname="reauthCapabilityDowngradePublish_with_web_socket_text_transport">
      <failure message="reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_comet_binary_transport" time="0.378" classname="reauthCapabilityDowngradePublish_with_comet_binary_transport">
      <failure message="reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_comet_text_transport" time="0.403" classname="reauthCapabilityDowngradePublish_with_comet_text_transport">
      <failure message="reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_binary_transport" time="0.378" classname="reauthCapabilityDowngradePublish_with_binary_transport">
      <failure message="reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/reauth reauthCapabilityDowngradePublish_with_text_transport" time="0.661" classname="reauthCapabilityDowngradePublish_with_text_transport">
      <failure message="reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy" type="AssertionError"><![CDATA[AssertionError: reauthCapabilityDowngradePublish: 404; No key found with id GXklPA: expected false to be truthy
    at /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:191:73
    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 /home/runner/work/ably-js/ably-js/test/realtime/reauth.test.js:30:11
    at /home/runner/work/ably-js/ably-js/test/common/modules/shared_helper.js:73:9
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/resume" timestamp="2024-03-05T22:45:02" tests="35" file="/home/runner/work/ably-js/ably-js/test/realtime/resume.test.js" time="1085.048" failures="17">
    <testcase name="realtime/resume resume_inactive_with_web_socket_binary_transport" time="120.001" classname="resume_inactive_with_web_socket_binary_transport">
      <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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_web_socket_text_transport" time="120.000" classname="resume_inactive_with_web_socket_text_transport">
      <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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_comet_binary_transport" time="0.528" classname="resume_inactive_with_comet_binary_transport">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at NodeCometTransport.__webpack_modules__.3546.CometTransport.onData (build/ably-node.js:5996:83)
    at Object.<anonymous> (build/ably-node.js:5820:31)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Request.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at Request.complete (build/ably-node.js:11722:12)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11713:14
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_comet_text_transport" time="0.585" classname="resume_inactive_with_comet_text_transport">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at NodeCometTransport.__webpack_modules__.3546.CometTransport.onData (build/ably-node.js:5996:83)
    at Object.<anonymous> (build/ably-node.js:5820:31)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Request.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at Request.complete (build/ably-node.js:11722:12)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11713:14
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_binary_transport" time="0.587" classname="resume_inactive_with_binary_transport">
      <failure message="No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)" type="Error"><![CDATA[Error: No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at deserialize (build/ably-node.js:9188:12)
    at WebSocketTransport.__webpack_modules__.2346.WebSocketTransport.onWsData (build/ably-node.js:8171:70)
    at WebSocket.wsConnection.onmessage (build/ably-node.js:8132:26)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1209:20)
    at /home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:581:16
    at internal/process/task_queues.js:153:7
    at AsyncResource.runInAsyncScope (async_hooks.js:189:9)
    at AsyncResource.runMicrotask (internal/process/task_queues.js:150:8)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_inactive_with_text_transport" time="0.593" classname="resume_inactive_with_text_transport">
      <failure message="No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)" type="Error"><![CDATA[Error: No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at deserialize (build/ably-node.js:9188:12)
    at WebSocketTransport.__webpack_modules__.2346.WebSocketTransport.onWsData (build/ably-node.js:8171:70)
    at WebSocket.wsConnection.onmessage (build/ably-node.js:8132:26)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1209:20)
    at /home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:608:16
    at internal/process/task_queues.js:153:7
    at AsyncResource.runInAsyncScope (async_hooks.js:189:9)
    at AsyncResource.runMicrotask (internal/process/task_queues.js:150:8)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_web_socket_binary_transport" time="120.000" classname="resume_active_with_web_socket_binary_transport">
      <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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_web_socket_text_transport" time="120.001" classname="resume_active_with_web_socket_text_transport">
      <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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_comet_binary_transport" time="0.592" classname="resume_active_with_comet_binary_transport">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at NodeCometTransport.__webpack_modules__.3546.CometTransport.onData (build/ably-node.js:5996:83)
    at Object.<anonymous> (build/ably-node.js:5820:31)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Request.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at Request.complete (build/ably-node.js:11722:12)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11713:14
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_comet_text_transport" time="0.506" classname="resume_active_with_comet_text_transport">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at NodeCometTransport.__webpack_modules__.3546.CometTransport.onData (build/ably-node.js:5996:83)
    at Object.<anonymous> (build/ably-node.js:5820:31)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Request.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at Request.complete (build/ably-node.js:11722:12)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11713:14
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_binary_transport" time="0.861" classname="resume_active_with_binary_transport">
      <failure message="No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)" type="Error"><![CDATA[Error: No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at deserialize (build/ably-node.js:9188:12)
    at WebSocketTransport.__webpack_modules__.2346.WebSocketTransport.onWsData (build/ably-node.js:8171:70)
    at WebSocket.wsConnection.onmessage (build/ably-node.js:8132:26)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1209:20)
    at /home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:581:16
    at internal/process/task_queues.js:153:7
    at AsyncResource.runInAsyncScope (async_hooks.js:189:9)
    at AsyncResource.runMicrotask (internal/process/task_queues.js:150:8)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_active_with_text_transport" time="0.782" classname="resume_active_with_text_transport">
      <failure message="No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)" type="Error"><![CDATA[Error: No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at fromDeserialized (build/ably-node.js:9194:50)
    at deserialize (build/ably-node.js:9188:12)
    at WebSocketTransport.__webpack_modules__.2346.WebSocketTransport.onWsData (build/ably-node.js:8171:70)
    at WebSocket.wsConnection.onmessage (build/ably-node.js:8132:26)
    at callListener (node_modules/ws/lib/event-target.js:290:14)
    at WebSocket.onMessage (node_modules/ws/lib/event-target.js:209:9)
    at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:1209:20)
    at /home/runner/work/ably-js/ably-js/node_modules/ws/lib/receiver.js:608:16
    at internal/process/task_queues.js:153:7
    at AsyncResource.runInAsyncScope (async_hooks.js:189:9)
    at AsyncResource.runMicrotask (internal/process/task_queues.js:150:8)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="realtime/resume channel_resumed_flag" time="120.000" classname="channel_resumed_flag">
      <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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume no_resume_once_suspended" time="120.000" classname="no_resume_once_suspended">
      <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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume no_resume_last_activity" time="120.000" classname="no_resume_last_activity">
      <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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume resume_rewind_1" time="120.001" classname="resume_rewind_1">
      <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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="realtime/resume recover multiple channels" time="120.000" 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 (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/sync" timestamp="2024-03-05T23:03:07" tests="6" file="/home/runner/work/ably-js/ably-js/test/realtime/sync.test.js" time="60.013" failures="1">
    <testcase name="realtime/sync sync_existing_set" time="0.004" classname="sync_existing_set">
    </testcase>
    <testcase name="realtime/sync sync_member_arrives_in_middle" time="0.002" 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.001" classname="presence_ordering">
    </testcase>
    <testcase name="realtime/sync presence_sync_interruptus" time="60.000" classname="presence_sync_interruptus">
      <failure message="Timeout of 60000ms 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/sync.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/sync.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="realtime/transports" timestamp="2024-03-05T23:04:07" tests="5" file="/home/runner/work/ably-js/ably-js/test/realtime/transports.test.js" time="6.227" failures="3">
    <testcase name="realtime/transports websocket_is_default" time="0.600" classname="websocket_is_default">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/transports no_ws_connectivity" time="3.410" classname="no_ws_connectivity">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/transports ws_primary_host_fails" time="0.780" classname="ws_primary_host_fails">
      <failure message="Connection monitoring: state changed to failed, aborting test" type="Error"><![CDATA[Error: Connection monitoring: state changed to failed, aborting test
    at Object.<anonymous> (test/common/modules/shared_helper.js:39:14)
    at callListener (build/ably-node.js:9650:18)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:9833:13
    at Array.forEach (<anonymous>)
    at Connection.__webpack_modules__.3388.EventEmitter.emit (build/ably-node.js:9832:19)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:2747:23
    at processTicksAndRejections (internal/process/task_queues.js:79:11)]]></failure>
    </testcase>
    <testcase name="realtime/transports no_internet_connectivity" time="1.433" classname="no_internet_connectivity">
    </testcase>
    <testcase name="realtime/transports no_websocket_or_base_transport" time="0.000" classname="no_websocket_or_base_transport">
    </testcase>
  </testsuite>
  <testsuite name="incremental backoff and jitter" timestamp="2024-03-05T23:04:13" tests="1" file="/home/runner/work/ably-js/ably-js/test/realtime/utils.test.js" time="0.004" failures="0">
    <testcase name="incremental backoff and jitter should calculate retry timeouts using incremental backoff and jitter" time="0.003" classname="should calculate retry timeouts using incremental backoff and jitter">
    </testcase>
  </testsuite>
  <testsuite name="rest/api" timestamp="2024-03-05T23:04:13" tests="4" file="/home/runner/work/ably-js/ably-js/test/rest/api.test.js" time="0.001" failures="0">
    <testcase name="rest/api Client constructors" time="0.000" classname="Client constructors">
    </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-03-05T23:04:13" tests="32" file="/home/runner/work/ably-js/ably-js/test/rest/auth.test.js" time="72.648" failures="25">
    <testcase name="rest/auth Base token generation case" time="0.455" classname="Base token generation case">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Base token generation with options" time="0.474" classname="Base token generation with options">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Generate token and init library with it" time="0.507" classname="Generate token and init library with it">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with explicit timestamp" time="0.585" classname="Token generation with explicit timestamp">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with invalid timestamp" time="0.066" classname="Token generation with invalid timestamp">
    </testcase>
    <testcase name="rest/auth Token generation with system timestamp" time="0.522" classname="Token generation with system timestamp">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with duplicate nonce" time="0.586" classname="Token generation with duplicate nonce">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with clientId" time="0.471" classname="Token generation with clientId">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with empty string clientId should error" time="0.000" classname="Token generation with empty string clientId should error">
    </testcase>
    <testcase name="rest/auth Token generation with capability that subsets key capability" time="0.389" classname="Token generation with capability that subsets key capability">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with specified key" time="0.507" classname="Token generation with specified key">
      <failure message="No key found with id 4TYckA" type="Error"><![CDATA[Error: No key found with id 4TYckA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with explicit auth" time="0.392" classname="Token generation with explicit auth">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with explicit auth, different key" time="0.391" classname="Token generation with explicit auth, different key">
      <failure message="No key found with id 4TYckA" type="Error"><![CDATA[Error: No key found with id 4TYckA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with invalid mac" time="0.470" classname="Token generation with invalid mac">
      <failure message="Verify request rejected with bad mac: expected 404 to equal 401" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with bad mac: expected 404 to equal 401
    at Context.<anonymous> (test/rest/auth.test.js:159:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +401
      ]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation with defaultTokenParams set and no tokenParams passed in" time="0.506" classname="Token generation with defaultTokenParams set and no tokenParams passed in">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Token generation: if tokenParams passed in, defaultTokenParams should be ignored altogether, not merged" time="0.392" classname="Token generation: if tokenParams passed in, defaultTokenParams should be ignored altogether, not merged">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Authorize with different args" time="0.351" classname="Authorize with different args">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Specify non-default ttl" time="0.433" classname="Specify non-default ttl">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Should error with excessive ttl" time="0.407" classname="Should error with excessive ttl">
      <failure message="Verify request rejected with excessive expiry: expected 404 to equal 400" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with excessive expiry: expected 404 to equal 400
    at Context.<anonymous> (test/rest/auth.test.js:210:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +400
      ]]></failure>
    </testcase>
    <testcase name="rest/auth Should error with negative ttl" time="0.391" classname="Should error with negative ttl">
      <failure message="Verify request rejected with negative expiry: expected 404 to equal 400" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with negative expiry: expected 404 to equal 400
    at Context.<anonymous> (test/rest/auth.test.js:220:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +400
      ]]></failure>
    </testcase>
    <testcase name="rest/auth Should error with invalid ttl" time="0.375" classname="Should error with invalid ttl">
      <failure message="Verify request rejected with invalid expiry: expected 404 to equal 400" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with invalid expiry: expected 404 to equal 400
    at Context.<anonymous> (test/rest/auth.test.js:230:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +400
      ]]></failure>
    </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.000" 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.586" classname="Basic rest JWT">
      <failure message="Need a new token, but authOptions does not include any way to request one (no authUrl, authCallback, or key)" type="Error"><![CDATA[Error: Need a new token, but authOptions does not include any way to request one (no authUrl, authCallback, or key)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Auth.<anonymous> (build/ably-node.js:1948:27)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11973:69
    at new Promise (<anonymous>)
    at Module.__awaiter (build/ably-node.js:11969:10)
    at Auth.__webpack_modules__.1047.Auth.requestToken (build/ably-node.js:1828:24)
    at Auth.<anonymous> (build/ably-node.js:2262:51)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11973:69
    at new Promise (<anonymous>)
    at Module.__awaiter (build/ably-node.js:11969:10)
    at Auth.__webpack_modules__.1047.Auth._ensureValidAuthCredentials (build/ably-node.js:2231:24)
    at Auth.<anonymous> (build/ably-node.js:1816:48)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11973:69
    at new Promise (<anonymous>)
    at Module.__awaiter (build/ably-node.js:11969:10)
    at Auth.__webpack_modules__.1047.Auth._forceNewToken (build/ably-node.js:1806:24)
    at Auth.<anonymous> (build/ably-node.js:1771:51)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11973:69
    at new Promise (<anonymous>)
    at Module.__awaiter (build/ably-node.js:11969:10)
    at Auth.__webpack_modules__.1047.Auth.authorize (build/ably-node.js:1757:24)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:5117:66
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at fulfilled (build/ably-node.js:11970:56)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Rest JWT with return type " time="0.762" classname="Rest JWT with return type ">
      <failure message="Need a new token, but authOptions does not include any way to request one (no authUrl, authCallback, or key)" type="Error"><![CDATA[Error: Need a new token, but authOptions does not include any way to request one (no authUrl, authCallback, or key)
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Auth.<anonymous> (build/ably-node.js:1948:27)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11973:69
    at new Promise (<anonymous>)
    at Module.__awaiter (build/ably-node.js:11969:10)
    at Auth.__webpack_modules__.1047.Auth.requestToken (build/ably-node.js:1828:24)
    at Auth.<anonymous> (build/ably-node.js:2262:51)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11973:69
    at new Promise (<anonymous>)
    at Module.__awaiter (build/ably-node.js:11969:10)
    at Auth.__webpack_modules__.1047.Auth._ensureValidAuthCredentials (build/ably-node.js:2231:24)
    at Auth.<anonymous> (build/ably-node.js:1816:48)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11973:69
    at new Promise (<anonymous>)
    at Module.__awaiter (build/ably-node.js:11969:10)
    at Auth.__webpack_modules__.1047.Auth._forceNewToken (build/ably-node.js:1806:24)
    at Auth.<anonymous> (build/ably-node.js:1771:51)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:11973:69
    at new Promise (<anonymous>)
    at Module.__awaiter (build/ably-node.js:11969:10)
    at Auth.__webpack_modules__.1047.Auth.authorize (build/ably-node.js:1757:24)
    at /home/runner/work/ably-js/ably-js/build/ably-node.js:5117:66
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at fulfilled (build/ably-node.js:11970:56)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Rest embedded JWT" time="0.512" classname="Rest embedded JWT">
      <failure message="Error response received from server: 500 body was: &lt;Buffer 7b 22 65 72 72 6f 72 22 3a 22 7b 20 6d 65 73 73 61 67 65 3a 20 27 4e 6f 20 6b 65 79 20 66 6f 75 6e 64 20 77 69 74 68 20 69 64 20 47 58 6b 6c 50 41 2e ... 234 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 500 body was: <Buffer 7b 22 65 72 72 6f 72 22 3a 22 7b 20 6d 65 73 73 61 67 65 3a 20 27 4e 6f 20 6b 65 79 20 66 6f 75 6e 64 20 77 69 74 68 20 69 64 20 47 58 6b 6c 50 41 2e ... 234 more bytes>
    at new ErrorInfo (build/ably-node.js:8498:28)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11376:23)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth Rest embedded JWT with encryption" time="0.385" classname="Rest embedded JWT with encryption">
      <failure message="Error response received from server: 500 body was: &lt;Buffer 7b 22 65 72 72 6f 72 22 3a 22 7b 20 6d 65 73 73 61 67 65 3a 20 27 4e 6f 20 6b 65 79 20 66 6f 75 6e 64 20 77 69 74 68 20 69 64 20 47 58 6b 6c 50 41 2e ... 234 more bytes&gt;" type="Error"><![CDATA[Error: Error response received from server: 500 body was: <Buffer 7b 22 65 72 72 6f 72 22 3a 22 7b 20 6d 65 73 73 61 67 65 3a 20 27 4e 6f 20 6b 65 79 20 66 6f 75 6e 64 20 77 69 74 68 20 69 64 20 47 58 6b 6c 50 41 2e ... 234 more bytes>
    at new ErrorInfo (build/ably-node.js:8498:28)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11376:23)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/auth JWT request with invalid key" time="0.671" classname="JWT request with invalid key">
    </testcase>
    <testcase name="rest/auth Rest JWT with authCallback" time="60.000" classname="Rest JWT with authCallback">
      <failure message="Timeout of 60000ms 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/rest/auth.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/rest/auth.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="rest/auth Rest JWT with authCallback and invalid keys" time="0.595" classname="Rest JWT with authCallback and invalid keys">
    </testcase>
    <testcase name="rest/auth authCallback is only invoked once on concurrent auth" time="0.380" classname="authCallback is only invoked once on concurrent auth">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/batchPublish" timestamp="2024-03-05T23:05:26" 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-03-05T23:05:26" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="0.409" failures="1">
    <testcase name="rest/batchPublish when invoked with an array of specs performs a batch publish and returns an array of results" time="0.409" classname="performs a batch publish and returns an array of results">
      <failure message="No key found with id 1tkA5g" type="Error"><![CDATA[Error: No key found with id 1tkA5g
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="when invoked with a single spec" timestamp="2024-03-05T23:05:26" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="0.372" failures="1">
    <testcase name="rest/batchPublish when invoked with a single spec performs a batch publish and returns a single result" time="0.371" classname="performs a batch publish and returns a single result">
      <failure message="No key found with id 1tkA5g" type="Error"><![CDATA[Error: No key found with id 1tkA5g
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/batchPresence" timestamp="2024-03-05T23:05:27" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="60.002" failures="1">
    <testcase name="rest/batchPresence performs a batch presence fetch and returns a result" time="60.002" classname="performs a batch presence fetch and returns a result">
      <failure message="Timeout of 60000ms 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/rest/batch.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/rest/batch.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/revokeTokens" timestamp="2024-03-05T23:06:27" tests="3" file="/home/runner/work/ably-js/ably-js/test/rest/batch.test.js" time="1.061" failures="2">
    <testcase name="rest/revokeTokens revokes tokens matching the given specifiers" time="0.568" classname="revokes tokens matching the given specifiers">
      <failure message="No key found with id QixSiA" type="Error"><![CDATA[Error: No key found with id QixSiA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/revokeTokens accepts optional issuedBefore and allowReauthMargin parameters" time="0.491" classname="accepts optional issuedBefore and allowReauthMargin parameters">
      <failure message="No key found with id QixSiA" type="Error"><![CDATA[Error: No key found with id QixSiA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/revokeTokens throws an error when using token auth" time="0.001" classname="throws an error when using token auth">
    </testcase>
  </testsuite>
  <testsuite name="rest/bufferutils" timestamp="2024-03-05T23:06:28" 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-03-05T23:06:28" tests="14" file="/home/runner/work/ably-js/ably-js/test/rest/capability.test.js" time="6.543" failures="14">
    <testcase name="rest/capability Blanket intersection with specified key" time="0.322" classname="Blanket intersection with specified key">
      <failure message="No key found with id 4TYckA" type="Error"><![CDATA[Error: No key found with id 4TYckA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Equal intersection with specified key" time="0.781" classname="Equal intersection with specified key">
      <failure message="No key found with id 4TYckA" type="Error"><![CDATA[Error: No key found with id 4TYckA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Empty ops intersection" time="0.631" classname="Empty ops intersection">
      <failure message="Verify request rejected with insufficient capability: expected 404 to equal 401" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with insufficient capability: expected 404 to equal 401
    at Context.<anonymous> (test/rest/capability.test.js:58:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +401
      ]]></failure>
    </testcase>
    <testcase name="rest/capability Empty paths intersection" time="0.436" classname="Empty paths intersection">
      <failure message="Verify request rejected with insufficient capability: expected 404 to equal 401" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with insufficient capability: expected 404 to equal 401
    at Context.<anonymous> (test/rest/capability.test.js:70:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +401
      ]]></failure>
    </testcase>
    <testcase name="rest/capability Ops intersection non-empty" time="0.438" classname="Ops intersection non-empty">
      <failure message="No key found with id 1tkA5g" type="Error"><![CDATA[Error: No key found with id 1tkA5g
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Paths intersection non-empty" time="0.650" classname="Paths intersection non-empty">
      <failure message="No key found with id 1tkA5g" type="Error"><![CDATA[Error: No key found with id 1tkA5g
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Wildcard token with publish and subscribe key" time="0.388" classname="Wildcard token with publish and subscribe key">
      <failure message="No key found with id 1tkA5g" type="Error"><![CDATA[Error: No key found with id 1tkA5g
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Publish and subscribe token with wildcard key" time="0.281" classname="Publish and subscribe token with wildcard key">
      <failure message="No key found with id 1tkA5g" type="Error"><![CDATA[Error: No key found with id 1tkA5g
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Resources wildcard matching 1" time="0.391" classname="Resources wildcard matching 1">
      <failure message="No key found with id ta71vw" type="Error"><![CDATA[Error: No key found with id ta71vw
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Resources wildcard matching 2" time="0.307" classname="Resources wildcard matching 2">
      <failure message="No key found with id 4TYckA" type="Error"><![CDATA[Error: No key found with id 4TYckA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Resources wildcard matching 3" time="0.290" classname="Resources wildcard matching 3">
      <failure message="No key found with id ta71vw" type="Error"><![CDATA[Error: No key found with id ta71vw
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/capability Invalid capabilities 1" time="0.298" classname="Invalid capabilities 1">
      <failure message="Verify request rejected with bad capability: expected 404 to equal 400" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with bad capability: expected 404 to equal 400
    at Context.<anonymous> (test/rest/capability.test.js:140:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +400
      ]]></failure>
    </testcase>
    <testcase name="rest/capability Invalid capabilities 2" time="0.665" classname="Invalid capabilities 2">
      <failure message="Verify request rejected with bad capability: expected 404 to equal 400" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with bad capability: expected 404 to equal 400
    at Context.<anonymous> (test/rest/capability.test.js:150:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +400
      ]]></failure>
    </testcase>
    <testcase name="rest/capability Invalid capabilities 3" time="0.586" classname="Invalid capabilities 3">
      <failure message="Verify request rejected with bad capability: expected 404 to equal 400" type="AssertionError"><![CDATA[AssertionError: Verify request rejected with bad capability: expected 404 to equal 400
    at Context.<anonymous> (test/rest/capability.test.js:160:35)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

      + expected - actual

      -404
      +400
      ]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/defaults" timestamp="2024-03-05T23:06:34" 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.001" classname="Init with given environment">
    </testcase>
    <testcase name="rest/defaults Init with local environment and non-default ports" time="0.000" classname="Init with local environment and non-default ports">
    </testcase>
    <testcase name="rest/defaults Init with given host" time="0.001" classname="Init with given host">
    </testcase>
    <testcase name="rest/defaults Init with given restHost and realtimeHost" time="0.000" classname="Init with given restHost and realtimeHost">
    </testcase>
    <testcase name="rest/defaults Init with no endpoint-related options and given default environment" time="0.001" 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-03-05T23:06:34" 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-03-05T23:06:34" 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.001" classname="maintains useBinaryProtocol as true">
    </testcase>
  </testsuite>
  <testsuite name="given no MsgPack implementation" timestamp="2024-03-05T23:06:34" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/defaults.test.js" time="0.000" 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-03-05T23:06:34" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/fallbacks.test.js" time="6.200" failures="0">
    <testcase name="rest/fallbacks Store working fallback" time="6.200" classname="Store working fallback">
    </testcase>
  </testsuite>
  <testsuite name="rest/history" timestamp="2024-03-05T23:06:41" tests="13" file="/home/runner/work/ably-js/ably-js/test/rest/history.test.js" time="7.219" failures="13">
    <testcase name="rest/history history_simple with binary protocol" time="0.365" classname="history_simple with binary protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_simple with text protocol" time="0.393" classname="history_simple with text protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_multiple with binary protocol" time="0.390" classname="history_multiple with binary protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_multiple with text protocol" time="0.390" classname="history_multiple with text protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_simple_paginated_b with binary protocol" time="0.649" classname="history_simple_paginated_b with binary protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_simple_paginated_b with text protocol" time="0.265" classname="history_simple_paginated_b with text protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_simple_paginated_f" time="0.454" classname="history_simple_paginated_f">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_multiple_paginated_b" time="0.392" classname="history_multiple_paginated_b">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_multiple_paginated_f" time="0.392" classname="history_multiple_paginated_f">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_encoding_errors with binary protocol" time="1.303" classname="history_encoding_errors with binary protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_encoding_errors with text protocol" time="1.434" classname="history_encoding_errors with text protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_no_next_page with binary protocol" time="0.391" classname="history_no_next_page with binary protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/history history_no_next_page with text protocol" time="0.391" classname="history_no_next_page with text protocol">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/http" timestamp="2024-03-05T23:06:48" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/http.test.js" time="0.390" failures="1">
    <testcase name="rest/http Should send X-Ably-Version and Ably-Agent headers in get/post requests" time="0.390" classname="Should send X-Ably-Version and Ably-Agent headers in get/post requests">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/init" timestamp="2024-03-05T23:06:48" tests="6" file="/home/runner/work/ably-js/ably-js/test/rest/init.test.js" time="0.393" failures="1">
    <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.390" classname="Init with token string">
      <failure message="No key found with id 4TYckA" type="Error"><![CDATA[Error: No key found with id 4TYckA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/init Init with tls: false" time="0.001" 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.001" 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-03-05T23:06:49" tests="7" file="/home/runner/work/ably-js/ably-js/test/rest/message.test.js" time="2.599" failures="6">
    <testcase name="rest/message Should implicitly send clientId when authenticated with clientId" time="0.444" classname="Should implicitly send clientId when authenticated with clientId">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/message Should publish clientId when provided explicitly in message" time="0.392" classname="Should publish clientId when provided explicitly in message">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/message Should error when clientId sent in message is different than authenticated clientId" time="0.721" classname="Should error when clientId sent in message is different than authenticated clientId">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/message Should error when publishing message larger than maxMessageSize" time="0.000" 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.311" classname="Should send correct IDs when idempotentRestPublishing set to false">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/message Should add IDs when automatic idempotent rest publishing option enabled" time="0.337" classname="Should add IDs when automatic idempotent rest publishing option enabled">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/message Rest publish params" time="0.390" classname="Rest publish params">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/presence" timestamp="2024-03-05T23:06:51" tests="4" file="/home/runner/work/ably-js/ably-js/test/rest/presence.test.js" time="1.426" failures="3">
    <testcase name="rest/presence Presence get simple" time="0.447" classname="Presence get simple">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/presence Presence history simple" time="0.334" classname="Presence history simple">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/presence Presence message JSON serialisation" time="0.643" classname="Presence message JSON serialisation">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </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-03-05T23:06:53" tests="9" file="/home/runner/work/ably-js/ably-js/test/rest/push.test.js" time="63.397" failures="9">
    <testcase name="rest/push Get subscriptions" time="0.336" classname="Get subscriptions">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/push Publish" time="60.002" classname="Publish">
      <failure message="Timeout of 60000ms 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/rest/push.test.js)" type="Error"><![CDATA[Error: Timeout of 60000ms 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/rest/push.test.js)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)]]></failure>
    </testcase>
    <testcase name="rest/push deviceRegistrations save" time="0.442" classname="deviceRegistrations save">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/push deviceRegistrations get and list" time="0.468" classname="deviceRegistrations get and list">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/push deviceRegistrations remove removeWhere" time="0.315" classname="deviceRegistrations remove removeWhere">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/push channelSubscriptions save" time="0.391" classname="channelSubscriptions save">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/push channelSubscriptions get" time="0.459" classname="channelSubscriptions get">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/push push_channelSubscriptions_remove" time="0.524" classname="push_channelSubscriptions_remove">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/push channelSubscriptions listChannels" time="0.453" classname="channelSubscriptions listChannels">
      <failure message="No key found with id GXklPA" type="Error"><![CDATA[Error: No key found with id GXklPA
    at new ErrorInfo (build/ably-node.js:8498:28)
    at Function.__webpack_modules__.1798.ErrorInfo.fromValues (build/ably-node.js:8515:36)
    at class_1.__webpack_modules__.2149.class_1._handler (build/ably-node.js:11375:43)
    at class_1.<anonymous> (build/ably-node.js:11336:60)
    at step (build/ably-node.js:11999:21)
    at Object.throw (build/ably-node.js:11980:51)
    at rejected (build/ably-node.js:11971:63)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/request" timestamp="2024-03-05T23:07:56" tests="16" file="/home/runner/work/ably-js/ably-js/test/rest/request.test.js" time="3.517" failures="4">
    <testcase name="rest/request request_version with binary protocol" time="0.000" 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.066" classname="request_time with binary protocol">
    </testcase>
    <testcase name="rest/request request_time with text protocol" time="0.065" classname="request_time with text protocol">
    </testcase>
    <testcase name="rest/request request_404 with binary protocol" time="0.585" classname="request_404 with binary protocol">
    </testcase>
    <testcase name="rest/request request_404 with text protocol" time="0.515" classname="request_404 with text protocol">
    </testcase>
    <testcase name="rest/request request_network_error" time="0.008" classname="request_network_error">
    </testcase>
    <testcase name="rest/request request_post_get_messages with binary protocol" time="0.271" classname="request_post_get_messages with binary protocol">
      <failure message="Check statusCode is 201: expected 401 to equal 201" type="AssertionError"><![CDATA[AssertionError: Check statusCode is 201: expected 401 to equal 201
    at /home/runner/work/ably-js/ably-js/test/rest/request.test.js:90:33
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Context.<anonymous> (test/common/modules/shared_helper.js:169:7)

      + expected - actual

      -401
      +201
      ]]></failure>
    </testcase>
    <testcase name="rest/request request_post_get_messages with text protocol" time="0.588" classname="request_post_get_messages with text protocol">
      <failure message="Check statusCode is 201: expected 401 to equal 201" type="AssertionError"><![CDATA[AssertionError: Check statusCode is 201: expected 401 to equal 201
    at /home/runner/work/ably-js/ably-js/test/rest/request.test.js:90:33
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Context.<anonymous> (test/common/modules/shared_helper.js:172:7)

      + expected - actual

      -401
      +201
      ]]></failure>
    </testcase>
    <testcase name="rest/request request_batch_api_success with binary protocol" time="0.441" classname="request_batch_api_success with binary protocol">
      <failure message="Check res.success is true for a success: expected false to equal true" type="AssertionError"><![CDATA[AssertionError: Check res.success is true for a success: expected false to equal true
    at /home/runner/work/ably-js/ably-js/test/rest/request.test.js:130:30
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Context.<anonymous> (test/common/modules/shared_helper.js:169:7)

      + expected - actual

      -false
      +true
      ]]></failure>
    </testcase>
    <testcase name="rest/request request_batch_api_success with text protocol" time="0.265" classname="request_batch_api_success with text protocol">
      <failure message="Check res.success is true for a success: expected false to equal true" type="AssertionError"><![CDATA[AssertionError: Check res.success is true for a success: expected false to equal true
    at /home/runner/work/ably-js/ably-js/test/rest/request.test.js:130:30
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Context.<anonymous> (test/common/modules/shared_helper.js:172:7)

      + expected - actual

      -false
      +true
      ]]></failure>
    </testcase>
    <testcase name="rest/request checkput" time="0.426" classname="checkput">
    </testcase>
    <testcase name="rest/request checkpatch" time="0.140" classname="checkpatch">
    </testcase>
    <testcase name="rest/request checkdelete" time="0.139" classname="checkdelete">
    </testcase>
  </testsuite>
  <testsuite name="rest/stats" timestamp="2024-03-05T23:07:59" tests="11" file="/home/runner/work/ably-js/ably-js/test/rest/stats.test.js" time="0.860" failures="1">
    <testcase name="rest/stats &quot;before all&quot; hook for &quot;contains expected fields&quot;" time="0.859" classname="&quot;before all&quot; hook for &quot;contains expected fields&quot;">
      <failure message="done() invoked with non-Error: Invalid HTTP request: {
	&quot;error&quot;: {
		&quot;message&quot;: &quot;No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)&quot;,
		&quot;code&quot;: 40400,
		&quot;statusCode&quot;: 401,
		&quot;nonfatal&quot;: false,
		&quot;href&quot;: &quot;https://help.ably.io/error/40400&quot;,
		&quot;serverId&quot;: &quot;frontend.f371.1.us-east-1-A.i-09b8e989a431d7e5b.e7dZ8hWmwBZMAN&quot;
	}
}; statusCode = 401" type="Error"><![CDATA[Error: done() invoked with non-Error: Invalid HTTP request: {
	"error": {
		"message": "No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)",
		"code": 40400,
		"statusCode": 401,
		"nonfatal": false,
		"href": "https://help.ably.io/error/40400",
		"serverId": "frontend.f371.1.us-east-1-A.i-09b8e989a431d7e5b.e7dZ8hWmwBZMAN"
	}
}; statusCode = 401
    at /home/runner/work/ably-js/ably-js/test/rest/stats.test.js:70:13
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:190:9
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:112:15)
    at endReadableNT (_stream_readable.js:1241:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/status" timestamp="2024-03-05T23:08:00" tests="2" file="/home/runner/work/ably-js/ably-js/test/rest/status.test.js" time="0.665" failures="2">
    <testcase name="rest/status status0 with binary protocol" time="0.389" classname="status0 with binary protocol">
      <failure message="Error: 462 trailing bytes" type="Error"><![CDATA[Error: Error: 462 trailing bytes
    at new PartialErrorInfo (build/ably-node.js:8527:28)
    at unenvelope (build/ably-node.js:5010:31)
    at Function.<anonymous> (build/ably-node.js:5145:38)
    at step (build/ably-node.js:11999:21)
    at Object.next (build/ably-node.js:11980:51)
    at fulfilled (build/ably-node.js:11970:56)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)]]></failure>
    </testcase>
    <testcase name="rest/status status0 with text protocol" time="0.274" classname="status0 with text protocol">
      <failure message="No key found with id GXklPA" type=""><![CDATA[No key found with id GXklPA]]></failure>
    </testcase>
  </testsuite>
  <testsuite name="rest/time" timestamp="2024-03-05T23:08:01" tests="1" file="/home/runner/work/ably-js/ably-js/test/rest/time.test.js" time="0.506" failures="1">
    <testcase name="rest/time time0" time="0.066" classname="time0">
    </testcase>
    <testcase name="&quot;after all&quot; hook in &quot;{root}&quot;" time="0.440" classname="&quot;after all&quot; hook in &quot;{root}&quot;">
      <failure message="Could not tear down Test App: &quot;Invalid HTTP request: {\n\t\&quot;error\&quot;: {\n\t\t\&quot;message\&quot;: \&quot;No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)\&quot;,\n\t\t\&quot;code\&quot;: 40400,\n\t\t\&quot;statusCode\&quot;: 401,\n\t\t\&quot;nonfatal\&quot;: false,\n\t\t\&quot;href\&quot;: \&quot;https://help.ably.io/error/40400\&quot;,\n\t\t\&quot;serverId\&quot;: \&quot;frontend.0820.1.us-east-1-A.i-0466fdb17357d5035.e7dxQkjkgBZM8R\&quot;\n\t}\n}; statusCode = 401&quot;" type="Error"><![CDATA[Error: Could not tear down Test App: "Invalid HTTP request: {\n\t\"error\": {\n\t\t\"message\": \"No key found with id GXklPA. (See https://help.ably.io/error/40400 for help.)\",\n\t\t\"code\": 40400,\n\t\t\"statusCode\": 401,\n\t\t\"nonfatal\": false,\n\t\t\"href\": \"https://help.ably.io/error/40400\",\n\t\t\"serverId\": \"frontend.0820.1.us-east-1-A.i-0466fdb17357d5035.e7dxQkjkgBZM8R\"\n\t}\n}; statusCode = 401"
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_module.js:74:14
    at /home/runner/work/ably-js/ably-js/test/common/modules/testapp_manager.js:211:7
    at IncomingMessage.<anonymous> (test/common/modules/testapp_manager.js:112:15)
    at endReadableNT (_stream_readable.js:1241:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)]]></failure>
    </testcase>
  </testsuite>
</testsuites>