mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
docs: add daily test audit report and artifacts
- Run unit tests with coverage (c8) - Generate test audit report (test-audit-report-2026-02-15.md) - Add static analysis of suspicious tests - Add flakiness check script and results (timed out) - Create daily completion log Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
1 parent
a49afdc971
commit
82dc581145
13 files changed
+209997
No files matched your search
@@ -0,0 +1,389 @@
|
||||
{"total": {"lines":{"total":170908,"covered":85324,"skipped":0,"pct":49.92},"statements":{"total":170908,"covered":85324,"skipped":0,"pct":49.92},"functions":{"total":6995,"covered":3238,"skipped":0,"pct":46.29},"branches":{"total":20247,"covered":11578,"skipped":0,"pct":57.18},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/config/instance-config.js": {"lines":{"total":466,"covered":466,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":466,"covered":466,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/config/validate-config.js": {"lines":{"total":184,"covered":164,"skipped":0,"pct":89.13},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":184,"covered":164,"skipped":0,"pct":89.13},"branches":{"total":44,"covered":31,"skipped":0,"pct":70.45}}
|
||||
,"/app/js/accessControl.js": {"lines":{"total":807,"covered":206,"skipped":0,"pct":25.52},"functions":{"total":40,"covered":13,"skipped":0,"pct":32.5},"statements":{"total":807,"covered":206,"skipped":0,"pct":25.52},"branches":{"total":41,"covered":19,"skipped":0,"pct":46.34}}
|
||||
,"/app/js/adminListStore.js": {"lines":{"total":1032,"covered":93,"skipped":0,"pct":9.01},"functions":{"total":29,"covered":1,"skipped":0,"pct":3.44},"statements":{"total":1032,"covered":93,"skipped":0,"pct":9.01},"branches":{"total":8,"covered":2,"skipped":0,"pct":25}}
|
||||
,"/app/js/app.js": {"lines":{"total":5134,"covered":1845,"skipped":0,"pct":35.93},"functions":{"total":435,"covered":40,"skipped":0,"pct":9.19},"statements":{"total":5134,"covered":1845,"skipped":0,"pct":35.93},"branches":{"total":119,"covered":60,"skipped":0,"pct":50.42}}
|
||||
,"/app/js/applicationContext.js": {"lines":{"total":24,"covered":16,"skipped":0,"pct":66.66},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":24,"covered":16,"skipped":0,"pct":66.66},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}}
|
||||
,"/app/js/channelProfile.js": {"lines":{"total":5576,"covered":1261,"skipped":0,"pct":22.61},"functions":{"total":138,"covered":34,"skipped":0,"pct":24.63},"statements":{"total":5576,"covered":1261,"skipped":0,"pct":22.61},"branches":{"total":292,"covered":131,"skipped":0,"pct":44.86}}
|
||||
,"/app/js/config.js": {"lines":{"total":170,"covered":151,"skipped":0,"pct":88.82},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":170,"covered":151,"skipped":0,"pct":88.82},"branches":{"total":15,"covered":12,"skipped":0,"pct":80}}
|
||||
,"/app/js/constants.js": {"lines":{"total":523,"covered":473,"skipped":0,"pct":90.43},"functions":{"total":40,"covered":30,"skipped":0,"pct":75},"statements":{"total":523,"covered":473,"skipped":0,"pct":90.43},"branches":{"total":50,"covered":34,"skipped":0,"pct":68}}
|
||||
,"/app/js/designSystem.js": {"lines":{"total":98,"covered":81,"skipped":0,"pct":82.65},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":98,"covered":81,"skipped":0,"pct":82.65},"branches":{"total":27,"covered":18,"skipped":0,"pct":66.66}}
|
||||
,"/app/js/directMessagesStore.js": {"lines":{"total":336,"covered":170,"skipped":0,"pct":50.59},"functions":{"total":16,"covered":12,"skipped":0,"pct":75},"statements":{"total":336,"covered":170,"skipped":0,"pct":50.59},"branches":{"total":46,"covered":20,"skipped":0,"pct":43.47}}
|
||||
,"/app/js/dmDecryptor.js": {"lines":{"total":651,"covered":453,"skipped":0,"pct":69.58},"functions":{"total":21,"covered":21,"skipped":0,"pct":100},"statements":{"total":651,"covered":453,"skipped":0,"pct":69.58},"branches":{"total":144,"covered":73,"skipped":0,"pct":50.69}}
|
||||
,"/app/js/embedDiagnostics.js": {"lines":{"total":177,"covered":9,"skipped":0,"pct":5.08},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":177,"covered":9,"skipped":0,"pct":5.08},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}}
|
||||
,"/app/js/gridHealth.js": {"lines":{"total":553,"covered":135,"skipped":0,"pct":24.41},"functions":{"total":20,"covered":5,"skipped":0,"pct":25},"statements":{"total":553,"covered":135,"skipped":0,"pct":24.41},"branches":{"total":34,"covered":6,"skipped":0,"pct":17.64}}
|
||||
,"/app/js/gridHealthLogic.js": {"lines":{"total":134,"covered":113,"skipped":0,"pct":84.32},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":134,"covered":113,"skipped":0,"pct":84.32},"branches":{"total":48,"covered":42,"skipped":0,"pct":87.5}}
|
||||
,"/app/js/hashChangeHandler.js": {"lines":{"total":138,"covered":118,"skipped":0,"pct":85.5},"functions":{"total":8,"covered":5,"skipped":0,"pct":62.5},"statements":{"total":138,"covered":118,"skipped":0,"pct":85.5},"branches":{"total":37,"covered":27,"skipped":0,"pct":72.97}}
|
||||
,"/app/js/hashView.js": {"lines":{"total":35,"covered":7,"skipped":0,"pct":20},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":35,"covered":7,"skipped":0,"pct":20},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/historyView.js": {"lines":{"total":2546,"covered":258,"skipped":0,"pct":10.13},"functions":{"total":78,"covered":1,"skipped":0,"pct":1.28},"statements":{"total":2546,"covered":258,"skipped":0,"pct":10.13},"branches":{"total":12,"covered":5,"skipped":0,"pct":41.66}}
|
||||
,"/app/js/lists.js": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/magnetShared.js": {"lines":{"total":423,"covered":316,"skipped":0,"pct":74.7},"functions":{"total":16,"covered":15,"skipped":0,"pct":93.75},"statements":{"total":423,"covered":316,"skipped":0,"pct":74.7},"branches":{"total":124,"covered":83,"skipped":0,"pct":66.93}}
|
||||
,"/app/js/magnetUtils.js": {"lines":{"total":129,"covered":127,"skipped":0,"pct":98.44},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":129,"covered":127,"skipped":0,"pct":98.44},"branches":{"total":33,"covered":24,"skipped":0,"pct":72.72}}
|
||||
,"/app/js/magnets.js": {"lines":{"total":96,"covered":13,"skipped":0,"pct":13.54},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":96,"covered":13,"skipped":0,"pct":13.54},"branches":{"total":7,"covered":7,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostrClientFacade.js": {"lines":{"total":21,"covered":21,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":21,"covered":21,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostrClientRegistry.js": {"lines":{"total":271,"covered":189,"skipped":0,"pct":69.74},"functions":{"total":18,"covered":13,"skipped":0,"pct":72.22},"statements":{"total":271,"covered":189,"skipped":0,"pct":69.74},"branches":{"total":63,"covered":46,"skipped":0,"pct":73.01}}
|
||||
,"/app/js/nostrEventSchemas.js": {"lines":{"total":2912,"covered":2369,"skipped":0,"pct":81.35},"functions":{"total":54,"covered":48,"skipped":0,"pct":88.88},"statements":{"total":2912,"covered":2369,"skipped":0,"pct":81.35},"branches":{"total":536,"covered":259,"skipped":0,"pct":48.32}}
|
||||
,"/app/js/nostrPublish.js": {"lines":{"total":252,"covered":143,"skipped":0,"pct":56.74},"functions":{"total":11,"covered":8,"skipped":0,"pct":72.72},"statements":{"total":252,"covered":143,"skipped":0,"pct":56.74},"branches":{"total":38,"covered":18,"skipped":0,"pct":47.36}}
|
||||
,"/app/js/nostrToolsBootstrap.js": {"lines":{"total":699,"covered":497,"skipped":0,"pct":71.1},"functions":{"total":43,"covered":19,"skipped":0,"pct":44.18},"statements":{"total":699,"covered":497,"skipped":0,"pct":71.1},"branches":{"total":142,"covered":81,"skipped":0,"pct":57.04}}
|
||||
,"/app/js/nostrViewEventsFacade.js": {"lines":{"total":27,"covered":27,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":27,"covered":27,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostrWatchHistoryFacade.js": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/nwcSettings.js": {"lines":{"total":370,"covered":45,"skipped":0,"pct":12.16},"functions":{"total":24,"covered":0,"skipped":0,"pct":0},"statements":{"total":370,"covered":45,"skipped":0,"pct":12.16},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/playbackUtils.js": {"lines":{"total":102,"covered":91,"skipped":0,"pct":89.21},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":102,"covered":91,"skipped":0,"pct":89.21},"branches":{"total":16,"covered":2,"skipped":0,"pct":12.5}}
|
||||
,"/app/js/r2.js": {"lines":{"total":245,"covered":140,"skipped":0,"pct":57.14},"functions":{"total":16,"covered":11,"skipped":0,"pct":68.75},"statements":{"total":245,"covered":140,"skipped":0,"pct":57.14},"branches":{"total":40,"covered":15,"skipped":0,"pct":37.5}}
|
||||
,"/app/js/reactionCounter.js": {"lines":{"total":797,"covered":49,"skipped":0,"pct":6.14},"functions":{"total":23,"covered":0,"skipped":0,"pct":0},"statements":{"total":797,"covered":49,"skipped":0,"pct":6.14},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/relayManager.js": {"lines":{"total":771,"covered":385,"skipped":0,"pct":49.93},"functions":{"total":30,"covered":20,"skipped":0,"pct":66.66},"statements":{"total":771,"covered":385,"skipped":0,"pct":49.93},"branches":{"total":118,"covered":64,"skipped":0,"pct":54.23}}
|
||||
,"/app/js/sidebarLoading.js": {"lines":{"total":33,"covered":4,"skipped":0,"pct":12.12},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":33,"covered":4,"skipped":0,"pct":12.12},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/subscriptions.js": {"lines":{"total":2406,"covered":1493,"skipped":0,"pct":62.05},"functions":{"total":87,"covered":58,"skipped":0,"pct":66.66},"statements":{"total":2406,"covered":1493,"skipped":0,"pct":62.05},"branches":{"total":386,"covered":172,"skipped":0,"pct":44.55}}
|
||||
,"/app/js/urlHealthObserver.js": {"lines":{"total":67,"covered":25,"skipped":0,"pct":37.31},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":67,"covered":25,"skipped":0,"pct":37.31},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}}
|
||||
,"/app/js/userBlocks.js": {"lines":{"total":2304,"covered":596,"skipped":0,"pct":25.86},"functions":{"total":63,"covered":21,"skipped":0,"pct":33.33},"statements":{"total":2304,"covered":596,"skipped":0,"pct":25.86},"branches":{"total":113,"covered":33,"skipped":0,"pct":29.2}}
|
||||
,"/app/js/videoEventUtils.js": {"lines":{"total":117,"covered":14,"skipped":0,"pct":11.96},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":117,"covered":14,"skipped":0,"pct":11.96},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/viewCounter.js": {"lines":{"total":674,"covered":259,"skipped":0,"pct":38.42},"functions":{"total":28,"covered":13,"skipped":0,"pct":46.42},"statements":{"total":674,"covered":259,"skipped":0,"pct":38.42},"branches":{"total":58,"covered":15,"skipped":0,"pct":25.86}}
|
||||
,"/app/js/watchHistoryDebug.js": {"lines":{"total":193,"covered":45,"skipped":0,"pct":23.31},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":193,"covered":45,"skipped":0,"pct":23.31},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}}
|
||||
,"/app/js/watchHistoryService.js": {"lines":{"total":1399,"covered":381,"skipped":0,"pct":27.23},"functions":{"total":38,"covered":19,"skipped":0,"pct":50},"statements":{"total":1399,"covered":381,"skipped":0,"pct":27.23},"branches":{"total":98,"covered":35,"skipped":0,"pct":35.71}}
|
||||
,"/app/js/webtorrent.js": {"lines":{"total":1037,"covered":414,"skipped":0,"pct":39.92},"functions":{"total":28,"covered":11,"skipped":0,"pct":39.28},"statements":{"total":1037,"covered":414,"skipped":0,"pct":39.92},"branches":{"total":60,"covered":33,"skipped":0,"pct":55}}
|
||||
,"/app/js/app/authSessionCoordinator.js": {"lines":{"total":1742,"covered":160,"skipped":0,"pct":9.18},"functions":{"total":34,"covered":1,"skipped":0,"pct":2.94},"statements":{"total":1742,"covered":160,"skipped":0,"pct":9.18},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}}
|
||||
,"/app/js/app/bindCoordinator.js": {"lines":{"total":22,"covered":22,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":22,"covered":22,"skipped":0,"pct":100},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}}
|
||||
,"/app/js/app/feedCoordinator.js": {"lines":{"total":1766,"covered":573,"skipped":0,"pct":32.44},"functions":{"total":87,"covered":16,"skipped":0,"pct":18.39},"statements":{"total":1766,"covered":573,"skipped":0,"pct":32.44},"branches":{"total":48,"covered":18,"skipped":0,"pct":37.5}}
|
||||
,"/app/js/app/modalCoordinator.js": {"lines":{"total":647,"covered":232,"skipped":0,"pct":35.85},"functions":{"total":32,"covered":7,"skipped":0,"pct":21.87},"statements":{"total":647,"covered":232,"skipped":0,"pct":35.85},"branches":{"total":30,"covered":19,"skipped":0,"pct":63.33}}
|
||||
,"/app/js/app/moderationCoordinator.js": {"lines":{"total":324,"covered":108,"skipped":0,"pct":33.33},"functions":{"total":29,"covered":2,"skipped":0,"pct":6.89},"statements":{"total":324,"covered":108,"skipped":0,"pct":33.33},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}}
|
||||
,"/app/js/app/playbackCoordinator.js": {"lines":{"total":1216,"covered":199,"skipped":0,"pct":16.36},"functions":{"total":50,"covered":18,"skipped":0,"pct":36},"statements":{"total":1216,"covered":199,"skipped":0,"pct":16.36},"branches":{"total":25,"covered":20,"skipped":0,"pct":80}}
|
||||
,"/app/js/app/routerCoordinator.js": {"lines":{"total":88,"covered":25,"skipped":0,"pct":28.4},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":88,"covered":25,"skipped":0,"pct":28.4},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}}
|
||||
,"/app/js/app/uiCoordinator.js": {"lines":{"total":310,"covered":203,"skipped":0,"pct":65.48},"functions":{"total":14,"covered":10,"skipped":0,"pct":71.42},"statements":{"total":310,"covered":203,"skipped":0,"pct":65.48},"branches":{"total":25,"covered":18,"skipped":0,"pct":72}}
|
||||
,"/app/js/attachments/attachmentUtils.js": {"lines":{"total":162,"covered":27,"skipped":0,"pct":16.66},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":162,"covered":27,"skipped":0,"pct":16.66},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/auth/signingAdapter.js": {"lines":{"total":24,"covered":24,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":24,"covered":24,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}}
|
||||
,"/app/js/designSystem/dynamicStyles.js": {"lines":{"total":308,"covered":236,"skipped":0,"pct":76.62},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":308,"covered":236,"skipped":0,"pct":76.62},"branches":{"total":85,"covered":54,"skipped":0,"pct":63.52}}
|
||||
,"/app/js/designSystem/metrics.js": {"lines":{"total":251,"covered":209,"skipped":0,"pct":83.26},"functions":{"total":25,"covered":15,"skipped":0,"pct":60},"statements":{"total":251,"covered":209,"skipped":0,"pct":83.26},"branches":{"total":53,"covered":33,"skipped":0,"pct":62.26}}
|
||||
,"/app/js/dom/cardObserver.js": {"lines":{"total":209,"covered":92,"skipped":0,"pct":44.01},"functions":{"total":10,"covered":4,"skipped":0,"pct":40},"statements":{"total":209,"covered":92,"skipped":0,"pct":44.01},"branches":{"total":15,"covered":7,"skipped":0,"pct":46.66}}
|
||||
,"/app/js/feedEngine/engine.js": {"lines":{"total":262,"covered":49,"skipped":0,"pct":18.7},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":262,"covered":49,"skipped":0,"pct":18.7},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/feedEngine/exploreScoring.js": {"lines":{"total":451,"covered":379,"skipped":0,"pct":84.03},"functions":{"total":17,"covered":17,"skipped":0,"pct":100},"statements":{"total":451,"covered":379,"skipped":0,"pct":84.03},"branches":{"total":93,"covered":54,"skipped":0,"pct":58.06}}
|
||||
,"/app/js/feedEngine/index.js": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/feedEngine/kidsAudienceFilterStage.js": {"lines":{"total":161,"covered":24,"skipped":0,"pct":14.9},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.66},"statements":{"total":161,"covered":24,"skipped":0,"pct":14.9},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}}
|
||||
,"/app/js/feedEngine/kidsScoring.js": {"lines":{"total":396,"covered":345,"skipped":0,"pct":87.12},"functions":{"total":16,"covered":16,"skipped":0,"pct":100},"statements":{"total":396,"covered":345,"skipped":0,"pct":87.12},"branches":{"total":94,"covered":50,"skipped":0,"pct":53.19}}
|
||||
,"/app/js/feedEngine/sorters.js": {"lines":{"total":508,"covered":268,"skipped":0,"pct":52.75},"functions":{"total":14,"covered":10,"skipped":0,"pct":71.42},"statements":{"total":508,"covered":268,"skipped":0,"pct":52.75},"branches":{"total":68,"covered":45,"skipped":0,"pct":66.17}}
|
||||
,"/app/js/feedEngine/sources.js": {"lines":{"total":238,"covered":29,"skipped":0,"pct":12.18},"functions":{"total":8,"covered":3,"skipped":0,"pct":37.5},"statements":{"total":238,"covered":29,"skipped":0,"pct":12.18},"branches":{"total":5,"covered":4,"skipped":0,"pct":80}}
|
||||
,"/app/js/feedEngine/stages.js": {"lines":{"total":1349,"covered":828,"skipped":0,"pct":61.37},"functions":{"total":30,"covered":19,"skipped":0,"pct":63.33},"statements":{"total":1349,"covered":828,"skipped":0,"pct":61.37},"branches":{"total":321,"covered":215,"skipped":0,"pct":66.97}}
|
||||
,"/app/js/feedEngine/utils.js": {"lines":{"total":96,"covered":67,"skipped":0,"pct":69.79},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.42},"statements":{"total":96,"covered":67,"skipped":0,"pct":69.79},"branches":{"total":19,"covered":14,"skipped":0,"pct":73.68}}
|
||||
,"/app/js/feedEngine/watchHistoryFeed.js": {"lines":{"total":691,"covered":39,"skipped":0,"pct":5.64},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":691,"covered":39,"skipped":0,"pct":5.64},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/cachePolicies.js": {"lines":{"total":97,"covered":97,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":97,"covered":97,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/client.js": {"lines":{"total":3996,"covered":2089,"skipped":0,"pct":52.27},"functions":{"total":195,"covered":93,"skipped":0,"pct":47.69},"statements":{"total":3996,"covered":2089,"skipped":0,"pct":52.27},"branches":{"total":324,"covered":149,"skipped":0,"pct":45.98}}
|
||||
,"/app/js/nostr/commentEvents.js": {"lines":{"total":638,"covered":486,"skipped":0,"pct":76.17},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":638,"covered":486,"skipped":0,"pct":76.17},"branches":{"total":135,"covered":81,"skipped":0,"pct":60}}
|
||||
,"/app/js/nostr/commentTargetNormalizer.js": {"lines":{"total":982,"covered":871,"skipped":0,"pct":88.69},"functions":{"total":25,"covered":25,"skipped":0,"pct":100},"statements":{"total":982,"covered":871,"skipped":0,"pct":88.69},"branches":{"total":307,"covered":245,"skipped":0,"pct":79.8}}
|
||||
,"/app/js/nostr/countDiagnostics.js": {"lines":{"total":68,"covered":68,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":68,"covered":68,"skipped":0,"pct":100},"branches":{"total":22,"covered":21,"skipped":0,"pct":95.45}}
|
||||
,"/app/js/nostr/decryptionSchemeCache.js": {"lines":{"total":70,"covered":70,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":70,"covered":70,"skipped":0,"pct":100},"branches":{"total":18,"covered":18,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/defaultClient.js": {"lines":{"total":33,"covered":33,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":33,"covered":33,"skipped":0,"pct":100},"branches":{"total":3,"covered":3,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/dmDecryptDiagnostics.js": {"lines":{"total":42,"covered":42,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":42,"covered":42,"skipped":0,"pct":100},"branches":{"total":25,"covered":25,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/dmDecryptWorker.js": {"lines":{"total":266,"covered":191,"skipped":0,"pct":71.8},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":266,"covered":191,"skipped":0,"pct":71.8},"branches":{"total":60,"covered":19,"skipped":0,"pct":31.66}}
|
||||
,"/app/js/nostr/dmDecryptWorkerClient.js": {"lines":{"total":127,"covered":123,"skipped":0,"pct":96.85},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":127,"covered":123,"skipped":0,"pct":96.85},"branches":{"total":45,"covered":33,"skipped":0,"pct":73.33}}
|
||||
,"/app/js/nostr/dmSignalEvents.js": {"lines":{"total":311,"covered":232,"skipped":0,"pct":74.59},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":311,"covered":232,"skipped":0,"pct":74.59},"branches":{"total":61,"covered":29,"skipped":0,"pct":47.54}}
|
||||
,"/app/js/nostr/eventsMap.js": {"lines":{"total":90,"covered":83,"skipped":0,"pct":92.22},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":90,"covered":83,"skipped":0,"pct":92.22},"branches":{"total":26,"covered":21,"skipped":0,"pct":80.76}}
|
||||
,"/app/js/nostr/index.js": {"lines":{"total":65,"covered":65,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":65,"covered":65,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/maxListenerDiagnostics.js": {"lines":{"total":95,"covered":84,"skipped":0,"pct":88.42},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":95,"covered":84,"skipped":0,"pct":88.42},"branches":{"total":21,"covered":18,"skipped":0,"pct":85.71}}
|
||||
,"/app/js/nostr/nip04WorkerClient.js": {"lines":{"total":108,"covered":104,"skipped":0,"pct":96.29},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":108,"covered":104,"skipped":0,"pct":96.29},"branches":{"total":37,"covered":31,"skipped":0,"pct":83.78}}
|
||||
,"/app/js/nostr/nip07Permissions.js": {"lines":{"total":442,"covered":397,"skipped":0,"pct":89.81},"functions":{"total":19,"covered":18,"skipped":0,"pct":94.73},"statements":{"total":442,"covered":397,"skipped":0,"pct":89.81},"branches":{"total":107,"covered":78,"skipped":0,"pct":72.89}}
|
||||
,"/app/js/nostr/nip46Client.js": {"lines":{"total":2102,"covered":1160,"skipped":0,"pct":55.18},"functions":{"total":68,"covered":44,"skipped":0,"pct":64.7},"statements":{"total":2102,"covered":1160,"skipped":0,"pct":55.18},"branches":{"total":327,"covered":156,"skipped":0,"pct":47.7}}
|
||||
,"/app/js/nostr/nip46Connector.js": {"lines":{"total":1093,"covered":515,"skipped":0,"pct":47.11},"functions":{"total":13,"covered":8,"skipped":0,"pct":61.53},"statements":{"total":1093,"covered":515,"skipped":0,"pct":47.11},"branches":{"total":71,"covered":28,"skipped":0,"pct":39.43}}
|
||||
,"/app/js/nostr/nip46LoggingUtils.js": {"lines":{"total":158,"covered":74,"skipped":0,"pct":46.83},"functions":{"total":8,"covered":7,"skipped":0,"pct":87.5},"statements":{"total":158,"covered":74,"skipped":0,"pct":46.83},"branches":{"total":31,"covered":20,"skipped":0,"pct":64.51}}
|
||||
,"/app/js/nostr/nip46Queue.js": {"lines":{"total":88,"covered":83,"skipped":0,"pct":94.31},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":88,"covered":83,"skipped":0,"pct":94.31},"branches":{"total":21,"covered":16,"skipped":0,"pct":76.19}}
|
||||
,"/app/js/nostr/nip71.js": {"lines":{"total":1530,"covered":1262,"skipped":0,"pct":82.48},"functions":{"total":38,"covered":37,"skipped":0,"pct":97.36},"statements":{"total":1530,"covered":1262,"skipped":0,"pct":82.48},"branches":{"total":394,"covered":228,"skipped":0,"pct":57.86}}
|
||||
,"/app/js/nostr/publishHelpers.js": {"lines":{"total":1414,"covered":455,"skipped":0,"pct":32.17},"functions":{"total":15,"covered":6,"skipped":0,"pct":40},"statements":{"total":1414,"covered":455,"skipped":0,"pct":32.17},"branches":{"total":122,"covered":54,"skipped":0,"pct":44.26}}
|
||||
,"/app/js/nostr/reactionEvents.js": {"lines":{"total":515,"covered":250,"skipped":0,"pct":48.54},"functions":{"total":7,"covered":6,"skipped":0,"pct":85.71},"statements":{"total":515,"covered":250,"skipped":0,"pct":48.54},"branches":{"total":90,"covered":40,"skipped":0,"pct":44.44}}
|
||||
,"/app/js/nostr/relayBatchFetcher.js": {"lines":{"total":235,"covered":179,"skipped":0,"pct":76.17},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":235,"covered":179,"skipped":0,"pct":76.17},"branches":{"total":43,"covered":28,"skipped":0,"pct":65.11}}
|
||||
,"/app/js/nostr/relayConstants.js": {"lines":{"total":25,"covered":25,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":25,"covered":25,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/sessionActor.js": {"lines":{"total":514,"covered":410,"skipped":0,"pct":79.76},"functions":{"total":26,"covered":21,"skipped":0,"pct":80.76},"statements":{"total":514,"covered":410,"skipped":0,"pct":79.76},"branches":{"total":123,"covered":75,"skipped":0,"pct":60.97}}
|
||||
,"/app/js/nostr/signRequestQueue.js": {"lines":{"total":130,"covered":121,"skipped":0,"pct":93.07},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":130,"covered":121,"skipped":0,"pct":93.07},"branches":{"total":46,"covered":41,"skipped":0,"pct":89.13}}
|
||||
,"/app/js/nostr/signerHelpers.js": {"lines":{"total":165,"covered":95,"skipped":0,"pct":57.57},"functions":{"total":9,"covered":5,"skipped":0,"pct":55.55},"statements":{"total":165,"covered":95,"skipped":0,"pct":57.57},"branches":{"total":18,"covered":6,"skipped":0,"pct":33.33}}
|
||||
,"/app/js/nostr/syncMetadataStore.js": {"lines":{"total":100,"covered":92,"skipped":0,"pct":92},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":100,"covered":92,"skipped":0,"pct":92},"branches":{"total":30,"covered":21,"skipped":0,"pct":70}}
|
||||
,"/app/js/nostr/toolkit.js": {"lines":{"total":602,"covered":421,"skipped":0,"pct":69.93},"functions":{"total":32,"covered":22,"skipped":0,"pct":68.75},"statements":{"total":602,"covered":421,"skipped":0,"pct":69.93},"branches":{"total":135,"covered":81,"skipped":0,"pct":60}}
|
||||
,"/app/js/nostr/videoEventBuffer.js": {"lines":{"total":218,"covered":190,"skipped":0,"pct":87.15},"functions":{"total":7,"covered":6,"skipped":0,"pct":85.71},"statements":{"total":218,"covered":190,"skipped":0,"pct":87.15},"branches":{"total":31,"covered":24,"skipped":0,"pct":77.41}}
|
||||
,"/app/js/nostr/videoPayloadBuilder.js": {"lines":{"total":491,"covered":451,"skipped":0,"pct":91.85},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":491,"covered":451,"skipped":0,"pct":91.85},"branches":{"total":124,"covered":63,"skipped":0,"pct":50.8}}
|
||||
,"/app/js/nostr/videoPublisher.js": {"lines":{"total":236,"covered":111,"skipped":0,"pct":47.03},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":236,"covered":111,"skipped":0,"pct":47.03},"branches":{"total":11,"covered":6,"skipped":0,"pct":54.54}}
|
||||
,"/app/js/nostr/viewEventBindings.js": {"lines":{"total":42,"covered":12,"skipped":0,"pct":28.57},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":12,"skipped":0,"pct":28.57},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/viewEvents.js": {"lines":{"total":909,"covered":340,"skipped":0,"pct":37.4},"functions":{"total":18,"covered":11,"skipped":0,"pct":61.11},"statements":{"total":909,"covered":340,"skipped":0,"pct":37.4},"branches":{"total":77,"covered":17,"skipped":0,"pct":22.07}}
|
||||
,"/app/js/nostr/watchHistory.js": {"lines":{"total":2210,"covered":1285,"skipped":0,"pct":58.14},"functions":{"total":56,"covered":39,"skipped":0,"pct":69.64},"statements":{"total":2210,"covered":1285,"skipped":0,"pct":58.14},"branches":{"total":322,"covered":131,"skipped":0,"pct":40.68}}
|
||||
,"/app/js/nostr/watchHistoryBindings.js": {"lines":{"total":29,"covered":29,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":29,"covered":29,"skipped":0,"pct":100},"branches":{"total":9,"covered":9,"skipped":0,"pct":100}}
|
||||
,"/app/js/nostr/adapters/nip07Adapter.js": {"lines":{"total":242,"covered":141,"skipped":0,"pct":58.26},"functions":{"total":22,"covered":12,"skipped":0,"pct":54.54},"statements":{"total":242,"covered":141,"skipped":0,"pct":58.26},"branches":{"total":46,"covered":32,"skipped":0,"pct":69.56}}
|
||||
,"/app/js/nostr/adapters/nip46Adapter.js": {"lines":{"total":92,"covered":69,"skipped":0,"pct":75},"functions":{"total":18,"covered":4,"skipped":0,"pct":22.22},"statements":{"total":92,"covered":69,"skipped":0,"pct":75},"branches":{"total":11,"covered":5,"skipped":0,"pct":45.45}}
|
||||
,"/app/js/nostr/adapters/nsecAdapter.js": {"lines":{"total":91,"covered":81,"skipped":0,"pct":89.01},"functions":{"total":9,"covered":5,"skipped":0,"pct":55.55},"statements":{"total":91,"covered":81,"skipped":0,"pct":89.01},"branches":{"total":20,"covered":12,"skipped":0,"pct":60}}
|
||||
,"/app/js/nostr/managers/ConnectionManager.js": {"lines":{"total":965,"covered":554,"skipped":0,"pct":57.4},"functions":{"total":25,"covered":19,"skipped":0,"pct":76},"statements":{"total":965,"covered":554,"skipped":0,"pct":57.4},"branches":{"total":149,"covered":56,"skipped":0,"pct":37.58}}
|
||||
,"/app/js/nostr/managers/EventsCacheStore.js": {"lines":{"total":408,"covered":374,"skipped":0,"pct":91.66},"functions":{"total":27,"covered":22,"skipped":0,"pct":81.48},"statements":{"total":408,"covered":374,"skipped":0,"pct":91.66},"branches":{"total":65,"covered":50,"skipped":0,"pct":76.92}}
|
||||
,"/app/js/nostr/managers/PersistenceManager.js": {"lines":{"total":354,"covered":173,"skipped":0,"pct":48.87},"functions":{"total":11,"covered":6,"skipped":0,"pct":54.54},"statements":{"total":354,"covered":173,"skipped":0,"pct":48.87},"branches":{"total":20,"covered":10,"skipped":0,"pct":50}}
|
||||
,"/app/js/nostr/managers/SignerManager.js": {"lines":{"total":1106,"covered":602,"skipped":0,"pct":54.43},"functions":{"total":35,"covered":20,"skipped":0,"pct":57.14},"statements":{"total":1106,"covered":602,"skipped":0,"pct":54.43},"branches":{"total":207,"covered":138,"skipped":0,"pct":66.66}}
|
||||
,"/app/js/payments/lnurl.js": {"lines":{"total":409,"covered":45,"skipped":0,"pct":11},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":409,"covered":45,"skipped":0,"pct":11},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}}
|
||||
,"/app/js/payments/nwcClient.js": {"lines":{"total":1641,"covered":186,"skipped":0,"pct":11.33},"functions":{"total":63,"covered":1,"skipped":0,"pct":1.58},"statements":{"total":1641,"covered":186,"skipped":0,"pct":11.33},"branches":{"total":13,"covered":6,"skipped":0,"pct":46.15}}
|
||||
,"/app/js/payments/platformAddress.js": {"lines":{"total":328,"covered":69,"skipped":0,"pct":21.03},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":328,"covered":69,"skipped":0,"pct":21.03},"branches":{"total":13,"covered":6,"skipped":0,"pct":46.15}}
|
||||
,"/app/js/payments/platformFee.js": {"lines":{"total":74,"covered":11,"skipped":0,"pct":14.86},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":74,"covered":11,"skipped":0,"pct":14.86},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/payments/zapMessages.js": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/payments/zapNotifications.js": {"lines":{"total":365,"covered":20,"skipped":0,"pct":5.47},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":365,"covered":20,"skipped":0,"pct":5.47},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/payments/zapReceiptValidator.js": {"lines":{"total":445,"covered":43,"skipped":0,"pct":9.66},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":445,"covered":43,"skipped":0,"pct":9.66},"branches":{"total":5,"covered":4,"skipped":0,"pct":80}}
|
||||
,"/app/js/payments/zapRequests.js": {"lines":{"total":200,"covered":34,"skipped":0,"pct":17},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":200,"covered":34,"skipped":0,"pct":17},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/payments/zapSharedState.js": {"lines":{"total":280,"covered":75,"skipped":0,"pct":26.78},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":280,"covered":75,"skipped":0,"pct":26.78},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/payments/zapSplit.js": {"lines":{"total":601,"covered":105,"skipped":0,"pct":17.47},"functions":{"total":19,"covered":1,"skipped":0,"pct":5.26},"statements":{"total":601,"covered":105,"skipped":0,"pct":17.47},"branches":{"total":13,"covered":6,"skipped":0,"pct":46.15}}
|
||||
,"/app/js/search/searchFilterMatchers.js": {"lines":{"total":80,"covered":71,"skipped":0,"pct":88.75},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":80,"covered":71,"skipped":0,"pct":88.75},"branches":{"total":53,"covered":32,"skipped":0,"pct":60.37}}
|
||||
,"/app/js/search/searchFilters.js": {"lines":{"total":331,"covered":243,"skipped":0,"pct":73.41},"functions":{"total":11,"covered":9,"skipped":0,"pct":81.81},"statements":{"total":331,"covered":243,"skipped":0,"pct":73.41},"branches":{"total":58,"covered":28,"skipped":0,"pct":48.27}}
|
||||
,"/app/js/services/attachmentService.js": {"lines":{"total":394,"covered":209,"skipped":0,"pct":53.04},"functions":{"total":15,"covered":12,"skipped":0,"pct":80},"statements":{"total":394,"covered":209,"skipped":0,"pct":53.04},"branches":{"total":57,"covered":29,"skipped":0,"pct":50.87}}
|
||||
,"/app/js/services/authService.js": {"lines":{"total":1320,"covered":1021,"skipped":0,"pct":77.34},"functions":{"total":63,"covered":39,"skipped":0,"pct":61.9},"statements":{"total":1320,"covered":1021,"skipped":0,"pct":77.34},"branches":{"total":236,"covered":148,"skipped":0,"pct":62.71}}
|
||||
,"/app/js/services/authUtils.js": {"lines":{"total":53,"covered":53,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":53,"covered":53,"skipped":0,"pct":100},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}}
|
||||
,"/app/js/services/commentThreadService.js": {"lines":{"total":1121,"covered":865,"skipped":0,"pct":77.16},"functions":{"total":57,"covered":50,"skipped":0,"pct":87.71},"statements":{"total":1121,"covered":865,"skipped":0,"pct":77.16},"branches":{"total":261,"covered":180,"skipped":0,"pct":68.96}}
|
||||
,"/app/js/services/discussionCountService.js": {"lines":{"total":252,"covered":213,"skipped":0,"pct":84.52},"functions":{"total":10,"covered":8,"skipped":0,"pct":80},"statements":{"total":252,"covered":213,"skipped":0,"pct":84.52},"branches":{"total":72,"covered":51,"skipped":0,"pct":70.83}}
|
||||
,"/app/js/services/dmNostrService.js": {"lines":{"total":684,"covered":78,"skipped":0,"pct":11.4},"functions":{"total":31,"covered":0,"skipped":0,"pct":0},"statements":{"total":684,"covered":78,"skipped":0,"pct":11.4},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/services/dmNotificationManager.js": {"lines":{"total":242,"covered":166,"skipped":0,"pct":68.59},"functions":{"total":12,"covered":8,"skipped":0,"pct":66.66},"statements":{"total":242,"covered":166,"skipped":0,"pct":68.59},"branches":{"total":46,"covered":31,"skipped":0,"pct":67.39}}
|
||||
,"/app/js/services/exploreDataService.js": {"lines":{"total":341,"covered":275,"skipped":0,"pct":80.64},"functions":{"total":20,"covered":14,"skipped":0,"pct":70},"statements":{"total":341,"covered":275,"skipped":0,"pct":80.64},"branches":{"total":67,"covered":44,"skipped":0,"pct":65.67}}
|
||||
,"/app/js/services/hashtagPreferencesService.js": {"lines":{"total":1434,"covered":971,"skipped":0,"pct":67.71},"functions":{"total":35,"covered":33,"skipped":0,"pct":94.28},"statements":{"total":1434,"covered":971,"skipped":0,"pct":67.71},"branches":{"total":261,"covered":132,"skipped":0,"pct":50.57}}
|
||||
,"/app/js/services/linkPreviewService.js": {"lines":{"total":249,"covered":199,"skipped":0,"pct":79.91},"functions":{"total":19,"covered":16,"skipped":0,"pct":84.21},"statements":{"total":249,"covered":199,"skipped":0,"pct":79.91},"branches":{"total":64,"covered":35,"skipped":0,"pct":54.68}}
|
||||
,"/app/js/services/moderationActionController.js": {"lines":{"total":600,"covered":414,"skipped":0,"pct":69},"functions":{"total":25,"covered":24,"skipped":0,"pct":96},"statements":{"total":600,"covered":414,"skipped":0,"pct":69},"branches":{"total":154,"covered":99,"skipped":0,"pct":64.28}}
|
||||
,"/app/js/services/moderationDecorator.js": {"lines":{"total":507,"covered":427,"skipped":0,"pct":84.22},"functions":{"total":10,"covered":9,"skipped":0,"pct":90},"statements":{"total":507,"covered":427,"skipped":0,"pct":84.22},"branches":{"total":214,"covered":156,"skipped":0,"pct":72.89}}
|
||||
,"/app/js/services/moderationService.js": {"lines":{"total":2512,"covered":1682,"skipped":0,"pct":66.95},"functions":{"total":97,"covered":77,"skipped":0,"pct":79.38},"statements":{"total":2512,"covered":1682,"skipped":0,"pct":66.95},"branches":{"total":476,"covered":261,"skipped":0,"pct":54.83}}
|
||||
,"/app/js/services/nostrService.js": {"lines":{"total":2226,"covered":1048,"skipped":0,"pct":47.07},"functions":{"total":80,"covered":51,"skipped":0,"pct":63.75},"statements":{"total":2226,"covered":1048,"skipped":0,"pct":47.07},"branches":{"total":292,"covered":142,"skipped":0,"pct":48.63}}
|
||||
,"/app/js/services/nwcSettingsService.js": {"lines":{"total":327,"covered":172,"skipped":0,"pct":52.59},"functions":{"total":23,"covered":15,"skipped":0,"pct":65.21},"statements":{"total":327,"covered":172,"skipped":0,"pct":52.59},"branches":{"total":45,"covered":24,"skipped":0,"pct":53.33}}
|
||||
,"/app/js/services/playbackService.js": {"lines":{"total":1288,"covered":951,"skipped":0,"pct":73.83},"functions":{"total":63,"covered":44,"skipped":0,"pct":69.84},"statements":{"total":1288,"covered":951,"skipped":0,"pct":73.83},"branches":{"total":233,"covered":131,"skipped":0,"pct":56.22}}
|
||||
,"/app/js/services/playbackStrategyService.js": {"lines":{"total":345,"covered":252,"skipped":0,"pct":73.04},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":345,"covered":252,"skipped":0,"pct":73.04},"branches":{"total":47,"covered":20,"skipped":0,"pct":42.55}}
|
||||
,"/app/js/services/profileMetadataService.js": {"lines":{"total":294,"covered":262,"skipped":0,"pct":89.11},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":294,"covered":262,"skipped":0,"pct":89.11},"branches":{"total":82,"covered":62,"skipped":0,"pct":75.6}}
|
||||
,"/app/js/services/r2Service.js": {"lines":{"total":1193,"covered":796,"skipped":0,"pct":66.72},"functions":{"total":37,"covered":28,"skipped":0,"pct":75.67},"statements":{"total":1193,"covered":796,"skipped":0,"pct":66.72},"branches":{"total":159,"covered":56,"skipped":0,"pct":35.22}}
|
||||
,"/app/js/services/relayHealthService.js": {"lines":{"total":276,"covered":233,"skipped":0,"pct":84.42},"functions":{"total":16,"covered":16,"skipped":0,"pct":100},"statements":{"total":276,"covered":233,"skipped":0,"pct":84.42},"branches":{"total":77,"covered":56,"skipped":0,"pct":72.72}}
|
||||
,"/app/js/services/relaySubscriptionService.js": {"lines":{"total":250,"covered":172,"skipped":0,"pct":68.8},"functions":{"total":11,"covered":9,"skipped":0,"pct":81.81},"statements":{"total":250,"covered":172,"skipped":0,"pct":68.8},"branches":{"total":59,"covered":39,"skipped":0,"pct":66.1}}
|
||||
,"/app/js/services/s3Service.js": {"lines":{"total":185,"covered":102,"skipped":0,"pct":55.13},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":185,"covered":102,"skipped":0,"pct":55.13},"branches":{"total":30,"covered":25,"skipped":0,"pct":83.33}}
|
||||
,"/app/js/services/s3UploadService.js": {"lines":{"total":483,"covered":399,"skipped":0,"pct":82.6},"functions":{"total":17,"covered":14,"skipped":0,"pct":82.35},"statements":{"total":483,"covered":399,"skipped":0,"pct":82.6},"branches":{"total":82,"covered":57,"skipped":0,"pct":69.51}}
|
||||
,"/app/js/services/storageService.js": {"lines":{"total":741,"covered":604,"skipped":0,"pct":81.51},"functions":{"total":43,"covered":28,"skipped":0,"pct":65.11},"statements":{"total":741,"covered":604,"skipped":0,"pct":81.51},"branches":{"total":122,"covered":85,"skipped":0,"pct":69.67}}
|
||||
,"/app/js/services/trustBootstrap.js": {"lines":{"total":192,"covered":171,"skipped":0,"pct":89.06},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":192,"covered":171,"skipped":0,"pct":89.06},"branches":{"total":46,"covered":36,"skipped":0,"pct":78.26}}
|
||||
,"/app/js/services/videoNotePayload.js": {"lines":{"total":475,"covered":429,"skipped":0,"pct":90.31},"functions":{"total":14,"covered":14,"skipped":0,"pct":100},"statements":{"total":475,"covered":429,"skipped":0,"pct":90.31},"branches":{"total":183,"covered":138,"skipped":0,"pct":75.4}}
|
||||
,"/app/js/services/watchHistoryTelemetry.js": {"lines":{"total":427,"covered":97,"skipped":0,"pct":22.71},"functions":{"total":22,"covered":5,"skipped":0,"pct":22.72},"statements":{"total":427,"covered":97,"skipped":0,"pct":22.71},"branches":{"total":16,"covered":6,"skipped":0,"pct":37.5}}
|
||||
,"/app/js/services/authProviders/generate.js": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/services/authProviders/index.js": {"lines":{"total":147,"covered":93,"skipped":0,"pct":63.26},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":147,"covered":93,"skipped":0,"pct":63.26},"branches":{"total":24,"covered":6,"skipped":0,"pct":25}}
|
||||
,"/app/js/services/authProviders/nip07.js": {"lines":{"total":90,"covered":69,"skipped":0,"pct":76.66},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":90,"covered":69,"skipped":0,"pct":76.66},"branches":{"total":11,"covered":6,"skipped":0,"pct":54.54}}
|
||||
,"/app/js/services/authProviders/nip46.js": {"lines":{"total":269,"covered":49,"skipped":0,"pct":18.21},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":269,"covered":49,"skipped":0,"pct":18.21},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/services/authProviders/nsec.js": {"lines":{"total":161,"covered":43,"skipped":0,"pct":26.7},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":161,"covered":43,"skipped":0,"pct":26.7},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/state/appState.js": {"lines":{"total":222,"covered":206,"skipped":0,"pct":92.79},"functions":{"total":22,"covered":22,"skipped":0,"pct":100},"statements":{"total":222,"covered":206,"skipped":0,"pct":92.79},"branches":{"total":51,"covered":41,"skipped":0,"pct":80.39}}
|
||||
,"/app/js/state/cache.js": {"lines":{"total":1828,"covered":985,"skipped":0,"pct":53.88},"functions":{"total":63,"covered":46,"skipped":0,"pct":73.01},"statements":{"total":1828,"covered":985,"skipped":0,"pct":53.88},"branches":{"total":279,"covered":163,"skipped":0,"pct":58.42}}
|
||||
,"/app/js/state/profileCache.js": {"lines":{"total":423,"covered":379,"skipped":0,"pct":89.59},"functions":{"total":24,"covered":22,"skipped":0,"pct":91.66},"statements":{"total":423,"covered":379,"skipped":0,"pct":89.59},"branches":{"total":113,"covered":94,"skipped":0,"pct":83.18}}
|
||||
,"/app/js/state/profileSettingsStore.js": {"lines":{"total":74,"covered":67,"skipped":0,"pct":90.54},"functions":{"total":12,"covered":11,"skipped":0,"pct":91.66},"statements":{"total":74,"covered":67,"skipped":0,"pct":90.54},"branches":{"total":21,"covered":19,"skipped":0,"pct":90.47}}
|
||||
,"/app/js/storage/dmDb.js": {"lines":{"total":591,"covered":423,"skipped":0,"pct":71.57},"functions":{"total":32,"covered":22,"skipped":0,"pct":68.75},"statements":{"total":591,"covered":423,"skipped":0,"pct":71.57},"branches":{"total":113,"covered":73,"skipped":0,"pct":64.6}}
|
||||
,"/app/js/storage/r2-mgmt.js": {"lines":{"total":293,"covered":45,"skipped":0,"pct":15.35},"functions":{"total":11,"covered":1,"skipped":0,"pct":9.09},"statements":{"total":293,"covered":45,"skipped":0,"pct":15.35},"branches":{"total":9,"covered":2,"skipped":0,"pct":22.22}}
|
||||
,"/app/js/storage/r2-s3.js": {"lines":{"total":184,"covered":23,"skipped":0,"pct":12.5},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":184,"covered":23,"skipped":0,"pct":12.5},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/storage/s3-client.js": {"lines":{"total":114,"covered":52,"skipped":0,"pct":45.61},"functions":{"total":7,"covered":1,"skipped":0,"pct":14.28},"statements":{"total":114,"covered":52,"skipped":0,"pct":45.61},"branches":{"total":8,"covered":5,"skipped":0,"pct":62.5}}
|
||||
,"/app/js/storage/s3-multipart.js": {"lines":{"total":272,"covered":17,"skipped":0,"pct":6.25},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":272,"covered":17,"skipped":0,"pct":6.25},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/storage/s3-url.js": {"lines":{"total":74,"covered":52,"skipped":0,"pct":70.27},"functions":{"total":6,"covered":5,"skipped":0,"pct":83.33},"statements":{"total":74,"covered":52,"skipped":0,"pct":70.27},"branches":{"total":15,"covered":6,"skipped":0,"pct":40}}
|
||||
,"/app/js/ui/ModalManager.js": {"lines":{"total":974,"covered":627,"skipped":0,"pct":64.37},"functions":{"total":70,"covered":3,"skipped":0,"pct":4.28},"statements":{"total":974,"covered":627,"skipped":0,"pct":64.37},"branches":{"total":54,"covered":28,"skipped":0,"pct":51.85}}
|
||||
,"/app/js/ui/ambientBackground.js": {"lines":{"total":321,"covered":106,"skipped":0,"pct":33.02},"functions":{"total":20,"covered":3,"skipped":0,"pct":15},"statements":{"total":321,"covered":106,"skipped":0,"pct":33.02},"branches":{"total":24,"covered":4,"skipped":0,"pct":16.66}}
|
||||
,"/app/js/ui/appChromeController.js": {"lines":{"total":408,"covered":233,"skipped":0,"pct":57.1},"functions":{"total":26,"covered":14,"skipped":0,"pct":53.84},"statements":{"total":408,"covered":233,"skipped":0,"pct":57.1},"branches":{"total":59,"covered":43,"skipped":0,"pct":72.88}}
|
||||
,"/app/js/ui/applicationBootstrap.js": {"lines":{"total":1168,"covered":710,"skipped":0,"pct":60.78},"functions":{"total":173,"covered":5,"skipped":0,"pct":2.89},"statements":{"total":1168,"covered":710,"skipped":0,"pct":60.78},"branches":{"total":33,"covered":7,"skipped":0,"pct":21.21}}
|
||||
,"/app/js/ui/creatorProfileController.js": {"lines":{"total":489,"covered":401,"skipped":0,"pct":82},"functions":{"total":15,"covered":11,"skipped":0,"pct":73.33},"statements":{"total":489,"covered":401,"skipped":0,"pct":82},"branches":{"total":92,"covered":31,"skipped":0,"pct":33.69}}
|
||||
,"/app/js/ui/editModalController.js": {"lines":{"total":119,"covered":108,"skipped":0,"pct":90.75},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":119,"covered":108,"skipped":0,"pct":90.75},"branches":{"total":24,"covered":17,"skipped":0,"pct":70.83}}
|
||||
,"/app/js/ui/engagementController.js": {"lines":{"total":427,"covered":317,"skipped":0,"pct":74.23},"functions":{"total":10,"covered":5,"skipped":0,"pct":50},"statements":{"total":427,"covered":317,"skipped":0,"pct":74.23},"branches":{"total":154,"covered":75,"skipped":0,"pct":48.7}}
|
||||
,"/app/js/ui/initDeleteModal.js": {"lines":{"total":58,"covered":58,"skipped":0,"pct":100},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":58,"covered":58,"skipped":0,"pct":100},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}}
|
||||
,"/app/js/ui/initEditModal.js": {"lines":{"total":68,"covered":68,"skipped":0,"pct":100},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":68,"covered":68,"skipped":0,"pct":100},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}}
|
||||
,"/app/js/ui/initUploadModal.js": {"lines":{"total":76,"covered":73,"skipped":0,"pct":96.05},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":76,"covered":73,"skipped":0,"pct":96.05},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}}
|
||||
,"/app/js/ui/loginModalController.js": {"lines":{"total":2576,"covered":1045,"skipped":0,"pct":40.56},"functions":{"total":80,"covered":38,"skipped":0,"pct":47.5},"statements":{"total":2576,"covered":1045,"skipped":0,"pct":40.56},"branches":{"total":238,"covered":82,"skipped":0,"pct":34.45}}
|
||||
,"/app/js/ui/moderationCopy.js": {"lines":{"total":162,"covered":135,"skipped":0,"pct":83.33},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":162,"covered":135,"skipped":0,"pct":83.33},"branches":{"total":73,"covered":48,"skipped":0,"pct":65.75}}
|
||||
,"/app/js/ui/moderationUiHelpers.js": {"lines":{"total":350,"covered":330,"skipped":0,"pct":94.28},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":350,"covered":330,"skipped":0,"pct":94.28},"branches":{"total":154,"covered":130,"skipped":0,"pct":84.41}}
|
||||
,"/app/js/ui/moreMenuController.js": {"lines":{"total":1600,"covered":466,"skipped":0,"pct":29.12},"functions":{"total":52,"covered":11,"skipped":0,"pct":21.15},"statements":{"total":1600,"covered":466,"skipped":0,"pct":29.12},"branches":{"total":128,"covered":55,"skipped":0,"pct":42.96}}
|
||||
,"/app/js/ui/notificationController.js": {"lines":{"total":266,"covered":184,"skipped":0,"pct":69.17},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":266,"covered":184,"skipped":0,"pct":69.17},"branches":{"total":49,"covered":13,"skipped":0,"pct":26.53}}
|
||||
,"/app/js/ui/profileIdentityController.js": {"lines":{"total":179,"covered":18,"skipped":0,"pct":10.05},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":179,"covered":18,"skipped":0,"pct":10.05},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}}
|
||||
,"/app/js/ui/profileModalContract.js": {"lines":{"total":916,"covered":705,"skipped":0,"pct":76.96},"functions":{"total":88,"covered":64,"skipped":0,"pct":72.72},"statements":{"total":916,"covered":705,"skipped":0,"pct":76.96},"branches":{"total":133,"covered":110,"skipped":0,"pct":82.7}}
|
||||
,"/app/js/ui/profileModalController.js": {"lines":{"total":6257,"covered":3279,"skipped":0,"pct":52.4},"functions":{"total":187,"covered":90,"skipped":0,"pct":48.12},"statements":{"total":6257,"covered":3279,"skipped":0,"pct":52.4},"branches":{"total":723,"covered":448,"skipped":0,"pct":61.96}}
|
||||
,"/app/js/ui/reactionController.js": {"lines":{"total":371,"covered":280,"skipped":0,"pct":75.47},"functions":{"total":17,"covered":8,"skipped":0,"pct":47.05},"statements":{"total":371,"covered":280,"skipped":0,"pct":75.47},"branches":{"total":65,"covered":18,"skipped":0,"pct":27.69}}
|
||||
,"/app/js/ui/revertModalController.js": {"lines":{"total":118,"covered":96,"skipped":0,"pct":81.35},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":118,"covered":96,"skipped":0,"pct":81.35},"branches":{"total":23,"covered":11,"skipped":0,"pct":47.82}}
|
||||
,"/app/js/ui/shareNostrController.js": {"lines":{"total":237,"covered":158,"skipped":0,"pct":66.66},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":237,"covered":158,"skipped":0,"pct":66.66},"branches":{"total":67,"covered":42,"skipped":0,"pct":62.68}}
|
||||
,"/app/js/ui/similarContentController.js": {"lines":{"total":333,"covered":272,"skipped":0,"pct":81.68},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":333,"covered":272,"skipped":0,"pct":81.68},"branches":{"total":132,"covered":95,"skipped":0,"pct":71.96}}
|
||||
,"/app/js/ui/subscriptionHistoryController.js": {"lines":{"total":354,"covered":40,"skipped":0,"pct":11.29},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":354,"covered":40,"skipped":0,"pct":11.29},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/tagPreferenceMenuController.js": {"lines":{"total":347,"covered":219,"skipped":0,"pct":63.11},"functions":{"total":11,"covered":8,"skipped":0,"pct":72.72},"statements":{"total":347,"covered":219,"skipped":0,"pct":63.11},"branches":{"total":59,"covered":33,"skipped":0,"pct":55.93}}
|
||||
,"/app/js/ui/torrentStatusController.js": {"lines":{"total":127,"covered":100,"skipped":0,"pct":78.74},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":127,"covered":100,"skipped":0,"pct":78.74},"branches":{"total":29,"covered":20,"skipped":0,"pct":68.96}}
|
||||
,"/app/js/ui/urlHealthController.js": {"lines":{"total":501,"covered":346,"skipped":0,"pct":69.06},"functions":{"total":12,"covered":12,"skipped":0,"pct":100},"statements":{"total":501,"covered":346,"skipped":0,"pct":69.06},"branches":{"total":71,"covered":20,"skipped":0,"pct":28.16}}
|
||||
,"/app/js/ui/videoListViewController.js": {"lines":{"total":112,"covered":21,"skipped":0,"pct":18.75},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.66},"statements":{"total":112,"covered":21,"skipped":0,"pct":18.75},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}}
|
||||
,"/app/js/ui/videoModalCommentController.js": {"lines":{"total":962,"covered":686,"skipped":0,"pct":71.3},"functions":{"total":49,"covered":28,"skipped":0,"pct":57.14},"statements":{"total":962,"covered":686,"skipped":0,"pct":71.3},"branches":{"total":210,"covered":149,"skipped":0,"pct":70.95}}
|
||||
,"/app/js/ui/videoModalController.js": {"lines":{"total":392,"covered":289,"skipped":0,"pct":73.72},"functions":{"total":13,"covered":12,"skipped":0,"pct":92.3},"statements":{"total":392,"covered":289,"skipped":0,"pct":73.72},"branches":{"total":79,"covered":30,"skipped":0,"pct":37.97}}
|
||||
,"/app/js/ui/videoSettingsMenuController.js": {"lines":{"total":171,"covered":123,"skipped":0,"pct":71.92},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":171,"covered":123,"skipped":0,"pct":71.92},"branches":{"total":19,"covered":11,"skipped":0,"pct":57.89}}
|
||||
,"/app/js/ui/watchHistoryController.js": {"lines":{"total":371,"covered":49,"skipped":0,"pct":13.2},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":371,"covered":49,"skipped":0,"pct":13.2},"branches":{"total":8,"covered":2,"skipped":0,"pct":25}}
|
||||
,"/app/js/ui/zapController.js": {"lines":{"total":1205,"covered":139,"skipped":0,"pct":11.53},"functions":{"total":32,"covered":1,"skipped":0,"pct":3.12},"statements":{"total":1205,"covered":139,"skipped":0,"pct":11.53},"branches":{"total":14,"covered":2,"skipped":0,"pct":14.28}}
|
||||
,"/app/js/ui/components/DeleteModal.js": {"lines":{"total":453,"covered":93,"skipped":0,"pct":20.52},"functions":{"total":24,"covered":4,"skipped":0,"pct":16.66},"statements":{"total":453,"covered":93,"skipped":0,"pct":20.52},"branches":{"total":10,"covered":5,"skipped":0,"pct":50}}
|
||||
,"/app/js/ui/components/EditModal.js": {"lines":{"total":1129,"covered":951,"skipped":0,"pct":84.23},"functions":{"total":44,"covered":35,"skipped":0,"pct":79.54},"statements":{"total":1129,"covered":951,"skipped":0,"pct":84.23},"branches":{"total":307,"covered":188,"skipped":0,"pct":61.23}}
|
||||
,"/app/js/ui/components/EmbedPlayerModal.js": {"lines":{"total":214,"covered":75,"skipped":0,"pct":35.04},"functions":{"total":26,"covered":2,"skipped":0,"pct":7.69},"statements":{"total":214,"covered":75,"skipped":0,"pct":35.04},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}}
|
||||
,"/app/js/ui/components/EmbedVideoModal.js": {"lines":{"total":451,"covered":88,"skipped":0,"pct":19.51},"functions":{"total":23,"covered":2,"skipped":0,"pct":8.69},"statements":{"total":451,"covered":88,"skipped":0,"pct":19.51},"branches":{"total":9,"covered":3,"skipped":0,"pct":33.33}}
|
||||
,"/app/js/ui/components/EventDetailsModal.js": {"lines":{"total":459,"covered":51,"skipped":0,"pct":11.11},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.66},"statements":{"total":459,"covered":51,"skipped":0,"pct":11.11},"branches":{"total":9,"covered":2,"skipped":0,"pct":22.22}}
|
||||
,"/app/js/ui/components/FeedInfoPopover.js": {"lines":{"total":44,"covered":12,"skipped":0,"pct":27.27},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":44,"covered":12,"skipped":0,"pct":27.27},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/components/RevertModal.js": {"lines":{"total":1507,"covered":747,"skipped":0,"pct":49.56},"functions":{"total":46,"covered":20,"skipped":0,"pct":43.47},"statements":{"total":1507,"covered":747,"skipped":0,"pct":49.56},"branches":{"total":168,"covered":38,"skipped":0,"pct":22.61}}
|
||||
,"/app/js/ui/components/ShareNostrModal.js": {"lines":{"total":486,"covered":112,"skipped":0,"pct":23.04},"functions":{"total":32,"covered":2,"skipped":0,"pct":6.25},"statements":{"total":486,"covered":112,"skipped":0,"pct":23.04},"branches":{"total":10,"covered":3,"skipped":0,"pct":30}}
|
||||
,"/app/js/ui/components/SimilarContentCard.js": {"lines":{"total":1302,"covered":842,"skipped":0,"pct":64.66},"functions":{"total":46,"covered":26,"skipped":0,"pct":56.52},"statements":{"total":1302,"covered":842,"skipped":0,"pct":64.66},"branches":{"total":209,"covered":137,"skipped":0,"pct":65.55}}
|
||||
,"/app/js/ui/components/UploadModal.js": {"lines":{"total":1319,"covered":796,"skipped":0,"pct":60.34},"functions":{"total":46,"covered":29,"skipped":0,"pct":63.04},"statements":{"total":1319,"covered":796,"skipped":0,"pct":60.34},"branches":{"total":146,"covered":94,"skipped":0,"pct":64.38}}
|
||||
,"/app/js/ui/components/VideoCard.js": {"lines":{"total":3129,"covered":2030,"skipped":0,"pct":64.87},"functions":{"total":90,"covered":71,"skipped":0,"pct":78.88},"statements":{"total":3129,"covered":2030,"skipped":0,"pct":64.87},"branches":{"total":533,"covered":299,"skipped":0,"pct":56.09}}
|
||||
,"/app/js/ui/components/VideoModal.js": {"lines":{"total":6044,"covered":3241,"skipped":0,"pct":53.62},"functions":{"total":216,"covered":126,"skipped":0,"pct":58.33},"statements":{"total":6044,"covered":3241,"skipped":0,"pct":53.62},"branches":{"total":749,"covered":338,"skipped":0,"pct":45.12}}
|
||||
,"/app/js/ui/components/VideoModalSimilarHelpers.js": {"lines":{"total":344,"covered":247,"skipped":0,"pct":71.8},"functions":{"total":7,"covered":6,"skipped":0,"pct":85.71},"statements":{"total":344,"covered":247,"skipped":0,"pct":71.8},"branches":{"total":88,"covered":56,"skipped":0,"pct":63.63}}
|
||||
,"/app/js/ui/components/hashtagStripHelper.js": {"lines":{"total":395,"covered":301,"skipped":0,"pct":76.2},"functions":{"total":22,"covered":17,"skipped":0,"pct":77.27},"statements":{"total":395,"covered":301,"skipped":0,"pct":76.2},"branches":{"total":103,"covered":69,"skipped":0,"pct":66.99}}
|
||||
,"/app/js/ui/components/modalAccessibility.js": {"lines":{"total":210,"covered":164,"skipped":0,"pct":78.09},"functions":{"total":15,"covered":9,"skipped":0,"pct":60},"statements":{"total":210,"covered":164,"skipped":0,"pct":78.09},"branches":{"total":62,"covered":45,"skipped":0,"pct":72.58}}
|
||||
,"/app/js/ui/components/nip71FormManager.js": {"lines":{"total":799,"covered":460,"skipped":0,"pct":57.57},"functions":{"total":28,"covered":22,"skipped":0,"pct":78.57},"statements":{"total":799,"covered":460,"skipped":0,"pct":57.57},"branches":{"total":137,"covered":80,"skipped":0,"pct":58.39}}
|
||||
,"/app/js/ui/components/revertModalRenderers.js": {"lines":{"total":439,"covered":11,"skipped":0,"pct":2.5},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":439,"covered":11,"skipped":0,"pct":2.5},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/components/staticModalAccessibility.js": {"lines":{"total":141,"covered":105,"skipped":0,"pct":74.46},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":141,"covered":105,"skipped":0,"pct":74.46},"branches":{"total":35,"covered":17,"skipped":0,"pct":48.57}}
|
||||
,"/app/js/ui/components/tagPillList.js": {"lines":{"total":239,"covered":208,"skipped":0,"pct":87.02},"functions":{"total":13,"covered":12,"skipped":0,"pct":92.3},"statements":{"total":239,"covered":208,"skipped":0,"pct":87.02},"branches":{"total":51,"covered":36,"skipped":0,"pct":70.58}}
|
||||
,"/app/js/ui/components/tagPreferenceMenu.js": {"lines":{"total":248,"covered":219,"skipped":0,"pct":88.3},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":248,"covered":219,"skipped":0,"pct":88.3},"branches":{"total":43,"covered":31,"skipped":0,"pct":72.09}}
|
||||
,"/app/js/ui/components/videoMenuRenderers.js": {"lines":{"total":494,"covered":463,"skipped":0,"pct":93.72},"functions":{"total":12,"covered":12,"skipped":0,"pct":100},"statements":{"total":494,"covered":463,"skipped":0,"pct":93.72},"branches":{"total":79,"covered":57,"skipped":0,"pct":72.15}}
|
||||
,"/app/js/ui/components/video-modal/commentsController.js": {"lines":{"total":290,"covered":157,"skipped":0,"pct":54.13},"functions":{"total":7,"covered":3,"skipped":0,"pct":42.85},"statements":{"total":290,"covered":157,"skipped":0,"pct":54.13},"branches":{"total":32,"covered":6,"skipped":0,"pct":18.75}}
|
||||
,"/app/js/ui/components/video-modal/moderationController.js": {"lines":{"total":117,"covered":80,"skipped":0,"pct":68.37},"functions":{"total":6,"covered":5,"skipped":0,"pct":83.33},"statements":{"total":117,"covered":80,"skipped":0,"pct":68.37},"branches":{"total":20,"covered":9,"skipped":0,"pct":45}}
|
||||
,"/app/js/ui/components/video-modal/reactionsController.js": {"lines":{"total":75,"covered":65,"skipped":0,"pct":86.66},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":75,"covered":65,"skipped":0,"pct":86.66},"branches":{"total":20,"covered":7,"skipped":0,"pct":35}}
|
||||
,"/app/js/ui/components/video-modal/similarContentController.js": {"lines":{"total":72,"covered":60,"skipped":0,"pct":83.33},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":72,"covered":60,"skipped":0,"pct":83.33},"branches":{"total":20,"covered":5,"skipped":0,"pct":25}}
|
||||
,"/app/js/ui/components/video-modal/utils/commentAvatar.js": {"lines":{"total":80,"covered":78,"skipped":0,"pct":97.5},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":80,"covered":78,"skipped":0,"pct":97.5},"branches":{"total":33,"covered":30,"skipped":0,"pct":90.9}}
|
||||
,"/app/js/ui/dm/AppShell.js": {"lines":{"total":296,"covered":108,"skipped":0,"pct":36.48},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":296,"covered":108,"skipped":0,"pct":36.48},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/Avatar.js": {"lines":{"total":57,"covered":4,"skipped":0,"pct":7.01},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":57,"covered":4,"skipped":0,"pct":7.01},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/Composer.js": {"lines":{"total":244,"covered":4,"skipped":0,"pct":1.63},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":244,"covered":4,"skipped":0,"pct":1.63},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/ContactRow.js": {"lines":{"total":95,"covered":5,"skipped":0,"pct":5.26},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":95,"covered":5,"skipped":0,"pct":5.26},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/ConversationList.js": {"lines":{"total":163,"covered":7,"skipped":0,"pct":4.29},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":163,"covered":7,"skipped":0,"pct":4.29},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/DMPrivacySettings.js": {"lines":{"total":72,"covered":1,"skipped":0,"pct":1.38},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":72,"covered":1,"skipped":0,"pct":1.38},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/DMRelaySettings.js": {"lines":{"total":80,"covered":1,"skipped":0,"pct":1.25},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":80,"covered":1,"skipped":0,"pct":1.25},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/DMSettingsModalController.js": {"lines":{"total":261,"covered":45,"skipped":0,"pct":17.24},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":261,"covered":45,"skipped":0,"pct":17.24},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/DayDivider.js": {"lines":{"total":24,"covered":2,"skipped":0,"pct":8.33},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":24,"covered":2,"skipped":0,"pct":8.33},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/MessageBubble.js": {"lines":{"total":77,"covered":2,"skipped":0,"pct":2.59},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":77,"covered":2,"skipped":0,"pct":2.59},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/MessageThread.js": {"lines":{"total":191,"covered":7,"skipped":0,"pct":3.66},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":191,"covered":7,"skipped":0,"pct":3.66},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/NotificationCenter.js": {"lines":{"total":219,"covered":22,"skipped":0,"pct":10.04},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":219,"covered":22,"skipped":0,"pct":10.04},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/ZapInterface.js": {"lines":{"total":119,"covered":6,"skipped":0,"pct":5.04},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":119,"covered":6,"skipped":0,"pct":5.04},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/ZapReceiptList.js": {"lines":{"total":100,"covered":5,"skipped":0,"pct":5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":100,"covered":5,"skipped":0,"pct":5},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/index.js": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/ui/dm/zapHelpers.js": {"lines":{"total":58,"covered":58,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":58,"covered":58,"skipped":0,"pct":100},"branches":{"total":28,"covered":27,"skipped":0,"pct":96.42}}
|
||||
,"/app/js/ui/overlay/overlayRoot.js": {"lines":{"total":63,"covered":54,"skipped":0,"pct":85.71},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":63,"covered":54,"skipped":0,"pct":85.71},"branches":{"total":18,"covered":13,"skipped":0,"pct":72.22}}
|
||||
,"/app/js/ui/overlay/popoverEngine.js": {"lines":{"total":1069,"covered":915,"skipped":0,"pct":85.59},"functions":{"total":53,"covered":49,"skipped":0,"pct":92.45},"statements":{"total":1069,"covered":915,"skipped":0,"pct":85.59},"branches":{"total":277,"covered":183,"skipped":0,"pct":66.06}}
|
||||
,"/app/js/ui/profileModal/ProfileAdminController.js": {"lines":{"total":885,"covered":573,"skipped":0,"pct":64.74},"functions":{"total":24,"covered":16,"skipped":0,"pct":66.66},"statements":{"total":885,"covered":573,"skipped":0,"pct":64.74},"branches":{"total":144,"covered":72,"skipped":0,"pct":50}}
|
||||
,"/app/js/ui/profileModal/ProfileAdminRenderer.js": {"lines":{"total":283,"covered":238,"skipped":0,"pct":84.09},"functions":{"total":14,"covered":12,"skipped":0,"pct":85.71},"statements":{"total":283,"covered":238,"skipped":0,"pct":84.09},"branches":{"total":56,"covered":23,"skipped":0,"pct":41.07}}
|
||||
,"/app/js/ui/profileModal/ProfileDirectMessageActions.js": {"lines":{"total":929,"covered":97,"skipped":0,"pct":10.44},"functions":{"total":26,"covered":5,"skipped":0,"pct":19.23},"statements":{"total":929,"covered":97,"skipped":0,"pct":10.44},"branches":{"total":15,"covered":11,"skipped":0,"pct":73.33}}
|
||||
,"/app/js/ui/profileModal/ProfileDirectMessageController.js": {"lines":{"total":679,"covered":338,"skipped":0,"pct":49.77},"functions":{"total":49,"covered":19,"skipped":0,"pct":38.77},"statements":{"total":679,"covered":338,"skipped":0,"pct":49.77},"branches":{"total":40,"covered":21,"skipped":0,"pct":52.5}}
|
||||
,"/app/js/ui/profileModal/ProfileDirectMessageHelper.js": {"lines":{"total":758,"covered":99,"skipped":0,"pct":13.06},"functions":{"total":27,"covered":4,"skipped":0,"pct":14.81},"statements":{"total":758,"covered":99,"skipped":0,"pct":13.06},"branches":{"total":16,"covered":9,"skipped":0,"pct":56.25}}
|
||||
,"/app/js/ui/profileModal/ProfileDirectMessageRenderer.js": {"lines":{"total":911,"covered":240,"skipped":0,"pct":26.34},"functions":{"total":19,"covered":11,"skipped":0,"pct":57.89},"statements":{"total":911,"covered":240,"skipped":0,"pct":26.34},"branches":{"total":51,"covered":15,"skipped":0,"pct":29.41}}
|
||||
,"/app/js/ui/profileModal/ProfileHashtagController.js": {"lines":{"total":598,"covered":412,"skipped":0,"pct":68.89},"functions":{"total":19,"covered":16,"skipped":0,"pct":84.21},"statements":{"total":598,"covered":412,"skipped":0,"pct":68.89},"branches":{"total":117,"covered":70,"skipped":0,"pct":59.82}}
|
||||
,"/app/js/ui/profileModal/ProfileModerationController.js": {"lines":{"total":932,"covered":655,"skipped":0,"pct":70.27},"functions":{"total":28,"covered":21,"skipped":0,"pct":75},"statements":{"total":932,"covered":655,"skipped":0,"pct":70.27},"branches":{"total":133,"covered":94,"skipped":0,"pct":70.67}}
|
||||
,"/app/js/ui/profileModal/ProfileRelayController.js": {"lines":{"total":466,"covered":156,"skipped":0,"pct":33.47},"functions":{"total":13,"covered":3,"skipped":0,"pct":23.07},"statements":{"total":466,"covered":156,"skipped":0,"pct":33.47},"branches":{"total":25,"covered":16,"skipped":0,"pct":64}}
|
||||
,"/app/js/ui/profileModal/ProfileStorageController.js": {"lines":{"total":702,"covered":197,"skipped":0,"pct":28.06},"functions":{"total":16,"covered":7,"skipped":0,"pct":43.75},"statements":{"total":702,"covered":197,"skipped":0,"pct":28.06},"branches":{"total":46,"covered":35,"skipped":0,"pct":76.08}}
|
||||
,"/app/js/ui/profileModal/ProfileWalletController.js": {"lines":{"total":758,"covered":352,"skipped":0,"pct":46.43},"functions":{"total":25,"covered":17,"skipped":0,"pct":68},"statements":{"total":758,"covered":352,"skipped":0,"pct":46.43},"branches":{"total":107,"covered":85,"skipped":0,"pct":79.43}}
|
||||
,"/app/js/ui/views/VideoListView.js": {"lines":{"total":1391,"covered":743,"skipped":0,"pct":53.41},"functions":{"total":90,"covered":47,"skipped":0,"pct":52.22},"statements":{"total":1391,"covered":743,"skipped":0,"pct":53.41},"branches":{"total":248,"covered":163,"skipped":0,"pct":65.72}}
|
||||
,"/app/js/utils/asyncUtils.js": {"lines":{"total":105,"covered":87,"skipped":0,"pct":82.85},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":105,"covered":87,"skipped":0,"pct":82.85},"branches":{"total":21,"covered":17,"skipped":0,"pct":80.95}}
|
||||
,"/app/js/utils/cardSourceVisibility.js": {"lines":{"total":90,"covered":80,"skipped":0,"pct":88.88},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":90,"covered":80,"skipped":0,"pct":88.88},"branches":{"total":40,"covered":31,"skipped":0,"pct":77.5}}
|
||||
,"/app/js/utils/cryptoUtils.js": {"lines":{"total":69,"covered":12,"skipped":0,"pct":17.39},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":69,"covered":12,"skipped":0,"pct":17.39},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}}
|
||||
,"/app/js/utils/domUtils.js": {"lines":{"total":35,"covered":35,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":35,"covered":35,"skipped":0,"pct":100},"branches":{"total":12,"covered":11,"skipped":0,"pct":91.66}}
|
||||
,"/app/js/utils/formatters.js": {"lines":{"total":126,"covered":81,"skipped":0,"pct":64.28},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":126,"covered":81,"skipped":0,"pct":64.28},"branches":{"total":15,"covered":5,"skipped":0,"pct":33.33}}
|
||||
,"/app/js/utils/hashtagNormalization.js": {"lines":{"total":50,"covered":42,"skipped":0,"pct":84},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":50,"covered":42,"skipped":0,"pct":84},"branches":{"total":7,"covered":3,"skipped":0,"pct":42.85}}
|
||||
,"/app/js/utils/hex.js": {"lines":{"total":25,"covered":25,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":25,"covered":25,"skipped":0,"pct":100},"branches":{"total":18,"covered":18,"skipped":0,"pct":100}}
|
||||
,"/app/js/utils/linkPreviewSettings.js": {"lines":{"total":150,"covered":126,"skipped":0,"pct":84},"functions":{"total":14,"covered":12,"skipped":0,"pct":85.71},"statements":{"total":150,"covered":126,"skipped":0,"pct":84},"branches":{"total":40,"covered":27,"skipped":0,"pct":67.5}}
|
||||
,"/app/js/utils/logger.js": {"lines":{"total":170,"covered":122,"skipped":0,"pct":71.76},"functions":{"total":14,"covered":12,"skipped":0,"pct":85.71},"statements":{"total":170,"covered":122,"skipped":0,"pct":71.76},"branches":{"total":40,"covered":19,"skipped":0,"pct":47.5}}
|
||||
,"/app/js/utils/lruCache.js": {"lines":{"total":109,"covered":107,"skipped":0,"pct":98.16},"functions":{"total":8,"covered":7,"skipped":0,"pct":87.5},"statements":{"total":109,"covered":107,"skipped":0,"pct":98.16},"branches":{"total":13,"covered":12,"skipped":0,"pct":92.3}}
|
||||
,"/app/js/utils/magnetValidators.js": {"lines":{"total":59,"covered":16,"skipped":0,"pct":27.11},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":59,"covered":16,"skipped":0,"pct":27.11},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/utils/mediaLoader.js": {"lines":{"total":82,"covered":71,"skipped":0,"pct":86.58},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":82,"covered":71,"skipped":0,"pct":86.58},"branches":{"total":24,"covered":17,"skipped":0,"pct":70.83}}
|
||||
,"/app/js/utils/mime.js": {"lines":{"total":49,"covered":42,"skipped":0,"pct":85.71},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":49,"covered":42,"skipped":0,"pct":85.71},"branches":{"total":10,"covered":3,"skipped":0,"pct":30}}
|
||||
,"/app/js/utils/nostrHelpers.js": {"lines":{"total":102,"covered":58,"skipped":0,"pct":56.86},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":102,"covered":58,"skipped":0,"pct":56.86},"branches":{"total":16,"covered":10,"skipped":0,"pct":62.5}}
|
||||
,"/app/js/utils/pointer.js": {"lines":{"total":27,"covered":21,"skipped":0,"pct":77.77},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":27,"covered":21,"skipped":0,"pct":77.77},"branches":{"total":14,"covered":9,"skipped":0,"pct":64.28}}
|
||||
,"/app/js/utils/pointerNormalization.js": {"lines":{"total":164,"covered":72,"skipped":0,"pct":43.9},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":164,"covered":72,"skipped":0,"pct":43.9},"branches":{"total":48,"covered":26,"skipped":0,"pct":54.16}}
|
||||
,"/app/js/utils/profileBatchFetcher.js": {"lines":{"total":80,"covered":68,"skipped":0,"pct":85},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":80,"covered":68,"skipped":0,"pct":85},"branches":{"total":20,"covered":12,"skipped":0,"pct":60}}
|
||||
,"/app/js/utils/profileMedia.js": {"lines":{"total":84,"covered":80,"skipped":0,"pct":95.23},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":84,"covered":80,"skipped":0,"pct":95.23},"branches":{"total":38,"covered":36,"skipped":0,"pct":94.73}}
|
||||
,"/app/js/utils/qrcode.js": {"lines":{"total":805,"covered":240,"skipped":0,"pct":29.81},"functions":{"total":69,"covered":1,"skipped":0,"pct":1.44},"statements":{"total":805,"covered":240,"skipped":0,"pct":29.81},"branches":{"total":14,"covered":12,"skipped":0,"pct":85.71}}
|
||||
,"/app/js/utils/safeDecode.js": {"lines":{"total":32,"covered":26,"skipped":0,"pct":81.25},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":32,"covered":26,"skipped":0,"pct":81.25},"branches":{"total":14,"covered":11,"skipped":0,"pct":78.57}}
|
||||
,"/app/js/utils/serviceWorkerFallbackMessages.js": {"lines":{"total":58,"covered":48,"skipped":0,"pct":82.75},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":58,"covered":48,"skipped":0,"pct":82.75},"branches":{"total":21,"covered":19,"skipped":0,"pct":90.47}}
|
||||
,"/app/js/utils/simpleEventEmitter.js": {"lines":{"total":40,"covered":15,"skipped":0,"pct":37.5},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":40,"covered":15,"skipped":0,"pct":37.5},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}}
|
||||
,"/app/js/utils/storage.js": {"lines":{"total":114,"covered":48,"skipped":0,"pct":42.1},"functions":{"total":8,"covered":4,"skipped":0,"pct":50},"statements":{"total":114,"covered":48,"skipped":0,"pct":42.1},"branches":{"total":12,"covered":5,"skipped":0,"pct":41.66}}
|
||||
,"/app/js/utils/storagePointer.js": {"lines":{"total":157,"covered":108,"skipped":0,"pct":68.78},"functions":{"total":11,"covered":10,"skipped":0,"pct":90.9},"statements":{"total":157,"covered":108,"skipped":0,"pct":68.78},"branches":{"total":46,"covered":32,"skipped":0,"pct":69.56}}
|
||||
,"/app/js/utils/torrentHash.js": {"lines":{"total":72,"covered":58,"skipped":0,"pct":80.55},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":72,"covered":58,"skipped":0,"pct":80.55},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}}
|
||||
,"/app/js/utils/videoDeduper.js": {"lines":{"total":37,"covered":33,"skipped":0,"pct":89.18},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":37,"covered":33,"skipped":0,"pct":89.18},"branches":{"total":11,"covered":8,"skipped":0,"pct":72.72}}
|
||||
,"/app/js/utils/videoPointer.js": {"lines":{"total":126,"covered":107,"skipped":0,"pct":84.92},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":126,"covered":107,"skipped":0,"pct":84.92},"branches":{"total":44,"covered":37,"skipped":0,"pct":84.09}}
|
||||
,"/app/js/utils/videoTags.js": {"lines":{"total":136,"covered":128,"skipped":0,"pct":94.11},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":136,"covered":128,"skipped":0,"pct":94.11},"branches":{"total":40,"covered":36,"skipped":0,"pct":90}}
|
||||
,"/app/js/utils/videoTimestamps.js": {"lines":{"total":106,"covered":104,"skipped":0,"pct":98.11},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":106,"covered":104,"skipped":0,"pct":98.11},"branches":{"total":48,"covered":46,"skipped":0,"pct":95.83}}
|
||||
,"/app/js/webtorrent/index.js": {"lines":{"total":577,"covered":426,"skipped":0,"pct":73.83},"functions":{"total":26,"covered":15,"skipped":0,"pct":57.69},"statements":{"total":577,"covered":426,"skipped":0,"pct":73.83},"branches":{"total":74,"covered":28,"skipped":0,"pct":37.83}}
|
||||
,"/app/js/webtorrent/version.cjs": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":22,"covered":22,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":22,"covered":22,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/lib/file-iterator.js": {"lines":{"total":96,"covered":26,"skipped":0,"pct":27.08},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":96,"covered":26,"skipped":0,"pct":27.08},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/lib/file.js": {"lines":{"total":196,"covered":76,"skipped":0,"pct":38.77},"functions":{"total":13,"covered":2,"skipped":0,"pct":15.38},"statements":{"total":196,"covered":76,"skipped":0,"pct":38.77},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}}
|
||||
,"/app/js/webtorrent/lib/peer.js": {"lines":{"total":422,"covered":147,"skipped":0,"pct":34.83},"functions":{"total":28,"covered":0,"skipped":0,"pct":0},"statements":{"total":422,"covered":147,"skipped":0,"pct":34.83},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/lib/rarity-map.js": {"lines":{"total":105,"covered":60,"skipped":0,"pct":57.14},"functions":{"total":9,"covered":3,"skipped":0,"pct":33.33},"statements":{"total":105,"covered":60,"skipped":0,"pct":57.14},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}}
|
||||
,"/app/js/webtorrent/lib/selections.js": {"lines":{"total":185,"covered":96,"skipped":0,"pct":51.89},"functions":{"total":14,"covered":3,"skipped":0,"pct":21.42},"statements":{"total":185,"covered":96,"skipped":0,"pct":51.89},"branches":{"total":5,"covered":4,"skipped":0,"pct":80}}
|
||||
,"/app/js/webtorrent/lib/server.js": {"lines":{"total":452,"covered":69,"skipped":0,"pct":15.26},"functions":{"total":26,"covered":0,"skipped":0,"pct":0},"statements":{"total":452,"covered":69,"skipped":0,"pct":15.26},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/lib/torrent.js": {"lines":{"total":2002,"covered":722,"skipped":0,"pct":36.06},"functions":{"total":66,"covered":20,"skipped":0,"pct":30.3},"statements":{"total":2002,"covered":722,"skipped":0,"pct":36.06},"branches":{"total":87,"covered":35,"skipped":0,"pct":40.22}}
|
||||
,"/app/js/webtorrent/lib/webconn.js": {"lines":{"total":153,"covered":29,"skipped":0,"pct":18.95},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":153,"covered":29,"skipped":0,"pct":18.95},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/@thaunknown/simple-peer/lite.js": {"lines":{"total":868,"covered":49,"skipped":0,"pct":5.64},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":868,"covered":49,"skipped":0,"pct":5.64},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/@thaunknown/simple-websocket/index.js": {"lines":{"total":250,"covered":54,"skipped":0,"pct":21.6},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":250,"covered":54,"skipped":0,"pct":21.6},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/@thaunknown/thirty-two/lib/thirty-two/index.js": {"lines":{"total":121,"covered":78,"skipped":0,"pct":64.46},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":121,"covered":78,"skipped":0,"pct":64.46},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/addr-to-ip-port/index.js": {"lines":{"total":15,"covered":7,"skipped":0,"pct":46.66},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":7,"skipped":0,"pct":46.66},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js": {"lines":{"total":50,"covered":48,"skipped":0,"pct":96},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":50,"covered":48,"skipped":0,"pct":96},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}}
|
||||
,"/app/js/webtorrent/node_modules/bencode/index.js": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/bencode/lib/decode.js": {"lines":{"total":173,"covered":162,"skipped":0,"pct":93.64},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":173,"covered":162,"skipped":0,"pct":93.64},"branches":{"total":23,"covered":17,"skipped":0,"pct":73.91}}
|
||||
,"/app/js/webtorrent/node_modules/bencode/lib/encode.js": {"lines":{"total":136,"covered":97,"skipped":0,"pct":71.32},"functions":{"total":9,"covered":7,"skipped":0,"pct":77.77},"statements":{"total":136,"covered":97,"skipped":0,"pct":71.32},"branches":{"total":19,"covered":13,"skipped":0,"pct":68.42}}
|
||||
,"/app/js/webtorrent/node_modules/bencode/lib/encoding-length.js": {"lines":{"total":69,"covered":50,"skipped":0,"pct":72.46},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":69,"covered":50,"skipped":0,"pct":72.46},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/bencode/lib/util.js": {"lines":{"total":20,"covered":13,"skipped":0,"pct":65},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":20,"covered":13,"skipped":0,"pct":65},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}}
|
||||
,"/app/js/webtorrent/node_modules/bep53-range/index.js": {"lines":{"total":28,"covered":15,"skipped":0,"pct":53.57},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":28,"covered":15,"skipped":0,"pct":53.57},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/bitfield/lib/esm/index.js": {"lines":{"total":136,"covered":64,"skipped":0,"pct":47.05},"functions":{"total":9,"covered":3,"skipped":0,"pct":33.33},"statements":{"total":136,"covered":64,"skipped":0,"pct":47.05},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}}
|
||||
,"/app/js/webtorrent/node_modules/bittorrent-protocol/index.js": {"lines":{"total":1348,"covered":355,"skipped":0,"pct":26.33},"functions":{"total":85,"covered":1,"skipped":0,"pct":1.17},"statements":{"total":1348,"covered":355,"skipped":0,"pct":26.33},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/bittorrent-tracker/client.js": {"lines":{"total":292,"covered":101,"skipped":0,"pct":34.58},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":292,"covered":101,"skipped":0,"pct":34.58},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/bittorrent-tracker/lib/common.js": {"lines":{"total":41,"covered":30,"skipped":0,"pct":73.17},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":41,"covered":30,"skipped":0,"pct":73.17},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/bittorrent-tracker/lib/client/tracker.js": {"lines":{"total":28,"covered":9,"skipped":0,"pct":32.14},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":28,"covered":9,"skipped":0,"pct":32.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/bittorrent-tracker/lib/client/websocket-tracker.js": {"lines":{"total":442,"covered":58,"skipped":0,"pct":13.12},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":442,"covered":58,"skipped":0,"pct":13.12},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/block-iterator/index.js": {"lines":{"total":45,"covered":19,"skipped":0,"pct":42.22},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":45,"covered":19,"skipped":0,"pct":42.22},"branches":{"total":5,"covered":1,"skipped":0,"pct":20}}
|
||||
,"/app/js/webtorrent/node_modules/cache-chunk-store/index.js": {"lines":{"total":102,"covered":17,"skipped":0,"pct":16.66},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":102,"covered":17,"skipped":0,"pct":16.66},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/chunk-store-iterator/index.js": {"lines":{"total":69,"covered":25,"skipped":0,"pct":36.23},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":69,"covered":25,"skipped":0,"pct":36.23},"branches":{"total":6,"covered":1,"skipped":0,"pct":16.66}}
|
||||
,"/app/js/webtorrent/node_modules/cpus/browser.js": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}}
|
||||
,"/app/js/webtorrent/node_modules/create-torrent/index.js": {"lines":{"total":401,"covered":319,"skipped":0,"pct":79.55},"functions":{"total":6,"covered":5,"skipped":0,"pct":83.33},"statements":{"total":401,"covered":319,"skipped":0,"pct":79.55},"branches":{"total":59,"covered":21,"skipped":0,"pct":35.59}}
|
||||
,"/app/js/webtorrent/node_modules/cross-fetch-ponyfill/browser.js": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/debug/src/browser.js": {"lines":{"total":272,"covered":218,"skipped":0,"pct":80.14},"functions":{"total":6,"covered":3,"skipped":0,"pct":50},"statements":{"total":272,"covered":218,"skipped":0,"pct":80.14},"branches":{"total":17,"covered":7,"skipped":0,"pct":41.17}}
|
||||
,"/app/js/webtorrent/node_modules/debug/src/common.js": {"lines":{"total":292,"covered":198,"skipped":0,"pct":67.8},"functions":{"total":13,"covered":6,"skipped":0,"pct":46.15},"statements":{"total":292,"covered":198,"skipped":0,"pct":67.8},"branches":{"total":16,"covered":8,"skipped":0,"pct":50}}
|
||||
,"/app/js/webtorrent/node_modules/end-of-stream/index.js": {"lines":{"total":94,"covered":15,"skipped":0,"pct":15.95},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":94,"covered":15,"skipped":0,"pct":15.95},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/err-code/index.js": {"lines":{"total":69,"covered":24,"skipped":0,"pct":34.78},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":69,"covered":24,"skipped":0,"pct":34.78},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/escape-html/index.js": {"lines":{"total":78,"covered":32,"skipped":0,"pct":41.02},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":78,"covered":32,"skipped":0,"pct":41.02},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/events/events.js": {"lines":{"total":523,"covered":145,"skipped":0,"pct":27.72},"functions":{"total":26,"covered":8,"skipped":0,"pct":30.76},"statements":{"total":523,"covered":145,"skipped":0,"pct":27.72},"branches":{"total":48,"covered":23,"skipped":0,"pct":47.91}}
|
||||
,"/app/js/webtorrent/node_modules/fast-fifo/fixed-size.js": {"lines":{"total":39,"covered":13,"skipped":0,"pct":33.33},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":39,"covered":13,"skipped":0,"pct":33.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/fast-fifo/index.js": {"lines":{"total":48,"covered":15,"skipped":0,"pct":31.25},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":48,"covered":15,"skipped":0,"pct":31.25},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/fast-readable-async-iterator/index.js": {"lines":{"total":34,"covered":7,"skipped":0,"pct":20.58},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":34,"covered":7,"skipped":0,"pct":20.58},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/filename-reserved-regex/index.js": {"lines":{"total":9,"covered":9,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/fsa-chunk-store/createWritable.js": {"lines":{"total":243,"covered":42,"skipped":0,"pct":17.28},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":243,"covered":42,"skipped":0,"pct":17.28},"branches":{"total":3,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/fsa-chunk-store/index.js": {"lines":{"total":323,"covered":14,"skipped":0,"pct":4.33},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":323,"covered":14,"skipped":0,"pct":4.33},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/immediate-chunk-store/index.js": {"lines":{"total":55,"covered":28,"skipped":0,"pct":50.9},"functions":{"total":6,"covered":2,"skipped":0,"pct":33.33},"statements":{"total":55,"covered":28,"skipped":0,"pct":50.9},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}}
|
||||
,"/app/js/webtorrent/node_modules/inherits/inherits_browser.js": {"lines":{"total":27,"covered":16,"skipped":0,"pct":59.25},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":27,"covered":16,"skipped":0,"pct":59.25},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}}
|
||||
,"/app/js/webtorrent/node_modules/join-async-iterator/index.js": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}}
|
||||
,"/app/js/webtorrent/node_modules/junk/index.js": {"lines":{"total":34,"covered":32,"skipped":0,"pct":94.11},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":34,"covered":32,"skipped":0,"pct":94.11},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/limiter/index.js": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/limiter/lib/clock.js": {"lines":{"total":13,"covered":3,"skipped":0,"pct":23.07},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":3,"skipped":0,"pct":23.07},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/limiter/lib/rateLimiter.js": {"lines":{"total":137,"covered":54,"skipped":0,"pct":39.41},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":137,"covered":54,"skipped":0,"pct":39.41},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/limiter/lib/tokenBucket.js": {"lines":{"total":167,"covered":69,"skipped":0,"pct":41.31},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":167,"covered":69,"skipped":0,"pct":41.31},"branches":{"total":4,"covered":1,"skipped":0,"pct":25}}
|
||||
,"/app/js/webtorrent/node_modules/lru/index.js": {"lines":{"total":145,"covered":27,"skipped":0,"pct":18.62},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":145,"covered":27,"skipped":0,"pct":18.62},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/lt_donthave/index.js": {"lines":{"total":67,"covered":7,"skipped":0,"pct":10.44},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":67,"covered":7,"skipped":0,"pct":10.44},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/magnet-uri/index.js": {"lines":{"total":176,"covered":69,"skipped":0,"pct":39.2},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":176,"covered":69,"skipped":0,"pct":39.2},"branches":{"total":23,"covered":9,"skipped":0,"pct":39.13}}
|
||||
,"/app/js/webtorrent/node_modules/memory-chunk-store/index.js": {"lines":{"total":65,"covered":29,"skipped":0,"pct":44.61},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":65,"covered":29,"skipped":0,"pct":44.61},"branches":{"total":8,"covered":3,"skipped":0,"pct":37.5}}
|
||||
,"/app/js/webtorrent/node_modules/mime/Mime.js": {"lines":{"total":97,"covered":89,"skipped":0,"pct":91.75},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":97,"covered":89,"skipped":0,"pct":91.75},"branches":{"total":12,"covered":9,"skipped":0,"pct":75}}
|
||||
,"/app/js/webtorrent/node_modules/mime/lite.js": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/mime/types/standard.js": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/ms/index.js": {"lines":{"total":162,"covered":146,"skipped":0,"pct":90.12},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":162,"covered":146,"skipped":0,"pct":90.12},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/once/once.js": {"lines":{"total":42,"covered":12,"skipped":0,"pct":28.57},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":42,"covered":12,"skipped":0,"pct":28.57},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/parse-torrent/index.js": {"lines":{"total":264,"covered":180,"skipped":0,"pct":68.18},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":264,"covered":180,"skipped":0,"pct":68.18},"branches":{"total":29,"covered":8,"skipped":0,"pct":27.58}}
|
||||
,"/app/js/webtorrent/node_modules/path-esm/index.js": {"lines":{"total":18,"covered":18,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":18,"covered":18,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/path-esm/lib/basename.js": {"lines":{"total":72,"covered":72,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":72,"covered":72,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/path-esm/lib/dirname.js": {"lines":{"total":26,"covered":3,"skipped":0,"pct":11.53},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":26,"covered":3,"skipped":0,"pct":11.53},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/path-esm/lib/join.js": {"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":16,"covered":16,"skipped":0,"pct":100},"branches":{"total":5,"covered":3,"skipped":0,"pct":60}}
|
||||
,"/app/js/webtorrent/node_modules/path-esm/lib/normalize.js": {"lines":{"total":19,"covered":18,"skipped":0,"pct":94.73},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":19,"covered":18,"skipped":0,"pct":94.73},"branches":{"total":5,"covered":1,"skipped":0,"pct":20}}
|
||||
,"/app/js/webtorrent/node_modules/path-esm/lib/util.js": {"lines":{"total":72,"covered":43,"skipped":0,"pct":59.72},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":72,"covered":43,"skipped":0,"pct":59.72},"branches":{"total":18,"covered":13,"skipped":0,"pct":72.22}}
|
||||
,"/app/js/webtorrent/node_modules/piece-length/index.js": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}}
|
||||
,"/app/js/webtorrent/node_modules/pump/index.js": {"lines":{"total":86,"covered":32,"skipped":0,"pct":37.2},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":86,"covered":32,"skipped":0,"pct":37.2},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/queue-microtask/index.js": {"lines":{"total":9,"covered":5,"skipped":0,"pct":55.55},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":5,"skipped":0,"pct":55.55},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/queue-tick/queue-microtask.js": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/random-iterate/index.js": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":19,"covered":10,"skipped":0,"pct":52.63},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}}
|
||||
,"/app/js/webtorrent/node_modules/range-parser/index.js": {"lines":{"total":162,"covered":84,"skipped":0,"pct":51.85},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":162,"covered":84,"skipped":0,"pct":51.85},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/rc4/rc4.js": {"lines":{"total":204,"covered":55,"skipped":0,"pct":26.96},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.66},"statements":{"total":204,"covered":55,"skipped":0,"pct":26.96},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/run-parallel/index.js": {"lines":{"total":51,"covered":43,"skipped":0,"pct":84.31},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":51,"covered":43,"skipped":0,"pct":84.31},"branches":{"total":14,"covered":11,"skipped":0,"pct":78.57}}
|
||||
,"/app/js/webtorrent/node_modules/run-parallel-limit/index.js": {"lines":{"total":70,"covered":5,"skipped":0,"pct":7.14},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":70,"covered":5,"skipped":0,"pct":7.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/speed-limiter/index.js": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/speed-limiter/lib/throttle-group.js": {"lines":{"total":91,"covered":62,"skipped":0,"pct":68.13},"functions":{"total":11,"covered":4,"skipped":0,"pct":36.36},"statements":{"total":91,"covered":62,"skipped":0,"pct":68.13},"branches":{"total":13,"covered":4,"skipped":0,"pct":30.76}}
|
||||
,"/app/js/webtorrent/node_modules/speed-limiter/lib/throttle.js": {"lines":{"total":143,"covered":47,"skipped":0,"pct":32.86},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":143,"covered":47,"skipped":0,"pct":32.86},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/speed-limiter/lib/utils.js": {"lines":{"total":7,"covered":4,"skipped":0,"pct":57.14},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":4,"skipped":0,"pct":57.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/streamx/index.js": {"lines":{"total":1170,"covered":348,"skipped":0,"pct":29.74},"functions":{"total":97,"covered":0,"skipped":0,"pct":0},"statements":{"total":1170,"covered":348,"skipped":0,"pct":29.74},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/text-decoder/index.js": {"lines":{"total":64,"covered":39,"skipped":0,"pct":60.93},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":64,"covered":39,"skipped":0,"pct":60.93},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/text-decoder/lib/browser-decoder.js": {"lines":{"total":17,"covered":9,"skipped":0,"pct":52.94},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":9,"skipped":0,"pct":52.94},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/throughput/index.js": {"lines":{"total":35,"covered":17,"skipped":0,"pct":48.57},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":35,"covered":17,"skipped":0,"pct":48.57},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/torrent-discovery/index.js": {"lines":{"total":224,"covered":110,"skipped":0,"pct":49.1},"functions":{"total":14,"covered":2,"skipped":0,"pct":14.28},"statements":{"total":224,"covered":110,"skipped":0,"pct":49.1},"branches":{"total":20,"covered":2,"skipped":0,"pct":10}}
|
||||
,"/app/js/webtorrent/node_modules/torrent-piece/index.js": {"lines":{"total":107,"covered":32,"skipped":0,"pct":29.9},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":107,"covered":32,"skipped":0,"pct":29.9},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/uint8-util/browser.js": {"lines":{"total":68,"covered":48,"skipped":0,"pct":70.58},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.42},"statements":{"total":68,"covered":48,"skipped":0,"pct":70.58},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}}
|
||||
,"/app/js/webtorrent/node_modules/uint8-util/util.js": {"lines":{"total":66,"covered":61,"skipped":0,"pct":92.42},"functions":{"total":15,"covered":11,"skipped":0,"pct":73.33},"statements":{"total":66,"covered":61,"skipped":0,"pct":92.42},"branches":{"total":20,"covered":19,"skipped":0,"pct":95}}
|
||||
,"/app/js/webtorrent/node_modules/unordered-array-remove/index.js": {"lines":{"total":12,"covered":2,"skipped":0,"pct":16.66},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":2,"skipped":0,"pct":16.66},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/ut_metadata/index.js": {"lines":{"total":246,"covered":14,"skipped":0,"pct":5.69},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":246,"covered":14,"skipped":0,"pct":5.69},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/node_modules/webrtc-polyfill/browser.js": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}}
|
||||
,"/app/js/webtorrent/node_modules/wrappy/wrappy.js": {"lines":{"total":33,"covered":18,"skipped":0,"pct":54.54},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":33,"covered":18,"skipped":0,"pct":54.54},"branches":{"total":3,"covered":1,"skipped":0,"pct":33.33}}
|
||||
,"/app/js/webtorrent/polyfills/process-fast.js": {"lines":{"total":40,"covered":39,"skipped":0,"pct":97.5},"functions":{"total":28,"covered":3,"skipped":0,"pct":10.71},"statements":{"total":40,"covered":39,"skipped":0,"pct":97.5},"branches":{"total":3,"covered":3,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/webpack/bootstrap": {"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/webpack/runtime/create%20fake%20namespace%20object": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":11,"covered":4,"skipped":0,"pct":36.36}}
|
||||
,"/app/js/webtorrent/webpack/runtime/define%20property%20getters": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/webpack/runtime/hasOwnProperty%20shorthand": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/js/webtorrent/webpack/runtime/make%20namespace%20object": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
|
||||
,"/app/scripts/run-unit-tests.mjs": {"lines":{"total":205,"covered":134,"skipped":0,"pct":65.36},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":205,"covered":134,"skipped":0,"pct":65.36},"branches":{"total":38,"covered":17,"skipped":0,"pct":44.73}}
|
||||
,"/app/scripts/agent/setup-test-env.js": {"lines":{"total":42,"covered":20,"skipped":0,"pct":47.61},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":20,"skipped":0,"pct":47.61},"branches":{"total":8,"covered":1,"skipped":0,"pct":12.5}}
|
||||
,"/app/torrent/ui/styleHelpers.js": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}}
|
||||
,"/app/torrent/ui/toastService.js": {"lines":{"total":191,"covered":163,"skipped":0,"pct":85.34},"functions":{"total":15,"covered":8,"skipped":0,"pct":53.33},"statements":{"total":191,"covered":163,"skipped":0,"pct":85.34},"branches":{"total":21,"covered":11,"skipped":0,"pct":52.38}}
|
||||
,"/app/vendor/crypto-helpers.bundle.min.js": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":68,"covered":38,"skipped":0,"pct":55.88},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":82,"covered":57,"skipped":0,"pct":69.51}}
|
||||
,"/app/vendor/floating-ui.dom.bundle.min.js": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":83,"covered":60,"skipped":0,"pct":72.28},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":205,"covered":96,"skipped":0,"pct":46.82}}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"error": "Flakiness check timed out after 400s",
|
||||
"runs": []
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
|
||||
const rootDir = process.cwd();
|
||||
const reportFile = `test-audit-report-${new Date().toISOString().split("T")[0]}.md`;
|
||||
const logFile = "test-audit/coverage-run.log";
|
||||
const flakinessFile = "test-audit/flakiness-matrix.json";
|
||||
const suspiciousFile = "test-audit/suspicious-tests.json";
|
||||
const coverageFile = "coverage/coverage-summary.json";
|
||||
|
||||
async function readJson(file) {
|
||||
try {
|
||||
const content = await fs.readFile(file, "utf8");
|
||||
return JSON.parse(content);
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
async function run() {
|
||||
const flakiness = await readJson(flakinessFile);
|
||||
const suspicious = await readJson(suspiciousFile);
|
||||
const coverage = await readJson(coverageFile);
|
||||
const logContent = await fs.readFile(logFile, "utf8");
|
||||
|
||||
let report = `# Test Audit Report - ${new Date().toISOString().split("T")[0]}\n\n`;
|
||||
|
||||
// Summary
|
||||
report += "## Summary\n";
|
||||
report += "- **Runner**: Custom (`scripts/run-unit-tests.mjs`)\n";
|
||||
report += "- **Command**: `npx c8 npm run test:unit`\n";
|
||||
|
||||
// Failures
|
||||
if (logContent.includes("failed with exit code")) {
|
||||
report += "- **Status**: FAIL (Failures detected)\n";
|
||||
} else {
|
||||
report += "- **Status**: PASS\n";
|
||||
}
|
||||
|
||||
// Coverage Stats
|
||||
if (coverage && coverage.total) {
|
||||
report += `- **Coverage**: ${coverage.total.lines.pct}% Lines, ${coverage.total.statements.pct}% Statements, ${coverage.total.functions.pct}% Functions, ${coverage.total.branches.pct}% Branches\n`;
|
||||
} else {
|
||||
report += "- **Coverage**: N/A\n";
|
||||
}
|
||||
|
||||
// Flakiness
|
||||
report += "\n## Flakiness Check\n";
|
||||
if (flakiness && flakiness.error) {
|
||||
report += `- **Error**: ${flakiness.error}\n`;
|
||||
} else if (flakiness && flakiness.runs) {
|
||||
// Process flakiness
|
||||
report += `- **Runs**: ${flakiness.runs.length}\n`;
|
||||
// Add details
|
||||
} else {
|
||||
report += "- **Status**: Skipped or failed to produce results.\n";
|
||||
}
|
||||
|
||||
// Suspicious Tests
|
||||
report += "\n## Suspicious Tests\n";
|
||||
if (suspicious) {
|
||||
let count = 0;
|
||||
for (const [file, issues] of Object.entries(suspicious)) {
|
||||
count++;
|
||||
report += `- **${file}**:\n`;
|
||||
issues.forEach(i => report += ` - ${i}\n`);
|
||||
}
|
||||
if (count === 0) report += "None found.\n";
|
||||
} else {
|
||||
report += "Analysis not run or failed.\n";
|
||||
}
|
||||
|
||||
// Coverage Gaps (Critical Files)
|
||||
report += "\n## Coverage Gaps (< 70%)\n";
|
||||
if (coverage) {
|
||||
let gaps = 0;
|
||||
for (const [file, stats] of Object.entries(coverage)) {
|
||||
if (file === "total") continue;
|
||||
const relativePath = path.relative(rootDir, file);
|
||||
if (stats.lines.pct < 70) {
|
||||
gaps++;
|
||||
report += `- **${relativePath}**: ${stats.lines.pct}% (Lines)\n`;
|
||||
}
|
||||
}
|
||||
if (gaps === 0) report += "No files under 70%.\n";
|
||||
}
|
||||
|
||||
// Recommendations
|
||||
report += "\n## Recommendations\n";
|
||||
report += "1. Fix suspicious tests (especially timeouts and console usage).\n";
|
||||
report += "2. Improve coverage for files < 70%.\n";
|
||||
report += "3. Investigate potential flakiness (if checked).\n";
|
||||
|
||||
await fs.writeFile(reportFile, report);
|
||||
console.log(`Report generated: ${reportFile}`);
|
||||
}
|
||||
|
||||
run().catch(console.error);
|
||||
+208628
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,97 @@
|
||||
import { spawn } from "node:child_process";
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
|
||||
const RUNS = 3;
|
||||
const RESULTS_FILE = "test-audit/flakiness-matrix.json";
|
||||
|
||||
async function runTests(runIndex) {
|
||||
console.log(`Starting Run ${runIndex + 1}/${RUNS}...`);
|
||||
return new Promise((resolve) => {
|
||||
const child = spawn("npm", ["run", "test:unit"], {
|
||||
stdio: ["ignore", "pipe", "pipe"],
|
||||
shell: true
|
||||
});
|
||||
|
||||
let output = "";
|
||||
child.stdout.on("data", (d) => output += d.toString());
|
||||
child.stderr.on("data", (d) => output += d.toString());
|
||||
|
||||
child.on("close", (code) => {
|
||||
resolve({ code, output });
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function parseFailedFiles(output) {
|
||||
const failedFiles = [];
|
||||
const lines = output.split("\n");
|
||||
for (const line of lines) {
|
||||
// Look for "failed with exit code" or similar from run-unit-tests.mjs
|
||||
// The script logs: "Error: <relativePath> failed with exit code <code>"
|
||||
// or "Error: <relativePath> timed out..."
|
||||
const match = line.match(/Error: (.+) (failed with exit code|timed out)/);
|
||||
if (match) {
|
||||
failedFiles.push(match[1]);
|
||||
}
|
||||
}
|
||||
return failedFiles;
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const matrix = {
|
||||
runs: [],
|
||||
flakyFiles: []
|
||||
};
|
||||
|
||||
const fileStatus = {}; // { filename: { pass: 0, fail: 0 } }
|
||||
|
||||
for (let i = 0; i < RUNS; i++) {
|
||||
const { code, output } = await runTests(i);
|
||||
const failedFiles = parseFailedFiles(output);
|
||||
const passed = code === 0;
|
||||
|
||||
matrix.runs.push({
|
||||
run: i + 1,
|
||||
passed,
|
||||
failedFiles
|
||||
});
|
||||
|
||||
// We assume all files ran if the suite finished, or at least the ones that didn't fail passed.
|
||||
// But since run-unit-tests.mjs aborts on first failure?
|
||||
// Wait, let's check run-unit-tests.mjs logic.
|
||||
// It loops through `selectedTests` and awaits each spawn.
|
||||
// If a test fails, `finalize` is called with error.
|
||||
// `child.on("close", ...)` calls finalize.
|
||||
// The `run()` function in `run-unit-tests.mjs`:
|
||||
// `try { await run(); } catch ...`
|
||||
// Inside `run()`, it loops. If `spawn` promise rejects, the loop breaks?
|
||||
// `await new Promise(...)`. If reject is called, `run()` throws and exits?
|
||||
// Yes: `try { await run() } catch (e) { ... process.exit(1) }`.
|
||||
// So if one file fails, the whole suite stops.
|
||||
// This makes flakiness detection harder because subsequent files aren't run.
|
||||
// However, if the suite passes, all files passed.
|
||||
// If it fails, one file failed.
|
||||
|
||||
// We can just track which file failed if any.
|
||||
if (failedFiles.length > 0) {
|
||||
for (const file of failedFiles) {
|
||||
if (!fileStatus[file]) fileStatus[file] = { failures: 0 };
|
||||
fileStatus[file].failures++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Identify flaky files: files that failed in some runs but not all?
|
||||
// Or just list files that failed at all.
|
||||
// If a file fails every time, it's broken, not flaky (unless we fixed it and it broke again).
|
||||
// If it fails sometimes, it's flaky.
|
||||
// Since we stop on first failure, we can't know if subsequent files would have failed.
|
||||
|
||||
// We'll just record the matrix.
|
||||
|
||||
await fs.writeFile(RESULTS_FILE, JSON.stringify(matrix, null, 2));
|
||||
console.log(`Flakiness check complete. Saved to ${RESULTS_FILE}`);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -0,0 +1,89 @@
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const rootDir = process.cwd();
|
||||
const testsDir = path.join(rootDir, "tests");
|
||||
const resultsFile = path.join(rootDir, "test-audit/suspicious-tests.json");
|
||||
|
||||
const checks = {
|
||||
zeroAssertions: {
|
||||
regex: /(expect\(|assert\.|t\.is|chai\.expect|should\.)/,
|
||||
message: "No obvious assertions found",
|
||||
inverted: true // fails if NOT found
|
||||
},
|
||||
focusedOrSkipped: {
|
||||
regex: /\.(only|skip)\(/,
|
||||
message: "Test is focused (.only) or skipped (.skip)"
|
||||
},
|
||||
sleeps: {
|
||||
regex: /(setTimeout\(|sleep\(|await delay\(|new Promise\(r => setTimeout)/,
|
||||
message: "Uses setTimeout/sleep (brittle)"
|
||||
},
|
||||
network: {
|
||||
regex: /(fetch\(|axios\.|new WebSocket|WebSocket\()/,
|
||||
message: "Direct network usage found"
|
||||
},
|
||||
mocking: {
|
||||
regex: /(jest\.mock|sinon\.stub|proxyquire|rewire|vi\.mock|vi\.spy)/,
|
||||
message: "Heavy mocking detected"
|
||||
},
|
||||
console: {
|
||||
regex: /console\.(log|warn|error)/,
|
||||
message: "Console usage inside test"
|
||||
}
|
||||
};
|
||||
|
||||
async function collectTests(dir, testFiles = []) {
|
||||
const entries = await fs.readdir(dir, { withFileTypes: true });
|
||||
|
||||
for (const entry of entries) {
|
||||
if (entry.name.startsWith(".")) continue;
|
||||
const fullPath = path.join(dir, entry.name);
|
||||
|
||||
if (entry.isDirectory()) {
|
||||
if (entry.name === "visual") continue; // Skip visual tests if needed?
|
||||
await collectTests(fullPath, testFiles);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (entry.isFile() && (entry.name.endsWith(".test.mjs") || entry.name.endsWith(".test.js"))) {
|
||||
testFiles.push(fullPath);
|
||||
}
|
||||
}
|
||||
return testFiles;
|
||||
}
|
||||
|
||||
async function analyzeFile(filepath) {
|
||||
const content = await fs.readFile(filepath, "utf8");
|
||||
const issues = [];
|
||||
|
||||
for (const [key, check] of Object.entries(checks)) {
|
||||
const match = check.regex.test(content);
|
||||
if (check.inverted) {
|
||||
if (!match) issues.push(check.message);
|
||||
} else {
|
||||
if (match) issues.push(check.message);
|
||||
}
|
||||
}
|
||||
|
||||
return issues;
|
||||
}
|
||||
|
||||
async function run() {
|
||||
const testFiles = await collectTests(testsDir);
|
||||
const suspiciousTests = {};
|
||||
|
||||
for (const file of testFiles) {
|
||||
const issues = await analyzeFile(file);
|
||||
if (issues.length > 0) {
|
||||
const relativePath = path.relative(rootDir, file);
|
||||
suspiciousTests[relativePath] = issues;
|
||||
}
|
||||
}
|
||||
|
||||
await fs.writeFile(resultsFile, JSON.stringify(suspiciousTests, null, 2));
|
||||
console.log(`Static analysis complete. Found issues in ${Object.keys(suspiciousTests).length} files.`);
|
||||
}
|
||||
|
||||
run().catch(console.error);
|
||||
@@ -0,0 +1,245 @@
|
||||
{
|
||||
"tests/admin-list-store.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)",
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/app-batch-fetch-profiles.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/auth-service.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/comment-thread-service.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)",
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/compliance/nip07_compliance.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/discussion-count-service.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/dm-normalization.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/event-schemas.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/feed-engine.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)",
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/hashtag-preferences.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/minimal-channel-profile.test.mjs": [
|
||||
"No obvious assertions found"
|
||||
],
|
||||
"tests/minimal-webtorrent.test.mjs": [
|
||||
"No obvious assertions found"
|
||||
],
|
||||
"tests/modal-accessibility.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/moderation/submit-report.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/moderation/video-card.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nip07-concurrency.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/client.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/comment-events.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/countDiagnostics.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr/dm-direct-message-flow.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/dmDecryptWorkerClient.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr/dmSignalEvents.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/integration-remote-flow.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/nip04WorkerClient.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr/nip07Permissions.test.js": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/sessionActor.test.mjs": [
|
||||
"Test is focused (.only) or skipped (.skip)"
|
||||
],
|
||||
"tests/nostr/sign-request-queue.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/toolkit.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr/watchHistory.test.js": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr-boost-actions.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr-count-fallback.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr-delete-flow.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr-login-permissions.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr-nip46-queue.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr-private-key-signer.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr-publish-rejection.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr-rebroadcast-guard.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr-send-direct-message.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr-service-access-control.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr-signer-race.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/nostr-view-event-bindings.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nostr-view-events.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/nwc-client.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/performance/resolvePostedAt.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/profile-cache.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/profile-modal-controller.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/race/nostr-client-init-race.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/services/exploreDataService.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/services/link-preview-service.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)",
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/services/playbackService_forcedSource.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/services/profileMetadataService.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/services/relay-health-service.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/services/trustBootstrap.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/sign-request-queue.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/state/cache.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/subscriptions-feed.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/subscriptions-manager.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/torrent/toast-service.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/ui/components/debug_hashtag_strip_helper.test.mjs": [
|
||||
"No obvious assertions found",
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/ui/profileModalController-addProfile.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/ui/uploadModal-integration.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/ui/uploadModal-reset.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/ui/url-health-controller.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/unit/client-count-resilience.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/unit/notificationController.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/unit/ui/videoModalController.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/user-blocks.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/utils/domUtils.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/video-card-source-visibility.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/video-modal-accessibility.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/view-counter.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)",
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/watch-history-feed.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/watch-history.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)",
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/watchHistory/watch-history-telemetry.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/webtorrent-handlers.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)"
|
||||
],
|
||||
"tests/webtorrent-regression.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)",
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/zap-shared-state.test.mjs": [
|
||||
"Console usage inside test"
|
||||
],
|
||||
"tests/zap-split.test.mjs": [
|
||||
"Uses setTimeout/sleep (brittle)",
|
||||
"Console usage inside test"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user