@bigbinary/neeto-media-recorder 2.7.16 → 2.7.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { shallow } from 'zustand/shallow';
2
2
  import { useState, useRef, useCallback, useEffect, forwardRef, useImperativeHandle } from 'react';
3
+ import { useMutation, isCancelledError } from '@tanstack/react-query';
3
4
  import classNames from 'classnames';
4
5
  import { isNotEmpty, noop } from '@bigbinary/neeto-cist';
6
+ import Browser from '@bigbinary/neeto-icons/Browser';
5
7
  import { SCREEN_RECORDER_STATUS, UPLOAD_STATUS as UPLOAD_STATUS$1, ONE_SECOND_IN_MILLISECONDS as ONE_SECOND_IN_MILLISECONDS$1, MIME_TYPE as MIME_TYPE$1, ONE_MINUTE_IN_MILLISECONDS as ONE_MINUTE_IN_MILLISECONDS$1, IS_EXTENSION as IS_EXTENSION$1, SCREEN_RECORDER_ERROR, IS_SAFARI_EXTENSION, MIC_NOT_WORKING_SILENCE_TIMEOUT, SCREEN_RECORDER_EVENT, COUNTDOWN_TIME, UPLOAD_EVENT } from '@bigbinary/neeto-media-recorder/constants';
6
8
  import { screenRecorder, useMultipartS3UploadStatus, getMultipartS3Uploader } from '@bigbinary/neeto-media-recorder/core';
7
9
  import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
@@ -10,7 +12,6 @@ import Button from '@bigbinary/neetoui/Button';
10
12
  import Callout from '@bigbinary/neetoui/Callout';
11
13
  import Typography from '@bigbinary/neetoui/Typography';
12
14
  import { useTranslation, Trans } from 'react-i18next';
13
- import { useMutation } from '@tanstack/react-query';
14
15
  import axios from 'axios';
15
16
  import platform from 'platform';
16
17
  import { isNotNil, isEmpty } from 'ramda';
@@ -660,14 +661,14 @@ var AbortUpload = withT(function (_ref) {
660
661
  className: "w-full space-y-2 text-center",
661
662
  children: [/*#__PURE__*/jsxs(Typography, {
662
663
  className: "select-none",
663
- "data-cy": "recorder-discarding-recording-message",
664
+ "data-testid": "recorder-discarding-recording-message",
664
665
  style: "h2",
665
666
  children: [t("neetoMediaRecorder.record.discardingVideo"), /*#__PURE__*/jsx(Spinner, {
666
667
  className: "ml-3"
667
668
  })]
668
669
  }), /*#__PURE__*/jsx(Typography, {
669
670
  className: "select-none",
670
- "data-cy": "recorder-do-not-leave-page-message",
671
+ "data-testid": "recorder-do-not-leave-page-message",
671
672
  children: t("neetoMediaRecorder.record.doNotLeaveThePage")
672
673
  })]
673
674
  })
@@ -803,37 +804,39 @@ var Controls = function Controls(_ref) {
803
804
  "neeto-ui-rounded-lg neeto-ui-border-gray-200 border-2": hasRecordingStarted
804
805
  }, className, isNotEmpty(classNames))),
805
806
  children: [shouldShowSelectScreenButton && /*#__PURE__*/jsxs("div", {
806
- className: "mt-4 flex gap-4",
807
+ className: "flex gap-4",
807
808
  children: [/*#__PURE__*/jsx(Button, {
808
809
  className: "flex-shrink-0",
809
- "data-cy": "media-recorder-record-button",
810
+ "data-testid": "media-recorder-record-button",
810
811
  icon: function icon() {
811
812
  return /*#__PURE__*/jsx(Computer, {
812
- size: 28
813
+ size: 20
813
814
  });
814
815
  },
816
+ iconPosition: "left",
815
817
  label: t("neetoMediaRecorder.record.selectScreen"),
816
818
  loading: isStatus(SCREEN_RECORDER_STATUS.acquiring_media),
817
819
  size: "large",
818
820
  onClick: startRecording
819
821
  }), /*#__PURE__*/jsx(Button, {
820
822
  className: "flex-shrink-0",
821
- "data-cy": "media-recorder-discard-button",
823
+ "data-testid": "media-recorder-discard-button",
822
824
  icon: function icon() {
823
825
  return /*#__PURE__*/jsx(Delete, {
824
- size: 28
826
+ size: 20
825
827
  });
826
828
  },
829
+ iconPosition: "left",
827
830
  label: t("neetoMediaRecorder.record.discard"),
828
831
  size: "large",
829
832
  style: "danger",
830
833
  onClick: onDiscard
831
834
  })]
832
835
  }), shouldShowGrantMicPermissionButton && /*#__PURE__*/jsxs("div", {
833
- className: "mt-4 flex gap-4",
836
+ className: "flex gap-4",
834
837
  children: [/*#__PURE__*/jsx(Button, {
835
838
  className: "flex-shrink-0",
836
- "data-cy": "media-recorder-no-audio-button",
839
+ "data-testid": "media-recorder-no-audio-button",
837
840
  label: t("neetoMediaRecorder.record.iDontNeedAudio"),
838
841
  size: "large",
839
842
  style: "danger",
@@ -845,9 +848,10 @@ var Controls = function Controls(_ref) {
845
848
  }
846
849
  }), /*#__PURE__*/jsx(Button, {
847
850
  className: "flex-shrink-0",
848
- "data-cy": "media-recorder-grant-microphone-permission-button",
851
+ "data-testid": "media-recorder-grant-microphone-permission-button",
849
852
  icon: Unlock,
850
- iconSize: 28,
853
+ iconPosition: "left",
854
+ iconSize: 20,
851
855
  label: t("neetoMediaRecorder.record.grantMicPermission"),
852
856
  size: "large",
853
857
  onClick: startRecording
@@ -856,7 +860,7 @@ var Controls = function Controls(_ref) {
856
860
  className: "flex items-center gap-3",
857
861
  children: [/*#__PURE__*/jsx(Button, {
858
862
  className: "nrec-done-button flex-shrink-0",
859
- "data-cy": "media-recorder-stop-button",
863
+ "data-testid": "media-recorder-stop-button",
860
864
  icon: function icon() {
861
865
  return /*#__PURE__*/jsx(StopIcon, {
862
866
  size: 28
@@ -871,7 +875,7 @@ var Controls = function Controls(_ref) {
871
875
  })]
872
876
  }), isStatus(SCREEN_RECORDER_STATUS.recording) && /*#__PURE__*/jsx(Button, {
873
877
  className: "flex-shrink-0",
874
- "data-cy": "media-recorder-pause-button",
878
+ "data-testid": "media-recorder-pause-button",
875
879
  style: "text",
876
880
  tooltipProps: {
877
881
  content: t("neetoMediaRecorder.record.pause"),
@@ -884,7 +888,7 @@ var Controls = function Controls(_ref) {
884
888
  })
885
889
  }), isStatus(SCREEN_RECORDER_STATUS.paused) && /*#__PURE__*/jsx(Button, {
886
890
  className: "flex-shrink-0",
887
- "data-cy": "media-recorder-play-button",
891
+ "data-testid": "media-recorder-play-button",
888
892
  style: "text",
889
893
  tooltipProps: {
890
894
  content: t("neetoMediaRecorder.record.resume"),
@@ -898,7 +902,7 @@ var Controls = function Controls(_ref) {
898
902
  className: "flex items-center gap-3",
899
903
  children: [/*#__PURE__*/jsx(Button, {
900
904
  className: "flex-shrink-0",
901
- "data-cy": "media-recorder-restart-button",
905
+ "data-testid": "media-recorder-restart-button",
902
906
  style: "text",
903
907
  tooltipProps: {
904
908
  content: t("neetoMediaRecorder.record.restart"),
@@ -912,7 +916,7 @@ var Controls = function Controls(_ref) {
912
916
  })
913
917
  }), /*#__PURE__*/jsx(Button, {
914
918
  className: "flex-shrink-0",
915
- "data-cy": "media-recorder-discard-button",
919
+ "data-testid": "media-recorder-discard-button",
916
920
  style: "text",
917
921
  tooltipProps: {
918
922
  content: t("neetoMediaRecorder.record.discard"),
@@ -1148,19 +1152,19 @@ var Timer = function Timer() {
1148
1152
  elapsedTime = _useRecorderStore.elapsedTime;
1149
1153
  return /*#__PURE__*/jsxs("div", {
1150
1154
  className: "mb-4 flex flex-col items-center justify-center",
1151
- "data-cy": "recorder-timer-wrapper",
1155
+ "data-testid": "recorder-timer-wrapper",
1152
1156
  children: [/*#__PURE__*/jsx(Typography, {
1153
1157
  className: "neeto-ui-text-4xl mb-3 flex justify-center",
1154
- "data-cy": "recorder-timer-elapsed-time",
1158
+ "data-testid": "recorder-timer-elapsed-time",
1155
1159
  weight: "semibold",
1156
1160
  children: getTimeString(elapsedTime)
1157
1161
  }), /*#__PURE__*/jsx(Typography, {
1158
1162
  className: "mb-2",
1159
- "data-cy": "recorder-recording-in-progress-message",
1163
+ "data-testid": "recorder-recording-in-progress-message",
1160
1164
  style: "h3",
1161
1165
  children: t("neetoMediaRecorder.record.inProgress")
1162
1166
  }), /*#__PURE__*/jsx(Typography, {
1163
- "data-cy": "recorder-do-not-leave-page-message",
1167
+ "data-testid": "recorder-do-not-leave-page-message",
1164
1168
  style: "body2",
1165
1169
  children: t("neetoMediaRecorder.record.doNotLeaveThePage")
1166
1170
  })]
@@ -1173,7 +1177,7 @@ var UnSupportedBrowser = withT(function (_ref) {
1173
1177
  className: "flex h-screen w-full items-center justify-center",
1174
1178
  children: /*#__PURE__*/jsx(Callout, {
1175
1179
  className: "p-5",
1176
- "data-cy": "recorder-unsupported-browser-callout",
1180
+ "data-testid": "recorder-unsupported-browser-callout",
1177
1181
  style: "danger",
1178
1182
  children: t("neetoMediaRecorder.unsupportedBrowser")
1179
1183
  })
@@ -1278,12 +1282,12 @@ var UploadingInProgress = function UploadingInProgress(_ref) {
1278
1282
  className: "w-full pb-6 text-center",
1279
1283
  children: [/*#__PURE__*/jsx(Typography, {
1280
1284
  className: "select-none pb-6",
1281
- "data-cy": "please-dont-close-this-tab",
1285
+ "data-testid": "please-dont-close-this-tab",
1282
1286
  style: "h1",
1283
1287
  children: t("neetoMediaRecorder.record.pleaseDontCloseThisTab")
1284
1288
  }), /*#__PURE__*/jsx(Typography, {
1285
1289
  className: "select-none pb-3",
1286
- "data-cy": "recorder-uploading-recording-message",
1290
+ "data-testid": "recorder-uploading-recording-message",
1287
1291
  style: "h2",
1288
1292
  weight: "normal",
1289
1293
  children: t("neetoMediaRecorder.record.uploadingRecording")
@@ -1297,33 +1301,33 @@ var UploadingInProgress = function UploadingInProgress(_ref) {
1297
1301
  })
1298
1302
  }), /*#__PURE__*/jsx(Typography, {
1299
1303
  className: "select-none",
1300
- "data-cy": "recorder-do-not-leave-page-message",
1304
+ "data-testid": "recorder-do-not-leave-page-message",
1301
1305
  style: "body2",
1302
1306
  children: t("neetoMediaRecorder.record.copyLinkDescription")
1303
1307
  })]
1304
1308
  }), /*#__PURE__*/jsxs("div", {
1305
1309
  className: "flex flex-wrap items-center justify-center gap-3",
1306
1310
  children: [/*#__PURE__*/jsx(CopyToClipboardButton, {
1307
- "data-cy": "recorder-copy-link-button",
1311
+ "data-testid": "recorder-copy-link-button",
1308
1312
  icon: Copy,
1309
1313
  label: t("neetoMediaRecorder.record.copyToClipboard"),
1310
1314
  style: "tertiary",
1311
1315
  value: generatePublicUrl(recording.id, baseURL)
1312
1316
  }), /*#__PURE__*/jsx(Button, {
1313
- "data-cy": "recorder-download-webm-button",
1317
+ "data-testid": "recorder-download-webm-button",
1314
1318
  icon: Download,
1315
1319
  style: "tertiary",
1316
1320
  label: isMp4Supported() ? t("neetoMediaRecorder.record.downloadMp4") : t("neetoMediaRecorder.record.downloadWebm"),
1317
1321
  onClick: handleRecordingBlobDownload
1318
1322
  }), /*#__PURE__*/jsx(Button, {
1319
- "data-cy": "recorder-retry-upload-button",
1323
+ "data-testid": "recorder-retry-upload-button",
1320
1324
  disabled: isRetryUpload,
1321
1325
  icon: Refresh,
1322
1326
  label: t("neetoMediaRecorder.record.retry"),
1323
1327
  style: "tertiary",
1324
1328
  onClick: onRetryUpload
1325
1329
  }), /*#__PURE__*/jsx(Button, {
1326
- "data-cy": "recorder-discard-recording-button",
1330
+ "data-testid": "recorder-discard-recording-button",
1327
1331
  icon: Close,
1328
1332
  label: t("neetoMediaRecorder.record.discardRecording"),
1329
1333
  style: "tertiary",
@@ -1568,25 +1572,49 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1568
1572
  }
1569
1573
  }, [elapsedTime]);
1570
1574
  recordingRef.current = recording;
1575
+ var handleCreateRecordingError = function handleCreateRecordingError(error) {
1576
+ if (isCancelledError(error)) return;
1577
+ screenRecorder.setError(SCREEN_RECORDER_ERROR.FailedToStart);
1578
+ onError(SCREEN_RECORDER_ERROR.FailedToStart);
1579
+ };
1571
1580
  var handleCreateRecording = /*#__PURE__*/function () {
1572
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
1581
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
1573
1582
  var payload;
1574
- return _regeneratorRuntime.wrap(function _callee$(_context) {
1575
- while (1) switch (_context.prev = _context.next) {
1583
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
1584
+ while (1) switch (_context2.prev = _context2.next) {
1576
1585
  case 0:
1577
1586
  payload = {
1578
1587
  folderId: folderId
1579
1588
  };
1580
- _context.next = 3;
1589
+ _context2.next = 3;
1581
1590
  return getDeviceInfo(mimeType);
1582
1591
  case 3:
1583
- payload.deviceInfo = _context.sent;
1584
- createRecordingPromise.current = createRecording(payload);
1592
+ payload.deviceInfo = _context2.sent;
1593
+ createRecordingPromise.current = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
1594
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
1595
+ while (1) switch (_context.prev = _context.next) {
1596
+ case 0:
1597
+ _context.prev = 0;
1598
+ _context.next = 3;
1599
+ return createRecording(payload);
1600
+ case 3:
1601
+ _context.next = 8;
1602
+ break;
1603
+ case 5:
1604
+ _context.prev = 5;
1605
+ _context.t0 = _context["catch"](0);
1606
+ handleCreateRecordingError(_context.t0);
1607
+ case 8:
1608
+ case "end":
1609
+ return _context.stop();
1610
+ }
1611
+ }, _callee, null, [[0, 5]]);
1612
+ }))();
1585
1613
  case 5:
1586
1614
  case "end":
1587
- return _context.stop();
1615
+ return _context2.stop();
1588
1616
  }
1589
- }, _callee);
1617
+ }, _callee2);
1590
1618
  }));
1591
1619
  return function handleCreateRecording() {
1592
1620
  return _ref3.apply(this, arguments);
@@ -1597,35 +1625,35 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1597
1625
  return onUploadComplete((_recordingRef$current = recordingRef.current) === null || _recordingRef$current === void 0 ? void 0 : _recordingRef$current.id);
1598
1626
  };
1599
1627
  var handleDiscardRecording = /*#__PURE__*/function () {
1600
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
1601
- var _ref5,
1602
- _ref5$forceAbort,
1628
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
1629
+ var _ref6,
1630
+ _ref6$forceAbort,
1603
1631
  forceAbort,
1604
1632
  multipartS3Uploader,
1605
- _args2 = arguments;
1606
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
1607
- while (1) switch (_context2.prev = _context2.next) {
1633
+ _args3 = arguments;
1634
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1635
+ while (1) switch (_context3.prev = _context3.next) {
1608
1636
  case 0:
1609
- _ref5 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, _ref5$forceAbort = _ref5.forceAbort, forceAbort = _ref5$forceAbort === void 0 ? false : _ref5$forceAbort;
1637
+ _ref6 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, _ref6$forceAbort = _ref6.forceAbort, forceAbort = _ref6$forceAbort === void 0 ? false : _ref6$forceAbort;
1610
1638
  multipartS3Uploader = getMultipartS3Uploader();
1611
- _context2.next = 4;
1639
+ _context3.next = 4;
1612
1640
  return multipartS3Uploader.abortUpload(forceAbort);
1613
1641
  case 4:
1614
1642
  if (!(multipartS3Uploader.status === UPLOAD_STATUS$1.aborting)) {
1615
- _context2.next = 6;
1643
+ _context3.next = 6;
1616
1644
  break;
1617
1645
  }
1618
- return _context2.abrupt("return");
1646
+ return _context3.abrupt("return");
1619
1647
  case 6:
1620
1648
  onDiscard();
1621
1649
  case 7:
1622
1650
  case "end":
1623
- return _context2.stop();
1651
+ return _context3.stop();
1624
1652
  }
1625
- }, _callee2);
1653
+ }, _callee3);
1626
1654
  }));
1627
1655
  return function handleDiscardRecording() {
1628
- return _ref4.apply(this, arguments);
1656
+ return _ref5.apply(this, arguments);
1629
1657
  };
1630
1658
  }();
1631
1659
  var handleRestartRecording = function handleRestartRecording() {
@@ -1697,15 +1725,15 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1697
1725
  var multipartS3Uploader = getMultipartS3Uploader({
1698
1726
  initialize: true
1699
1727
  });
1700
- var recorderCallbacks = (_recorderCallbacks = {}, _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onDataAvailable, multipartS3Uploader.push), _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onStop, _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
1701
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
1702
- while (1) switch (_context3.prev = _context3.next) {
1728
+ var recorderCallbacks = (_recorderCallbacks = {}, _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onDataAvailable, multipartS3Uploader.push), _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onStop, _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
1729
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
1730
+ while (1) switch (_context4.prev = _context4.next) {
1703
1731
  case 0:
1704
1732
  if (!createRecordingPromise.current) {
1705
- _context3.next = 4;
1733
+ _context4.next = 4;
1706
1734
  break;
1707
1735
  }
1708
- _context3.next = 3;
1736
+ _context4.next = 3;
1709
1737
  return createRecordingPromise.current;
1710
1738
  case 3:
1711
1739
  createRecordingPromise.current = null;
@@ -1713,9 +1741,9 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1713
1741
  multipartS3Uploader.completeUpload();
1714
1742
  case 5:
1715
1743
  case "end":
1716
- return _context3.stop();
1744
+ return _context4.stop();
1717
1745
  }
1718
- }, _callee3);
1746
+ }, _callee4);
1719
1747
  }))), _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onDiscard, handleDiscardRecording), _defineProperty(_recorderCallbacks, SCREEN_RECORDER_EVENT.onRestart, handleRestartRecording), _recorderCallbacks);
