• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / supabase-swift / 39382003330
93%

Build:
DEFAULT BRANCH: main
Ran 20 Oct 2026 06:50AM UTC
Jobs 1
Files 174
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

20 Oct 2026 06:42AM UTC coverage: 92.841% (+0.3%) from 92.565%
39382003330

push

github

web-flow
test(realtime): add a deterministic test host, loopback end-to-end tests, and a yield-loop check (#1594)

* test(realtime): add a deterministic test host, loopback end-to-end tests, and a yield-loop check

Tests that drove a RealtimeClient against FakeWebSocket pairs waited for state
with `Task.megaYield()` loops. Those loops pass or fail on scheduler luck.

RealtimeTestHost owns a TestClock, the client, every FakeWebSocket pair the
transport handed out, and the frames and statuses it observed. Waiting is
`waitUntil(timeout:_:)`: a change signal fed by each observed frame and status,
plus a bounded wait that records an issue on timeout. Replies and join
confirmations go through `reply(to:)` and `confirmJoin(_:)`.

RealtimeLoopbackTests run the real URLSession transport against
LoopbackWebSocketServer: connect, join, broadcast round trip (the server parses
the client's 0x03 push frame and echoes a text broadcast), and server close →
reconnect → rejoin. LoopbackWebSocketServer gained an `onMessage` hook for the
scripted server side.

scripts/check-no-yield-loops.sh fails CI if a `Task.yield()` or
`Task.megaYield()` call comes back under Tests/RealtimeTests. The Engine and
FakeRealtimeServer tests are excluded until they move onto the host.

* test(realtime): spell out JSONObject for the loopback broadcast literal

* test(realtime): bound the wait for .connecting after a server close

An unbounded `for await` over statusChanges would hang the test instead
of failing it if the close never produced .connecting.

* test(realtime): assert only what the reader-cancellation test can observe

The old test counted sends it made itself and never asserted the count,
and frames sent after disconnect were dropped by the closed fake socket.
Keep the one observable claim: disconnect() cancels the socket reader.

* test(realtime): advance the test clock until the delayed join reply lands

The fake server sleeps from an unstructured task, so on a busy Linux runner the
s... (continued)

13112 of 14123 relevant lines covered (92.84%)

29242.85 hits per line

Jobs
ID Job ID Ran Files Coverage
1 39382003330.1 20 Oct 2026 06:50AM UTC 174
92.84
GitHub Action Run
Source Files on build 39382003330
  • Tree
  • List 174
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #39382003330
  • 8d5d4985 on github
  • Prev Build on main (#39379320242)
  • Next Build on main (#39383433915)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc