Skip to content

feat(feedback): add screenshot upload fallback#22201

Open
AG0708 wants to merge 1 commit into
getsentry:developfrom
AG0708:feat/feedback-screenshot-upload-12938
Open

feat(feedback): add screenshot upload fallback#22201
AG0708 wants to merge 1 commit into
getsentry:developfrom
AG0708:feat/feedback-screenshot-upload-12938

Conversation

@AG0708

@AG0708 AG0708 commented Jul 12, 2026

Copy link
Copy Markdown

When screen capture is unavailable or rejected, User Feedback now keeps the dialog open and offers a native image-file upload instead.

The selected image follows the existing screenshot attachment path, preserving its filename and content type. Removing and reopening the screenshot input clears the prior file.

getDisplayMedia() failures were surfaced to the form, which removed the screenshot UI and gave users no way to attach an image. Permission-policy failures and user cancellation are indistinguishable at this boundary, so any capture rejection switches to the manual upload fallback.

Fixes #12938

Co-Authored-By: OpenAI Codex <codex@openai.com>
@AG0708 AG0708 marked this pull request as ready for review July 12, 2026 19:59
@AG0708 AG0708 requested a review from a team as a code owner July 12, 2026 19:59
@AG0708 AG0708 requested review from Lms24, logaretm and mydea and removed request for a team July 12, 2026 19:59

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 5c1d839. Configure here.

}

if (captureFailed) {
return <ScreenshotFallback options={options} onFileSelected={onFileSelected} />;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Fallback styles never injected

Low Severity

ScreenshotFallback uses screenshot-fallback classes defined in createScreenshotInputStyles, but that stylesheet is only injected inside the successful ScreenshotEditor path. On capture failure the fallback renders in the shadow DOM without those styles, so padding, layout, and color: var(--foreground) never apply.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 5c1d839. Configure here.


const feedbackRequestPromise = page.waitForResponse(response => {
return response.url().includes('/envelope/');
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Flaky envelope wait in test

Medium Severity

This test waits for any /envelope/ response instead of filtering for a feedback envelope. With default browserSessionIntegration, a session can resolve the wait before feedback is submitted, so attachment assertions become flaky. Sibling feedback suites already use getEnvelopeType(req) === 'feedback'. Flagged because of the Testing Conventions flake rule in the review guidelines.

Fix in Cursor Fix in Web

Triggered by project rule: PR Review Guidelines for Cursor Bot

Reviewed by Cursor Bugbot for commit 5c1d839. Configure here.

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.

Allow manual screenshot upload in User Feedback widget

1 participant