Skip to content

Focus 1: Browser Interoperability #31

@rainliu

Description

@rainliu

Focus 1: Browser Interoperability

Ensuring seamless interoperability with all major browsers is critical for real-world deployments. While the core protocol implementation is complete, comprehensive browser testing and compatibility verification is ongoing.

Target Browsers

Browser Platform Status Priority
Chrome/Chromium Windows, macOS, Linux 🔄 In Progress High
Firefox Windows, macOS, Linux 🔄 In Progress High
Safari macOS, iOS 📋 Planned High
Edge Windows 📋 Planned Medium
Mobile Chrome Android 📋 Planned Medium
Mobile Safari iOS 📋 Planned Medium

Interoperability Test Scenarios

Data Channels:

  • Reliable ordered channels
  • Unreliable unordered channels
  • Multiple concurrent channels
  • Large message fragmentation
  • Binary and text messages

Media:

  • Audio-only calls (Opus codec)
  • Video-only streams (VP8, VP9, H.264)
  • Audio + Video combined
  • Simulcast with layer switching
  • Screen sharing

ICE & Connectivity:

  • Direct host-to-host connection
  • STUN-assisted connectivity
  • TURN relay fallback
  • Trickle ICE candidate exchange
  • ICE restart mid-session
  • mDNS candidate handling

SDP Negotiation:

  • Offer/Answer exchange
  • Renegotiation (add/remove tracks)
  • Codec negotiation
  • Extension negotiation
  • Rejected media sections

Browser-Specific Quirks

Each browser has its own WebRTC implementation quirks that need to be handled:

┌─────────────────────────────────────────────────────────────────────────────┐
│                     Browser Compatibility Matrix                            │
├─────────────────────────────────────────────────────────────────────────────┤
│  Issue                          │ Chrome │ Firefox │ Safari │ Edge          │
├─────────────────────────────────┼────────┼─────────┼────────┼───────────────┤
│  SDP format variations          │   ✓    │    ✓    │   ⚠    │    ✓          │
│  ICE candidate formatting       │   ✓    │    ✓    │   ⚠    │    ✓          │
│  DTLS role handling             │   ✓    │    ✓    │   ⚠    │    ✓          │
│  Data channel negotiation       │   ✓    │    ✓    │   ✓    │    ✓          │
│  Simulcast configuration        │   ✓    │    ⚠    │   ⚠    │    ✓          │
│  TWCC support                   │   ✓    │    ✓    │   ⚠    │    ✓          │
└─────────────────────────────────┴────────┴─────────┴────────┴───────────────┘
  ✓ = Works as expected   ⚠ = Requires special handling   ✗ = Known issues

Automated Browser Testing

Planned infrastructure:

  1. Selenium/Playwright tests — Automated browser control for E2E testing
  2. WebDriver BiDi — Modern browser automation protocol
  3. CI integration — Run browser tests on every PR
  4. Cross-platform matrix — Test on Windows, macOS, Linux
# Example CI configuration (planned)
browser-interop:
  strategy:
    matrix:
      browser: [chrome, firefox, safari, edge]
      os: [ubuntu-latest, macos-latest, windows-latest]
  steps:
    - run: cargo build --release
    - run: ./run-browser-tests.sh ${{ matrix.browser }}

Known Issues to Address

  • Safari SDP parsing edge cases
  • Firefox simulcast layer negotiation
  • Mobile browser power management
  • Browser-specific codec preferences
  • ICE candidate timing differences

Metadata

Metadata

Assignees

No one assigned

    Labels

    p1high priority

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions