scandit-sdk
Version:
Scandit Barcode Scanner SDK for the Web
857 lines • 36 kB
JavaScript
"use strict";
var _this = this;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
/* tslint:disable:no-implicit-dependencies no-any */
/**
* CameraAccess tests
*/
var ava_1 = tslib_1.__importDefault(require("ava"));
var sinon = tslib_1.__importStar(require("sinon"));
var __1 = require("..");
var getUserMediaStub = sinon.stub();
var getVideoTracksStub = sinon.stub();
var applyConstraintsStub = sinon.stub();
var getCapabilitiesStub = sinon.stub();
var getConstraintsStub = sinon.stub();
var getSettingsStub = sinon.stub();
var stopStub = sinon.stub();
var getSourcesStub = sinon.stub();
var enumerateDevicesStub = sinon.stub();
var stubs = [
getUserMediaStub,
getVideoTracksStub,
applyConstraintsStub,
getCapabilitiesStub,
getConstraintsStub,
getSettingsStub,
stopStub,
getSourcesStub,
enumerateDevicesStub
];
var emptyCamera = {
deviceId: "1",
groupId: "1",
kind: "videoinput",
label: "",
toJSON: function () {
return this;
}
};
var fakeCamera1 = {
deviceId: "1",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device (back)",
toJSON: function () {
return this;
}
};
var fakeCamera2 = {
deviceId: "2",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device (front)",
toJSON: function () {
return this;
}
};
var fakeCamera3 = {
deviceId: "3",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device (posteriore)",
toJSON: function () {
return this;
}
};
var fakeCamera4 = {
deviceId: "4",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device (unknown)",
toJSON: function () {
return this;
}
};
var fakeCamera5 = {
deviceId: "5",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device (unknown)",
toJSON: function () {
return this;
}
};
var fakeCamera6 = {
deviceId: "6",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device 5MP",
toJSON: function () {
return this;
}
};
var fakeCamera7 = {
deviceId: "7",
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device 2MP",
toJSON: function () {
return this;
}
};
var fakeCamera8 = {
deviceId: "8",
groupId: "1",
kind: "videoinput",
label: "camera2 8, facing back",
toJSON: function () {
return this;
}
};
var fakeCamera9 = {
deviceId: "9",
groupId: "1",
kind: "videoinput",
label: "camera2 9, facing back",
toJSON: function () {
return this;
}
};
var illegalFakeCamera1 = {
deviceId: "10",
groupId: "1",
kind: "videoinput"
};
var legacyFakeCamera1 = {
groupId: "1",
kind: "videoinput",
label: "Fake Camera Device (back)"
};
var legacyFakeCamera2 = {
deviceId: "100",
groupId: "1",
kind: "video",
label: "Fake Camera Device (front)"
};
var fakeMicrophone = {
deviceId: "1000",
groupId: "1",
kind: "audioinput",
label: "Fake Microhpone Device #2",
toJSON: function () {
return this;
}
};
function fakeCompatibleBrowser() {
Object.defineProperty(navigator, "mediaDevices", {
value: {
getUserMedia: getUserMediaStub.resolves({
getTracks: getVideoTracksStub,
getVideoTracks: getVideoTracksStub
})
},
configurable: true
});
getVideoTracksStub.returns([
{
applyConstraints: applyConstraintsStub.resolves(),
getCapabilities: getCapabilitiesStub.returns(123),
getConstraints: getConstraintsStub.returns(456),
getSettings: getSettingsStub.returns(789),
stop: stopStub
}
]);
window.Blob = (function () {
return;
});
window.URL = {
createObjectURL: function () {
return;
}
};
window.Worker = function () {
return;
};
window.WebAssembly = {};
}
function resetStubs() {
stubs.forEach(function (mock) {
mock.resetHistory();
});
}
function getFakeMediaStreamTrack(deviceId, facingMode, label) {
return {
getSettings: function () {
return {
deviceId: deviceId,
facingMode: facingMode
};
},
label: label
};
}
function deepObjectArrayCopy(objectArray) {
return objectArray.map(function (object) {
return tslib_1.__assign({}, object);
});
}
ava_1.default.beforeEach(function () {
window.MediaStreamTrack = undefined;
navigator.enumerateDevices = undefined;
});
ava_1.default.serial("getCameras (errors)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var error;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
resetStubs();
return [4 /*yield*/, t.throwsAsync(__1.CameraAccess.getCameras())];
case 1:
error = _a.sent();
t.is(error.name, "UnsupportedBrowserError");
t.false(getUserMediaStub.called);
t.false(getSourcesStub.called);
fakeCompatibleBrowser();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub
.onFirstCall()
.resolves([])
.onSecondCall()
.rejects(new Error("Test error 1"));
resetStubs();
return [4 /*yield*/, t.throwsAsync(__1.CameraAccess.getCameras())];
case 2:
error = _a.sent();
t.is(error.message, "Test error 1");
t.true(getUserMediaStub.called);
t.false(getSourcesStub.called);
enumerateDevicesStub.reset();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub.resolves([]);
navigator.mediaDevices.getUserMedia = getUserMediaStub.rejects(new Error("Test error 2"));
resetStubs();
return [4 /*yield*/, t.throwsAsync(__1.CameraAccess.getCameras())];
case 3:
error = _a.sent();
t.is(error.message, "Test error 2");
t.true(getUserMediaStub.called);
t.false(getSourcesStub.called);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("getCameras (MediaStreamTrack.getSources)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var error, cameras, newCameras;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
// Intentionally no legacy method
window.MediaStreamTrack = {};
resetStubs();
return [4 /*yield*/, t.throwsAsync(__1.CameraAccess.getCameras())];
case 1:
error = _a.sent();
t.is(error.name, "UnsupportedBrowserError");
t.false(getUserMediaStub.called);
// Intentionally wrong legacy method
window.MediaStreamTrack = {
getSources: getSourcesStub.callsArgWith(0, null)
};
resetStubs();
return [4 /*yield*/, t.throwsAsync(__1.CameraAccess.getCameras())];
case 2:
error = _a.sent();
t.is(error.name, "UnsupportedBrowserError");
t.false(getUserMediaStub.called);
t.true(getSourcesStub.called);
window.MediaStreamTrack = {
getSources: getSourcesStub.callsArgWith(0, [emptyCamera])
};
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 3:
cameras = _a.sent();
t.true(getUserMediaStub.called);
t.true(getSourcesStub.called);
t.not(cameras, null);
t.is(cameras.length, 1);
window.MediaStreamTrack = {
getSources: getSourcesStub.callsArgWith(0, [
fakeCamera1,
fakeCamera2,
legacyFakeCamera1,
legacyFakeCamera2,
fakeMicrophone
])
};
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 4:
cameras = _a.sent();
t.false(getUserMediaStub.called);
t.true(getSourcesStub.called);
t.not(cameras, null);
t.is(cameras.length, 4);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 5:
newCameras = _a.sent();
t.false(getUserMediaStub.called);
t.true(getSourcesStub.called);
t.deepEqual(cameras, newCameras);
t.is(cameras[0].deviceId, fakeCamera1.deviceId);
t.is(cameras[0].label, fakeCamera1.label);
t.is(cameras[0].cameraType, __1.Camera.Type.BACK);
t.is(cameras[0].currentResolution, undefined);
t.is(cameras[1].deviceId, fakeCamera2.deviceId);
t.is(cameras[1].label, fakeCamera2.label);
t.is(cameras[1].cameraType, __1.Camera.Type.FRONT);
t.is(cameras[1].currentResolution, undefined);
t.is(cameras[2].deviceId, "");
t.is(cameras[2].label, legacyFakeCamera1.label);
t.is(cameras[2].cameraType, __1.Camera.Type.BACK);
t.is(cameras[2].currentResolution, undefined);
t.is(cameras[3].deviceId, legacyFakeCamera2.deviceId);
t.is(cameras[3].label, legacyFakeCamera2.label);
t.is(cameras[3].cameraType, __1.Camera.Type.FRONT);
t.is(cameras[3].currentResolution, undefined);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("getCameras (navigator.enumerateDevices & navigator.mediaDevices.enumerateDevices)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a, _b, baseObject, cameras, newCameras, e_1_1;
var e_1, _c;
return tslib_1.__generator(this, function (_d) {
switch (_d.label) {
case 0:
fakeCompatibleBrowser();
window.MediaStreamTrack = {
getSources: getSourcesStub
};
_d.label = 1;
case 1:
_d.trys.push([1, 8, 9, 10]);
_a = tslib_1.__values([navigator, navigator.mediaDevices]), _b = _a.next();
_d.label = 2;
case 2:
if (!!_b.done) return [3 /*break*/, 7];
baseObject = _b.value;
baseObject.enumerateDevices = enumerateDevicesStub.resolves([emptyCamera]);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 3:
cameras = _d.sent();
t.true(getUserMediaStub.called);
t.true(enumerateDevicesStub.called);
t.false(getSourcesStub.called);
t.not(cameras, null);
t.is(cameras.length, 1);
baseObject.enumerateDevices = enumerateDevicesStub.resolves([
fakeCamera1,
fakeCamera2,
illegalFakeCamera1,
fakeMicrophone
]);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 4:
cameras = _d.sent();
t.false(getUserMediaStub.called);
t.true(enumerateDevicesStub.called);
t.false(getSourcesStub.called);
t.not(cameras, null);
t.is(cameras.length, 3);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 5:
newCameras = _d.sent();
t.false(getUserMediaStub.called);
t.true(enumerateDevicesStub.called);
t.false(getSourcesStub.called);
t.deepEqual(cameras, newCameras);
t.is(cameras[0].deviceId, fakeCamera1.deviceId);
t.is(cameras[0].label, fakeCamera1.label);
t.is(cameras[0].cameraType, __1.Camera.Type.BACK);
t.is(cameras[0].currentResolution, undefined);
t.is(cameras[1].deviceId, fakeCamera2.deviceId);
t.is(cameras[1].label, fakeCamera2.label);
t.is(cameras[1].cameraType, __1.Camera.Type.FRONT);
t.is(cameras[1].currentResolution, undefined);
t.is(cameras[2].deviceId, illegalFakeCamera1.deviceId);
t.is(cameras[2].label, "");
t.is(cameras[2].cameraType, __1.Camera.Type.FRONT);
t.is(cameras[2].currentResolution, undefined);
_d.label = 6;
case 6:
_b = _a.next();
return [3 /*break*/, 2];
case 7: return [3 /*break*/, 10];
case 8:
e_1_1 = _d.sent();
e_1 = { error: e_1_1 };
return [3 /*break*/, 10];
case 9:
try {
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
}
finally { if (e_1) throw e_1.error; }
return [7 /*endfinally*/];
case 10: return [2 /*return*/];
}
});
}); });
ava_1.default.serial("getCameras (internationalized label)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var cameras;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub.resolves([fakeCamera3]);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 1:
cameras = _a.sent();
t.not(cameras, null);
t.is(cameras.length, 1);
t.is(cameras[0].deviceId, fakeCamera3.deviceId);
t.is(cameras[0].label, fakeCamera3.label);
t.is(cameras[0].cameraType, __1.Camera.Type.BACK);
t.is(cameras[0].currentResolution, undefined);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("getCameras (no front/back label information)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var cameras;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub.resolves([fakeCamera4, fakeCamera5]);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 1:
cameras = _a.sent();
t.not(cameras, null);
t.is(cameras.length, 2);
t.is(cameras[0].deviceId, fakeCamera4.deviceId);
t.is(cameras[0].label, fakeCamera4.label);
t.is(cameras[0].cameraType, __1.Camera.Type.FRONT);
t.is(cameras[0].currentResolution, undefined);
t.is(cameras[1].deviceId, fakeCamera5.deviceId);
t.is(cameras[1].label, fakeCamera5.label);
t.is(cameras[1].cameraType, __1.Camera.Type.BACK);
t.is(cameras[1].currentResolution, undefined);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("getCameras (resolution label information)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var cameras;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub.resolves([fakeCamera6, fakeCamera7]);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 1:
cameras = _a.sent();
t.not(cameras, null);
t.is(cameras.length, 2);
t.is(cameras[0].deviceId, fakeCamera6.deviceId);
t.is(cameras[0].label, fakeCamera6.label);
t.is(cameras[0].cameraType, __1.Camera.Type.BACK);
t.is(cameras[0].currentResolution, undefined);
t.is(cameras[1].deviceId, fakeCamera7.deviceId);
t.is(cameras[1].label, fakeCamera7.label);
t.is(cameras[1].cameraType, __1.Camera.Type.FRONT);
t.is(cameras[1].currentResolution, undefined);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("getCameras (quickly consecutively)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var cameras;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub.resolves([fakeCamera1, fakeCamera2]);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 1:
_a.sent();
t.is(enumerateDevicesStub.callCount, 2);
resetStubs();
// tslint:disable-next-line: no-floating-promises
__1.CameraAccess.getCameras();
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 2:
cameras = _a.sent();
t.is(enumerateDevicesStub.callCount, 2);
t.not(cameras, null);
t.is(cameras.length, 2);
t.is(cameras[0].deviceId, fakeCamera1.deviceId);
t.is(cameras[0].label, fakeCamera1.label);
t.is(cameras[0].cameraType, __1.Camera.Type.BACK);
t.is(cameras[0].currentResolution, undefined);
t.is(cameras[1].deviceId, fakeCamera2.deviceId);
t.is(cameras[1].label, fakeCamera2.label);
t.is(cameras[1].cameraType, __1.Camera.Type.FRONT);
t.is(cameras[1].currentResolution, undefined);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("adjustCamerasFromMainCameraStream", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var originalCameras, cams;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub.resolves([fakeCamera1, fakeCamera2]);
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 1:
originalCameras = _a.sent();
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream({}, cams), undefined);
t.is(cams[0].cameraType, __1.Camera.Type.BACK);
t.is(cams[1].cameraType, __1.Camera.Type.FRONT);
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream(getFakeMediaStreamTrack("1", "environment", ""), cams), cams[0]);
t.is(cams[0].cameraType, __1.Camera.Type.BACK);
t.is(cams[1].cameraType, __1.Camera.Type.FRONT);
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream(getFakeMediaStreamTrack("2", "environment", ""), cams), undefined);
t.is(cams[0].cameraType, __1.Camera.Type.BACK);
t.is(cams[1].cameraType, __1.Camera.Type.BACK);
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream(getFakeMediaStreamTrack("2", "user", ""), cams), undefined);
t.is(cams[0].cameraType, __1.Camera.Type.BACK);
t.is(cams[1].cameraType, __1.Camera.Type.FRONT);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("adjustCamerasFromMainCameraStream (unknown cameras)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var originalCameras, cams;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub.resolves([fakeCamera4, fakeCamera5]);
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 1:
originalCameras = _a.sent();
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream({}, cams), undefined);
t.is(cams[0].cameraType, __1.Camera.Type.FRONT);
t.is(cams[1].cameraType, __1.Camera.Type.BACK);
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream(getFakeMediaStreamTrack("4", "environment", ""), cams), cams[0]);
t.is(cams[0].cameraType, __1.Camera.Type.BACK);
t.is(cams[1].cameraType, __1.Camera.Type.FRONT);
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream(getFakeMediaStreamTrack("5", "environment", ""), cams), cams[1]);
t.is(cams[0].cameraType, __1.Camera.Type.FRONT);
t.is(cams[1].cameraType, __1.Camera.Type.BACK);
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream(getFakeMediaStreamTrack("5", "user", ""), cams), undefined);
t.is(cams[0].cameraType, __1.Camera.Type.FRONT);
t.is(cams[1].cameraType, __1.Camera.Type.BACK);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("adjustCamerasFromMainCameraStream (triple camera setup)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var originalCameras, cams;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
// Back cameras with the lowest ID in label are the main one
fakeCompatibleBrowser();
navigator.mediaDevices.enumerateDevices = enumerateDevicesStub.resolves([fakeCamera2, fakeCamera9, fakeCamera8]);
return [4 /*yield*/, __1.CameraAccess.getCameras()];
case 1:
originalCameras = _a.sent();
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream(getFakeMediaStreamTrack("8", "environment", ""), cams), cams[2]);
t.is(cams[0].cameraType, __1.Camera.Type.FRONT);
t.is(cams[1].cameraType, __1.Camera.Type.BACK);
t.is(cams[2].cameraType, __1.Camera.Type.BACK);
cams = deepObjectArrayCopy(originalCameras);
t.is(__1.CameraAccess.adjustCamerasFromMainCameraStream(getFakeMediaStreamTrack("9", "environment", ""), cams), undefined);
t.is(cams[0].cameraType, __1.Camera.Type.FRONT);
t.is(cams[1].cameraType, __1.Camera.Type.BACK);
t.is(cams[2].cameraType, __1.Camera.Type.BACK);
return [2 /*return*/];
}
});
}); });
// tslint:disable-next-line:max-func-body-length
ava_1.default.serial("accessCameraStream", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var fakeEmptyBackCamera, mediaStream, fakeEmptyFrontCamera, fakeCamera;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
fakeEmptyBackCamera = {
deviceId: "",
label: "",
cameraType: __1.Camera.Type.BACK
};
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(0, fakeEmptyBackCamera)];
case 1:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
facingMode: { ideal: "environment" },
width: { min: 1400, ideal: 1920, max: 1920 },
height: { min: 900, ideal: 1440, max: 1440 }
}
});
t.not(mediaStream, null);
fakeEmptyFrontCamera = {
deviceId: "",
label: "",
cameraType: __1.Camera.Type.FRONT
};
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(0, fakeEmptyFrontCamera)];
case 2:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
facingMode: { ideal: "user" },
width: { min: 1400, ideal: 1920, max: 1920 },
height: { min: 900, ideal: 1440, max: 1440 }
}
});
t.not(mediaStream, null);
fakeCamera = {
deviceId: fakeCamera1.deviceId,
label: fakeCamera1.label,
cameraType: __1.Camera.Type.BACK
};
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(0, fakeCamera)];
case 3:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 1400, ideal: 1920, max: 1920 },
height: { min: 900, ideal: 1440, max: 1440 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(1, fakeCamera)];
case 4:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 1200, ideal: 1920, max: 1920 },
height: { min: 900, ideal: 1200, max: 1200 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(2, fakeCamera)];
case 5:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 1080, ideal: 1920, max: 1920 },
height: { min: 900, ideal: 1080, max: 1080 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(3, fakeCamera)];
case 6:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 960, ideal: 1280, max: 1440 },
height: { min: 480, ideal: 960, max: 960 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(4, fakeCamera)];
case 7:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 720, ideal: 1280, max: 1440 },
height: { min: 480, ideal: 720, max: 768 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(5, fakeCamera)];
case 8:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 640, ideal: 960, max: 1440 },
height: { min: 480, ideal: 720, max: 720 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(6, fakeCamera)];
case 9:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId }
}
});
t.not(mediaStream, null);
return [2 /*return*/];
}
});
}); });
ava_1.default.serial("accessCameraStream (Safari)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var fakeCamera, mediaStream;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
fakeCompatibleBrowser();
__1.BrowserHelper.userAgentInfo.setUA("Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) " +
"AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1");
fakeCamera = {
deviceId: fakeCamera1.deviceId,
label: fakeCamera1.label,
cameraType: __1.Camera.Type.BACK
};
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(0, fakeCamera)];
case 1:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 1400, ideal: 1920, max: 1920 },
height: { min: 900, ideal: 1080, max: 1440 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(1, fakeCamera)];
case 2:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 1200, ideal: 1600, max: 1920 },
height: { min: 900, ideal: 1080, max: 1200 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(2, fakeCamera)];
case 3:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 1080, ideal: 1600, max: 1920 },
height: { min: 900, ideal: 900, max: 1080 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(3, fakeCamera)];
case 4:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 960, ideal: 1280, max: 1440 },
height: { min: 480, ideal: 720, max: 960 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(4, fakeCamera)];
case 5:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 720, ideal: 1024, max: 1440 },
height: { min: 480, ideal: 768, max: 768 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(5, fakeCamera)];
case 6:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId },
width: { min: 640, ideal: 800, max: 1440 },
height: { min: 480, ideal: 600, max: 720 }
}
});
t.not(mediaStream, null);
resetStubs();
return [4 /*yield*/, __1.CameraAccess.accessCameraStream(6, fakeCamera)];
case 7:
mediaStream = _a.sent();
t.true(getUserMediaStub.called);
t.deepEqual(getUserMediaStub.args[0][0], {
audio: false,
video: {
deviceId: { exact: fakeCamera.deviceId }
}
});
t.not(mediaStream, null);
return [2 /*return*/];
}
});
}); });
//# sourceMappingURL=cameraAccess.spec.js.map