1720
1748
  var uploaderCallbacks = (_uploaderCallbacks2 = {}, _defineProperty(_uploaderCallbacks2, UPLOAD_EVENT.onComplete, handleUploadComplete), _defineProperty(_uploaderCallbacks2, UPLOAD_EVENT.onError, handleUploadError), _defineProperty(_uploaderCallbacks2, UPLOAD_EVENT.onProgress, handleUploadProgress), _uploaderCallbacks2);
1721
1749
  Object.keys(recorderCallbacks).forEach(function (key) {
@@ -1757,7 +1785,7 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1757
1785
  className: "flex h-screen w-full flex-col items-center justify-center gap-4",
1758
1786
  children: [/*#__PURE__*/jsx(Callout, {
1759
1787
  className: "p-5",
1760
- "data-cy": "recorder-unsupported-browser-callout",
1788
+ "data-testid": "recorder-unsupported-browser-callout",
1761
1789
  style: "danger",
1762
1790
  children: t("neetoMediaRecorder.notSupportedError")
1763
1791
  }), /*#__PURE__*/jsx(Button, {
@@ -1798,18 +1826,28 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1798
1826
  className: classNames("w-full max-w-3xl"),
1799
1827
  children: [/*#__PURE__*/jsx(UseDesktopAppCallout, {}), error === SCREEN_RECORDER_ERROR.InsufficientData && /*#__PURE__*/jsx(Callout, {
1800
1828
  className: "mb-2 p-3",
1801
- "data-cy": "recorder-insufficient-data-error-callout",
1829
+ "data-testid": "recorder-insufficient-data-error-callout",
1802
1830
  style: "danger",
1803
1831
  children: t("neetoMediaRecorder.insufficientDataError")
1804
1832
  }), error === SCREEN_RECORDER_ERROR.NotAllowedError && /*#__PURE__*/jsxs("div", {
1805
- className: "flex flex-col items-center",
1806
- children: [/*#__PURE__*/jsx(Typography, {
1807
- className: "mb-2",
1833
+ className: "flex flex-col items-center pt-10",
1834
+ children: [/*#__PURE__*/jsx("div", {
1835
+ className: "mb-6 flex justify-center",
1836
+ children: /*#__PURE__*/jsx("div", {
1837
+ className: "neeto-ui-bg-gray-100 neeto-ui-rounded-full flex h-16 w-16 items-center justify-center",
1838
+ children: /*#__PURE__*/jsx(Browser, {
1839
+ className: "neeto-ui-text-gray-600",
1840
+ size: 40
1841
+ })
1842
+ })
1843
+ }), /*#__PURE__*/jsx(Typography, {
1844
+ className: "mb-3 text-center",
1808
1845
  style: "h3",
1809
1846
  children: t("neetoMediaRecorder.record.screenSharePermissionDeniedTitle", {
1810
1847
  appName: appName
1811
1848
  })
1812
1849
  }), /*#__PURE__*/jsx(Typography, {
1850
+ className: "neeto-ui-text-gray-600 text-center leading-normal",
1813
1851
  children: /*#__PURE__*/jsx(Trans, {
1814
1852
  i18nKey: "neetoMediaRecorder.record.screenSharePermissionDenied",
1815
1853
  components: {
@@ -1833,17 +1871,17 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1833
1871
  }), /*#__PURE__*/jsx(AllowMicAccess, {})]
1834
1872
  }), isRecorderStatus(SCREEN_RECORDER_STATUS.acquiring_media) && /*#__PURE__*/jsx(Callout, {
1835
1873
  className: "mb-2 p-3",
1836
- "data-cy": "recorder-grant-permission-info-callout",
1874
+ "data-testid": "recorder-grant-permission-info-callout",
1837
1875
  style: "info",
1838
1876
  children: t("neetoMediaRecorder.record.grantPermissionMessage")
1839
1877
  }), shouldShowSafariExtensionCalloutToStartRecording && /*#__PURE__*/jsx(Callout, {
1840
1878
  className: "mx-auto mb-2 w-1/2 p-3",
1841
- "data-cy": "recorder-start-recording-info-callout",
1879
+ "data-testid": "recorder-start-recording-info-callout",
1842
1880
  style: "info",
1843
1881
  children: t("neetoMediaRecorder.record.clickToStartRecording")
1844
1882
  }), shouldShowTimeLimitWarning && /*#__PURE__*/jsx(Callout, {
1845
1883
  className: "mx-auto mb-2 w-1/2 p-3",
1846
- "data-cy": "recorder-time-limit-warning-callout",
1884
+ "data-testid": "recorder-time-limit-warning-callout",
1847
1885
  style: "warning",
1848
1886
  children: /*#__PURE__*/jsx(Typography, {
1849
1887
  component: "span",
@@ -1864,7 +1902,7 @@ var MediaRecorder = function MediaRecorder(_ref, ref) {
1864
1902
  })
1865
1903
  }), isRecorderStatus(SCREEN_RECORDER_STATUS.media_acquired, SCREEN_RECORDER_STATUS.restarting) && /*#__PURE__*/jsxs("div", {
1866
1904
  className: "neeto-ui-rounded-lg mx-auto mb-8 flex w-full max-w-4xl flex-col items-center justify-center p-12",
1867
- "data-cy": "recorder-countdown-wrapper",
1905
+ "data-testid": "recorder-countdown-wrapper",
1868
1906
  children: [/*#__PURE__*/jsx("div", {
1869
1907
  className: "relative mb-8",
1870
1908
  children: /*#__PURE__*/jsxs("div", {