Skip to content

Remove redundant overwrite and file access from ScreenRecorder (#15352) - #3560

Merged
kblok merged 2 commits into
masterfrom
cursor/implement-upstream-pr-15352-4c19
Aug 17, 2026
Merged

Remove redundant overwrite and file access from ScreenRecorder (#15352)#3560
kblok merged 2 commits into
masterfrom
cursor/implement-upstream-pr-15352-4c19

Conversation

@kblok

@kblok kblok commented Aug 17, 2026

Copy link
Copy Markdown
Member

Implements changes from puppeteer/puppeteer#15352 (puppeteer-core v25.8.0).

Upstream

File creation and overwrite policy move out of ScreenRecorder. The output stream is opened before ffmpeg starts. Redundant ffmpeg -y/-n flags and in-recorder mkdir/path handling are removed.

PuppeteerSharp

  • Page.ScreencastAsync creates the parent directory and opens the output file before constructing ScreenRecorder
  • overwrite: false uses FileMode.CreateNew (fails if the file exists)
  • ScreenRecorder only writes ffmpeg stdout (pipe:1) to the provided stream and disposes it on stop
  • Ported "should reject screencast when overwrite is false and file exists"

The symlink screencast test from this upstream PR needs SetFollowSymlinks from #15335 and is not included here.

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 17, 2026 12:31
Open the screencast output file in Page.ScreencastAsync before starting
ffmpeg so overwrite policy is applied at file-create time (FileMode.Create
vs CreateNew) rather than via unused ffmpeg -y/-n flags.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
@kblok
kblok marked this pull request as ready for review August 17, 2026 12:41
@cursor

cursor Bot commented Aug 17, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@kblok
kblok merged commit 7891030 into master Aug 17, 2026
17 checks passed
@kblok
kblok deleted the cursor/implement-upstream-pr-15352-4c19 branch August 17, 2026 17:23
cursor Bot pushed a commit that referenced this pull request Aug 17, 2026
Page.ScreencastAsync already opens the output stream via AsyncFileHelper
before constructing ScreenRecorder, so symlink and overwrite checks happen
there. Re-opening the path in ScreenRecorder would double-open the file.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
kblok added a commit that referenced this pull request Aug 17, 2026
* New Feature: Support FollowSymlinks option (#15335)

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>

* Add followSymlinks screencast symlink rejection test from #15352

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>

* Fix Linux symlink detection and screencast followSymlinks errors

File.GetAttributes follows symlinks on Unix, so ReparsePoint was never
set and reject-symlink tests could no-op. Detect links with
ResolveLinkTarget (and readlink on netstandard2.0).

Open the screencast output file before launching ffmpeg so symlink
rejection is thrown even when ffmpeg is not installed in CI.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>

* Remove redundant ScreenRecorder file open after rebase onto #3560

Page.ScreencastAsync already opens the output stream via AsyncFileHelper
before constructing ScreenRecorder, so symlink and overwrite checks happen
there. Re-opening the path in ScreenRecorder would double-open the file.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
sondresjolyst pushed a commit to sondresjolyst/garge-api that referenced this pull request Aug 30, 2026
Updated [PuppeteerSharp](https://github.com/hardkoded/puppeteer-sharp)
from 25.7.0 to 25.8.0.

<details>
<summary>Release notes</summary>

_Sourced from [PuppeteerSharp's
releases](https://github.com/hardkoded/puppeteer-sharp/releases)._

## 25.8.0

## What's Changed
* chore: bump version to 25.8.0 by @​kblok in
hardkoded/puppeteer-sharp#3561
* Fix: launch browsers in detached mode on Windows to fix flakiness
(#​15339) by @​kblok in
hardkoded/puppeteer-sharp#3559
* Fix: computeSystemExecutablePath support validatePath (#​15340) by
@​kblok in hardkoded/puppeteer-sharp#3557
* Remove redundant overwrite and file access from ScreenRecorder
(#​15352) by @​kblok in
hardkoded/puppeteer-sharp#3560
* New Feature: Support FollowSymlinks option (#​15335) by @​kblok in
hardkoded/puppeteer-sharp#3558


**Full Changelog**:
hardkoded/puppeteer-sharp@v25.7.0...v25.8.0

Commits viewable in [compare
view](hardkoded/puppeteer-sharp@v25.7.0...v25.8.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=PuppeteerSharp&package-manager=nuget&previous-version=25.7.0&new-version=25.8.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

2 participants