import { test } from '@playwright/test'; import { markManual } from '../../helpers/manual'; // Codec-level tests require active SIP calls with specific codec configurations // and packet capture / audio analysis tools. None can be driven by Playwright alone. test.describe('pbx-codecs', () => { test('pbx-codecs-check-codec_negotiation_g711_g729_opus_g722', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'automationStatus', description: 'manual' }); testInfo.annotations.push({ type: 'testType', description: 'check' }); markManual('Requires SIP call traffic with codec-constrained endpoints and Wireshark packet capture to verify SDP offer/answer negotiation for each codec'); testInfo.annotations.push({ type: 'description', description: 'Verify successful codec negotiation for G.711 (alaw/ulaw), G.729, Opus, and G.722 between endpoints' }); // Manual steps: // 1. In admin portal, configure a test extension to use only G.711 alaw. Make a call and capture SDP. // Verify SDP answer contains only pcma/8000. // 2. Repeat with G.729: verify annexb, SDP shows g729/8000. // 3. Repeat with Opus: verify SDP shows opus/48000/2. // 4. Repeat with G.722: verify SDP shows G722/8000. // 5. Test codec fallback: configure preferred codec that remote doesn't support; verify negotiation falls back to next common codec. // 6. Record Wireshark SDP captures for each scenario. }); test('pbx-codecs-check-dtmf_transmission_rfc2833_inband_sip_info', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'automationStatus', description: 'manual' }); testInfo.annotations.push({ type: 'testType', description: 'check' }); markManual('Requires active call sessions with DTMF generation (physical or software phone), packet capture for RFC2833, and IVR system to verify DTMF reception'); testInfo.annotations.push({ type: 'description', description: 'Verify DTMF digit transmission via RFC2833, in-band audio, and SIP INFO methods are handled correctly' }); // Manual steps: // 1. Configure extension for RFC2833 DTMF. Call an IVR. Press digits 0-9,*,#. // Wireshark: verify RTP telephone-event packets are sent for each digit. // IVR: verify digits are recognised and routing occurs correctly. // 2. Configure extension for in-band DTMF. Repeat dial-through IVR. // Verify IVR recognises tones (confirm with IVR logs). // 3. Configure extension for SIP INFO DTMF. Repeat. // Wireshark: verify SIP INFO messages contain correct DTMF signal field. // 4. Record: each method used, packets observed, IVR recognition accuracy. }); test('pbx-codecs-check-t38_fax_passthrough_and_error_correction', async ({ page }, testInfo) => { testInfo.annotations.push({ type: 'automationStatus', description: 'manual' }); testInfo.annotations.push({ type: 'testType', description: 'check' }); markManual('Requires fax hardware (physical fax machine or fax server, e.g., HylaFAX) and T.38 stack support; cannot be tested with a browser'); testInfo.annotations.push({ type: 'description', description: 'Verify T.38 fax passthrough and error correction (ECM) work correctly over the PBX' }); // Manual steps: // 1. Configure a SIP trunk with T.38 support enabled. // 2. Send a fax from a fax machine / software fax client to a DID number routed to a fax extension. // 3. Verify the fax is received completely and without page corruption. // 4. Check Wireshark: verify T.38 re-INVITE is sent when fax tone is detected (CNG → T.38 switchover). // 5. Test T.38 ECM: induce packet loss (network emulator), verify re-transmission corrects errors. // 6. Record: pages sent/received, error count, ECM effectiveness. }); });