<!doctype html>
<html>
<head>
    <title>MediaRecorder audio bitrate</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
    async function record(stream, bitRate)
    {
        const recorder = new MediaRecorder(stream, { audioBitsPerSecond : bitRate });
        const promise = new Promise((resolve, reject) => {
            recorder.ondataavailable = (e) => resolve(e.data);
            setTimeout(reject, 5000);
        });
        recorder.start();
        setTimeout(() => recorder.stop(), 2500);
        return promise;
    }

    promise_test(async (t) => {
        const stream = await navigator.mediaDevices.getUserMedia({ audio : true });
        const bitRates = [128000, 192000, 256000, 12000, 24000, 108555];
        let promises = [];
        bitRates.forEach(bitRate => {
            promises.push(record(stream, bitRate));
        });

        let blobs = new Array(bitRates.length).fill(0);
        promises.forEach(async (promise, index) => {
            blobs[index] = await promise;
        });
        await Promise.all(promises);

        let counter = 0;
        blobs.forEach(blob => {
            assert_not_equals(blob.size, 0, "bitrate " + bitRates[counter++]);
        });
        assert_greater_than(blobs[2].size, blobs[0].size);
    }, "Various audio bitrates");
</script>
</body>
</html>
