Skip to content

test(recorder-core): add unit tests for isUserCancellationError and shouldRetryDisplayMediaWithoutPreferences - #2160

Open
gcoinstash-cmd wants to merge 4 commits into
CapSoftware:mainfrom
gcoinstash-cmd:test/recorder-error-retry-utilities
Open

test(recorder-core): add unit tests for isUserCancellationError and shouldRetryDisplayMediaWithoutPreferences#2160
gcoinstash-cmd wants to merge 4 commits into
CapSoftware:mainfrom
gcoinstash-cmd:test/recorder-error-retry-utilities

Conversation

@gcoinstash-cmd

@gcoinstash-cmd gcoinstash-cmd commented Aug 29, 2026

Copy link
Copy Markdown

Summary of Changes

  • Adds comprehensive unit test coverage for isUserCancellationError and shouldRetryDisplayMediaWithoutPreferences in @cap/recorder-core.
  • Verifies exact identification of NotAllowedError and AbortError for user cancellation handling.
  • Validates preference-related retryable error conditions (OverconstrainedError, NotSupportedError, InvalidAccessError, and TypeError).

Test Validation

  • pnpm biome check packages/recorder-core: all clean, 0 lint errors.
  • pnpm --filter=@cap/recorder-core test: 69/69 unit tests passed 100% green.

Greptile Summary

This PR expands unit coverage for Chrome-extension WebRTC conversion and recorder-core recording-mode and display-capture error utilities.

  • Adds valid and missing session-description tests.
  • Adds track-label recording-mode detection tests.
  • Adds cancellation and display-media retry classification tests.

Confidence Score: 4/5

The PR appears safe to merge, with one non-blocking test-accuracy issue in the WebRTC tests.

The added tests do not change production behavior and correctly exercise the recorder-core utilities, but the session-description test overstates its coverage by naming an untested undefined case.

Files Needing Attention: apps/chrome-extension/src/shared/webrtc.test.ts

Important Files Changed

Filename Overview
apps/chrome-extension/src/shared/webrtc.test.ts Adds conversion and missing-description coverage, but one test advertises an undefined case that it never executes.
packages/recorder-core/tests/recorder-utils.test.ts Adds focused tests that accurately exercise recording-mode label heuristics and all intended cancellation and retry classifications.
Prompt To Fix All With AI
### Issue 1
apps/chrome-extension/src/shared/webrtc.test.ts:68-73
**Test overstates undefined coverage**

This test says it covers both `null` and `undefined`, but its only assertion passes `null`, leaving the description inconsistent with the behavior actually exercised.

```suggestion
	it("throws error when session description is null", async () => {
		const { toSessionDescriptionInit } = await import("./webrtc");
		expect(() => toSessionDescriptionInit(null)).toThrow(
			"Missing session description",
		);
	});
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "test(recorder-core): add unit tests for ..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

@superagent-security

Copy link
Copy Markdown

Manage your Superagent protection

Superagent has paused scans for this repository because this unlinked GitHub App installation has used all three included PR scans.

You have 0 of 3 included PR scans remaining.

Create a free account to continue protection, manage scan settings, review security history, and control which repositories are protected.

Comment on lines +68 to +73
it("throws error when session description is null or undefined", async () => {
const { toSessionDescriptionInit } = await import("./webrtc");
expect(() => toSessionDescriptionInit(null)).toThrow(
"Missing session description",
);
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Test overstates undefined coverage

This test says it covers both null and undefined, but its only assertion passes null, leaving the description inconsistent with the behavior actually exercised.

Suggested change
it("throws error when session description is null or undefined", async () => {
const { toSessionDescriptionInit } = await import("./webrtc");
expect(() => toSessionDescriptionInit(null)).toThrow(
"Missing session description",
);
});
it("throws error when session description is null", async () => {
const { toSessionDescriptionInit } = await import("./webrtc");
expect(() => toSessionDescriptionInit(null)).toThrow(
"Missing session description",
);
});
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/chrome-extension/src/shared/webrtc.test.ts
Line: 68-73

Comment:
**Test overstates undefined coverage**

This test says it covers both `null` and `undefined`, but its only assertion passes `null`, leaving the description inconsistent with the behavior actually exercised.

```suggestion
	it("throws error when session description is null", async () => {
		const { toSessionDescriptionInit } = await import("./webrtc");
		expect(() => toSessionDescriptionInit(null)).toThrow(
			"Missing session description",
		);
	});
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant