Talk web test coverage
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 2.2k
- Forks
- 587
- Avg merge
- 18h 27m
- Merged PRs (30d)
- 333
Description
How to use GitHub
- Please use the 👍 reaction to show that you are interested into the same feature.
- Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
- Subscribe to receive notifications on status change and new comments.
I would like to define specific files (components, stores, service) to cover it prior to moving from Vue 2.7 to Vue 3
⚠️ - In process
✅ - Fully covered
This is a current test coverage on spreed repositories (updated at 26.06.2026):
| --------------------------------------------------------------------- | --------- | ---------- | --------- | --------- | ----------------------------------------------------------------------------------------- |
|---|---|---|---|---|---|
| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
| --------------------------------------------------------------------- | --------- | ---------- | --------- | --------- | ----------------------------------------------------------------------------------------- |
| All files | 31.87 | 28.58 | 29.16 | 31.97 | |
| src/components | 19.72 | 15.44 | 16.81 | 20.51 | |
| src/composables | 28.57 | 24.03 | 36.36 | 28.21 | |
| src/router | 29.41 | 7.69 | 50 | 29.41 | |
| src/services | 49.06 | 69.94 | 25.21 | 47.71 | |
| src/store | 65.52 | 59.66 | 70.3 | 65.4 | |
| src/stores | 67.39 | 67.32 | 64.77 | 67.11 | |
| actor.ts | 95.83 | 92.85 | 92.85 | 97.67 | 109 |
| bots.ts | 100 | 100 | 100 | 100 | |
| breakoutRooms.ts | 2.4 | 0 | 4.54 | 2.43 | 45-290 |
| callView.ts | 73.68 | 100 | 76.47 | 73.68 | 65,192-232 |
| chat.ts | 83.73 | 74.61 | 84.78 | 82.91 | 103,114,155,215-231,252,272-307,323-324,338-339,353-354,358,365-366,399,482,485,577 |
| chatExtras.ts | 37.86 | 25.71 | 34.92 | 37.93 | 93-106,111-127,165-225,263,275-411,425-427,444-456,481-491,522,632,657-833 |
| conversationTags.ts | 100 | 90.9 | 100 | 100 | 80 |
| dashboard.ts | 8.33 | 0 | 0 | 8.33 | 24-66 |
| federation.ts | 100 | 87.5 | 100 | 100 | 120,145 |
| groupware.ts | 27.11 | 26.92 | 25 | 27.58 | 59-67,100-139,160-207 |
| guestName.ts | 96.77 | 94.44 | 100 | 96.77 | 82 |
| integrations.js | 100 | 100 | 100 | 100 | |
| liveTranscription.ts | 12.12 | 0 | 16.66 | 12.12 | 40-107 |
| pinia.ts | 0 | 0 | 0 | 0 | |
| polls.ts | 74.71 | 60 | 85.71 | 74.71 | 55-56,95,110,145,157-171,180-181,190-191,200-201,224-225 |
| reactions.js | 100 | 100 | 100 | 100 | |
| session.ts | 99.12 | 97.36 | 100 | 99.1 | 314 |
| settings.ts | 50.74 | 63.33 | 23.8 | 52.3 | 63,73-81,120-186,205-247 |
| sharedItems.ts | 56.25 | 52 | 57.89 | 56.25 | 125,168,172,186-202,262-367 |
| sidebar.ts | 100 | 100 | 100 | 100 | |
| signalingState.ts | 98.52 | 95.34 | 100 | 98.48 | 185 |
| sounds.js | 19.56 | 16.66 | 10 | 19.56 | 19,22,58-134 |
| talkHash.js | 92 | 93.75 | 100 | 92 | 70-71 |
| token.ts | 73.33 | 100 | 57.14 | 71.42 | 27-37,54-55 |
| upload.ts | 76.53 | 66.05 | 73.68 | 76.41 | 122-133,204,262,495-508,515-519,551-552,557-558,586,630,649-652,672-722 |
| src/utils | 33.59 | 28.65 | 34.14 | 33.29 | |
| CancelableRequest.ts | 100 | 100 | 100 | 100 | |
| EmitterMixin.js | 92.3 | 70 | 100 | 92 | 52,72 |
| SignalingParticipantList.js | 92.95 | 78.57 | 100 | 92.64 | 49,53-56 |
| SignalingTypingHandler.js | 90.38 | 80.76 | 100 | 90.19 | 49,53-55,103 |
| attachmediastream.js | 65.21 | 35 | 33.33 | 65.21 | 47-48,52-53,62-64,69 |
| browserCheck.ts | 85 | 71.79 | 0 | 85 | 74-76 |
| calculateVotePercentage.ts | 100 | 100 | 100 | 100 | |
| clipboard.js | 0 | 0 | 0 | 0 | 19-44 |
| conversation.ts | 33.78 | 25.8 | 76.92 | 34.24 | 25,78-88,107-111,124,138-141,145-171,190,213-222,229 |
| davUtils.ts | 0 | 0 | 0 | 0 | 17-30 |
| debugTimer.ts | 42.85 | 50 | 50 | 42.85 | 17-22,28-32 |
| fileDownload.ts | 100 | 100 | 100 | 100 | |
| fileUpload.ts | 100 | 100 | 100 | 100 | |
| formattedTime.ts | 93.33 | 84.61 | 100 | 93.33 | 85,152,161 |
| generatePassword.ts | 7.14 | 0 | 0 | 7.69 | 16-31 |
| getCustomDateOptions.ts | 0 | 0 | 0 | 0 | 20-78 |
| getDisplayName.ts | 38.46 | 53.84 | 33.33 | 41.66 | 39-53 |
| getItemTypeFromMessage.ts | 96.42 | 87.5 | 100 | 96.42 | 80 |
| getMessageIcon.ts | 50 | 42.85 | 100 | 50 | 26,30,36,39,42,47,54-61 |
| handleUrl.ts | 90 | 77.77 | 100 | 90 | 36 |
| message.ts | 12.5 | 2.5 | 11.11 | 12.5 | 100-165,180,194-302 |
| prepareTemporaryMessage.ts | 88.88 | 76.92 | 100 | 88.88 | 119 |
| propfindErrorParse.ts | 0 | 100 | 0 | 0 | 21-29 |
| readableNumber.ts | 100 | 100 | 100 | 100 | |
| requestTabLeadership.js | 70 | 75 | 50 | 70 | 27-32 |
| satisfyVersion.ts | 100 | 100 | 100 | 100 | |
| selectionRange.ts | 0 | 0 | 0 | 0 | 12-93 |
| signaling.js | 10.42 | 0 | 0.86 | 10.47 | ...1356,1361-1377,1383-1432,1437-1450,1455-1517,1522-1543,1548-1561,1565-1575,1595-1605 |
| sounds.js | 5 | 0 | 0 | 5 | 19-20,33-130 |
| suppressNoise.ts | 5.55 | 0 | 0 | 5.55 | 21-194 |
| talkDesktopUtils.ts | 100 | 50 | 100 | 100 | 8-12 |
| textParse.ts | 96.55 | 92.1 | 100 | 96.42 | 61 |
| userStatus.ts | 62.96 | 50 | 66.66 | 62.96 | 23,36-44,55-56,73,79,101 |
| utils.ts | 0 | 100 | 0 | 0 | 13 |
| src/utils/e2ee | 3.34 | 2.1 | 3.57 | 3.36 | |
| JitsiDeferred.js | 0 | 100 | 0 | 0 | 20-48 |
| JitsiE2EEContext.js | 4.16 | 0 | 0 | 4.34 | 33-140 |
| crypto-utils.js | 0 | 100 | 0 | 0 | 16-65 |
| encryption.js | 3.23 | 2.43 | 5.4 | 3.25 | 46-679 |
| olm.js | 11.11 | 0 | 0 | 11.11 | 16-30 |
| src/utils/media/effects/virtual-background | 1.73 | 0 | 2.56 | 1.75 | |
| TimerWorker.js | 100 | 100 | 100 | 100 | |
| VideoStreamBackgroundEffect.js | 0.39 | 0 | 4.16 | 0.4 | 52-700 |
| WebGLCompositor.js | 1.26 | 0 | 0 | 1.26 | 42-835 |
| src/utils/media/pipeline | 55.18 | 58.46 | 60 | 55.31 | |
| BlackVideoEnforcer.js | 96.61 | 96.66 | 100 | 96.61 | 82-84 |
| MediaDevicesSource.js | 64.93 | 58.42 | 77.77 | 64.93 | 85,94-103,148,153,178,239-249,300,320-385 |
| NoiseSuppressor.js | 0 | 0 | 0 | 0 | 37-145 |
| SpeakingMonitor.js | 2.12 | 0 | 0 | 2.12 | 39-129 |
| TrackConstrainer.js | 0 | 0 | 0 | 0 | 30-51 |
| TrackEnabler.js | 100 | 100 | 100 | 100 | |
| TrackSink.js | 100 | 100 | 100 | 100 | |
| TrackSinkMixin.js | 41.17 | 45.58 | 36.84 | 43.07 | 67-114,123,134,144-180,191,208,212 |
| TrackSinkSource.js | 100 | 100 | 100 | 100 | |
| TrackSource.js | 100 | 100 | 100 | 100 | |
| TrackSourceMixin.js | 72.54 | 77.55 | 64.7 | 71.42 | 72-82,90,101,111-115,134,153,179-183,204 |
| TrackToStream.js | 100 | 100 | 100 | 100 | |
| VirtualBackground.js | 55.44 | 64.28 | 78.94 | 55.44 | 54-109,129-166,179,232-234,253,314-316 |
| src/utils/webrtc | 18.24 | 8.78 | 20.42 | 18.43 | |
| CallParticipantsAudioPlayer.js | 64.21 | 39.58 | 92.3 | 64.21 | 36-39,70-71,97,106,113-131,158-159,163,167,182-199 |
| LocalStateBroadcaster.ts | 100 | 100 | 100 | 100 | |
| LocalStateBroadcasterMcu.ts | 98.18 | 90.9 | 100 | 98.18 | 170 |
| LocalStateBroadcasterNoMcu.ts | 97.29 | 91.66 | 100 | 97.29 | 115 |
| MediaDevicesManager.js | 12.65 | 4.6 | 13.33 | 13.27 | 127,130,133,153-164,188-192,200-617 |
| RemoteVideoBlocker.js | 100 | 100 | 100 | 100 | |
| SentVideoQualityThrottler.js | 1.13 | 0 | 0 | 1.14 | 28-60,66-190 |
| SpeakingStatusHandler.js | 0 | 0 | 0 | 0 | 36-142 |
| SpeakingWhileMutedWarner.js | 1.63 | 0 | 0 | 1.63 | 34-44,49-158 |
| VideoConstrainer.js | 2.06 | 0 | 0 | 2.06 | 31-37,42-318 |
| index.js | 8.41 | 2.43 | 0 | 8.41 | 58-159,175-548 |
| webrtc.js | 1.97 | 0 | 0 | 1.99 | 49-1643 |
| src/utils/webrtc/analyzers | 62.55 | 67.98 | 54.09 | 62.16 | |
| AverageStatValue.js | 97.77 | 95 | 100 | 97.67 | 106 |
| CallAnalyzer.js | 7.4 | 0 | 0 | 7.4 | 37-59,65-93 |
| ParticipantAnalyzer.js | 1.43 | 0 | 0 | 1.43 | 46-68,73-299 |
| PeerConnectionAnalyzer.js | 92.22 | 83.6 | 89.28 | 92.14 | 190-213,244,264-281,294,501 |
| src/utils/webrtc/models | 35.02 | 17.59 | 20.68 | 35.02 | |
| CallParticipantCollection.js | 84.21 | 50 | 66.66 | 84.21 | 31-32,50 |
| CallParticipantModel.js | 62.37 | 34.61 | 38.46 | 62.37 | 141-224,229,257,271,274,339-344,353-389,398-438 |
| LocalCallParticipantModel.js | 17.46 | 3.03 | 23.07 | 17.46 | 40,49-160 |
| LocalMediaModel.js | 11.46 | 0 | 2.38 | 11.46 | 67-500 |
| src/utils/webrtc/shims | 2.1 | 4 | 0 | 2.1 | |
| MediaStream.js | 1.92 | 3.84 | 0 | 1.92 | 7-95 |
| MediaStreamTrack.js | 2.32 | 4.16 | 0 | 2.32 | 7-81 |
| src/utils/webrtc/simplewebrtc | 8.51 | 0 | 0 | 8.68 | |
| getscreenmedia.js | 0 | 0 | 0 | 0 | 14-81 |
| localmedia.js | 14.33 | 0 | 0 | 14.39 | ...,416-417,421-422,427-428,431-432,437,440,444,449-467,472-490,494,498,502,506-525,532 |
| peer.js | 5.32 | 0 | 0 | 5.53 | ...-673,677-685,689-691,710-724,728-747,772-871,875-883,894-924,931-945,950-954,959-961 |
| simplewebrtc.js | 7.89 | 0 | 0 | 7.89 | 15-211,230-239,244,248-252,256-261,267,271,275,279-290 |
| webrtc.js | 13.95 | 0 | 0 | 13.95 | 16-94,102-105,110-111,117-118,124,130-132 |
| src/views | 1.14 | 0 | 0 | 1.23 | |
| --------------------------------------------------------------------- | --------- | ---------- | --------- | --------- | ------------------------------------------------------------------------------- |
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the coverage table for src/components, src/composables, src/router, src/services, src/store, src/stores, src/utils, and src/views, then inspect the repository's existing web test setup. Define a specific, achievable set of files to cover and record the resulting coverage status; completion should make the selected files fully covered before the Vue 2.7 to Vue 3 migration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend, testing-qa
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100