let caller;
let callee;
setup(() => {
caller = new Agent("caller", {
username: env("A_USER"),
domain: env("SIP_DOMAIN"),
password: env("A_PASS"),
});
callee = new Agent("callee", {
username: env("B_USER"),
domain: env("SIP_DOMAIN"),
password: env("B_PASS"),
});
});
teardown(() => caller.hangup());
scenario("answered call", async () => {
caller.register();
await until(() => expect(caller.registered).toBeTruthy(), "10s");
caller.dial(callee);
await until(() => expect(callee.state).toBe(State.Ringing), "15s");
callee.accept();
await until(() => expect(caller.state).toBe(State.Established), "10s");
expect(caller.quality?.mos).toBeGreaterThanOrEqual(4.0);
caller.sendAudio(tone(440));
callee.sendAudio(tone(480));
await Promise.all([callee.verifyAudio(440, "5s"), caller.verifyAudio(480, "5s")]);
});