Skip to content

New Feature: Implement page.record() video-stream screen recording (upstream #15387) - #3571

Merged
kblok merged 7 commits into
masterfrom
cursor/implement-upstream-15387-c423
Sep 5, 2026
Merged

kblok merged 7 commits into
masterfrom
cursor/implement-upstream-15387-c423

Conversation

@kblok

@kblok kblok commented Sep 3, 2026

Copy link
Copy Markdown
Member

Summary

Ports puppeteer/puppeteer#15387: page.record() video-stream screen recording (CDP + BiDi), writable destinations, and matching tests/expectations.

Notes

Part of the puppeteer-core-v25.10.0 port.

Open in Web Open in Cursor 

@cursor

cursor Bot commented Sep 4, 2026

Copy link
Copy Markdown

CI blocker — please cancel superseded run

This PR’s HEAD is 0eeb8c9, but an older run is still consuming runners:

gh run cancel returns 403 for this agent. Cancelling that run would free runners for the current HEAD checks on this and sibling 25.10.0 PRs.

@kblok
kblok marked this pull request as ready for review September 4, 2026 01:36
cursoragent and others added 6 commits September 4, 2026 03:33
…pstream #15387)

Port upstream Puppeteer PR #15387 adding video-stream-based screen recording
via Page.record() / RecordAsync(), replacing the ffmpeg-based screencast flow
for new recordings.

- Add RecordOptions, ScreenRecording, IWritableDestination APIs
- Implement CdpScreenRecording (Page.startScreenRecording + IO.read stream)
- Implement BidiScreenRecording (browsingContext.start/stopScreencast)
- Deprecate ScreencastAsync in favor of RecordAsync
- Port page.test record integration test and ScreenRecording validation test
- Sync upstream test expectations for Page.record on Chrome/Firefox

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

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
…ge.record()

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
Upstream #15387 marks Page.record as FAIL on all platforms for Firefox.
The linux-only narrowing belongs to upstream #15408.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
Match upstream WritableDestination.end() so FileStreams opened for
RecordOptions.Path release their handles after StopAsync. Also add
workflow concurrency to cancel superseded runs on this PR.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
@cursor
cursor Bot force-pushed the cursor/implement-upstream-15387-c423 branch from 26179cf to e43fa38 Compare September 4, 2026 03:33
@cursor
cursor Bot deleted the cursor/implement-upstream-15387-c423 branch September 4, 2026 03:36
@cursor
cursor Bot restored the cursor/implement-upstream-15387-c423 branch September 4, 2026 03:36
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Watch #3571 FF-headful, #3576 new FF jobs after hang cancel,
and #3580 attempt-N+1 FF/chrome after successful run-cancel+rerun.
Skip #3575/#3577 (fully green). Keep run-cancel (not job-cancel).

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
Match current upstream TestExpectations after #15408: Firefox
Page.record remains expected FAIL on linux only (Bug 2066782).
The Chrome FAIL entry is unchanged.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Unstack from #3571 so this PR only contains the Firefox version bump.
Page.record TestExpectations (including the linux-only Firefox FAIL
narrow from upstream #15408) belong on #3571 to match current upstream.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Prior helper re-ran the old #3571 build which concurrency-cancelled the
fc0d8e3 HEAD build. Cancel old run without rerun, full-rerun new HEAD,
and keep hang-watch only on #3576/#3580 (run-cancel, not job-cancel).

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Ubuntu helper queued 6m+ behind open-PR matrix; old #3571 FF still
stealing runners. windows-latest + bash + python for faster pickup.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Watch #3571 FF-headless/headful for Test≥120m run-cancel + idle-rerun
of chrome-headful flake. Also watch #3576 attempt3 FF-headless for hang.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Watch job 101057206221 / run 33869194949; cancel+rerun at Test>=120m.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Hang helper cancelled FF-hl at ~120m and rerun-failed; attempt4 FF-hl requeued.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Watch job 101098115593 / run 33869194949; cancel+rerun at Test>=120m.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Hang helper cancelled FF-hl at ~120m and rerun-failed; attempt5 FF-hl requeued.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
Poll until Test ≥120m then cancel run + rerun-failed; exits clean if job finishes.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
cursor Bot pushed a commit that referenced this pull request Sep 4, 2026
All open release PRs (#3571/#3576/#3577) have gh pr checks exit 0.

Co-authored-by: Darío Kondratiuk <dariokondratiuk@gmail.com>
@kblok
kblok merged commit cf54a29 into master Sep 5, 2026
46 of 61 checks passed
@kblok
kblok deleted the cursor/implement-upstream-15387-c423 branch September 5, 2026 18:07
kblok added a commit that referenced this pull request Sep 5, 2026
Unstack from #3571 so this PR only contains the Firefox version bump.
Page.record TestExpectations (including the linux-only Firefox FAIL
narrow from upstream #15408) belong on #3571 to match current upstream.

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

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

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

## 25.10.0

## What's Changed
* fix: set frame content without document.write (#​15358) by @​kblok in
hardkoded/puppeteer-sharp#3565
* feat: roll to Firefox 154.0 (#​15361) by @​kblok in
hardkoded/puppeteer-sharp#3566
* New Feature: Support shadow roots in MutationPoller (#​15292) by
@​kblok in hardkoded/puppeteer-sharp#3564
* fix: roll to Chrome 152.0.7977.54 (#​15363) by @​kblok in
hardkoded/puppeteer-sharp#3567
* chore: bump version to 25.9.0 by @​kblok in
hardkoded/puppeteer-sharp#3568
* New Feature: Support canceling WebMCP tool execution (#​15365) by
@​kblok in hardkoded/puppeteer-sharp#3563
* Update README.md - update downloads badge by @​Meir017 in
hardkoded/puppeteer-sharp#3569
* Fix: Roll to Chrome 152.0.7977.64 (upstream #​15395) by @​kblok in
hardkoded/puppeteer-sharp#3574
* Fix: Do not miss the first screencast frame while startScreencast is
in flight (upstream #​15389) by @​kblok in
hardkoded/puppeteer-sharp#3578
* Fix: Roll to Firefox 154.0.1 (upstream #​15397) by @​kblok in
hardkoded/puppeteer-sharp#3573
* Fix: Detect a websocket connection that died without a close (upstream
#​15406) by @​kblok in
hardkoded/puppeteer-sharp#3570
* Fix: Distinguish an unwritable userDataDir from a running browser
(upstream #​15405) by @​kblok in
hardkoded/puppeteer-sharp#3572
* Fix: Roll to Chrome 152.0.7977.75 (upstream #​15409) by @​kblok in
hardkoded/puppeteer-sharp#3575
* chore: add newer iPhone KnownDevices (upstream #​15400) by @​kblok in
hardkoded/puppeteer-sharp#3580
* chore: bump version to 25.10.0 by @​kblok in
hardkoded/puppeteer-sharp#3576
* New Feature: Implement page.record() video-stream screen recording
(upstream #​15387) by @​kblok in
hardkoded/puppeteer-sharp#3571
* New Feature: Roll to Firefox 155.0 (upstream #​15408) by @​kblok in
hardkoded/puppeteer-sharp#3577


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

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

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=PuppeteerSharp&package-manager=nuget&previous-version=25.8.0&new-version=25.10.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