Package: paparazzi 0.0.0.9000

Garrick Aden-Buie

paparazzi: Scripted Demo Videos, Screenshots, and Tests for Web Pages

Script polished demo videos and screenshots of anything that runs in a web browser, including 'Shiny' apps, 'Quarto' documents, and live websites. A pipeable interface built on 'chromote' clicks, types, and waits the way a person would. While recording, a cursor glides between elements, text is typed one character at a time, and a camera zooms and pans to the action. Annotations, callouts, spotlights, captions, and redactions follow their elements as the page changes. Frame captures to an element or aspect ratio, emulate phones, dark mode, and other devices, and write MP4, WebM, or GIF files. Without a recording, the same scripts run at full speed as browser tests with auto-waiting actions and retrying expectations that work with 'testthat'.

Authors:Garrick Aden-Buie [aut, cre], W.Y. [cph]

paparazzi_0.0.0.9000.tar.gz
paparazzi_0.0.0.9000.zip(r-4.7-any)paparazzi_0.0.0.9000.zip(r-4.6-any)paparazzi_0.0.0.9000.zip(r-4.5-any)
paparazzi_0.0.0.9000.tgz(r-4.6-any)paparazzi_0.0.0.9000.tgz(r-4.5-any)
paparazzi_0.0.0.9000.tar.gz(r-4.7-any)paparazzi_0.0.0.9000.tar.gz(r-4.6-any)
paparazzi_0.0.0.9000.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION |NEWS
card.svg |card.png
paparazzi/json (API)

# Install 'paparazzi' in R:
install.packages('paparazzi', repos = c('https://posit-dev.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/posit-dev/paparazzi/issues

Pkgdown/docs site:https://posit-dev.github.io

On CRAN:

Conda:

browser-testingchromechromotequartoscreen-recordingshiny

4.90 score 3 stars 19 scripts 93 exports 26 dependencies

Last updated from:ab8fc677a3. Checks:9 OK. Indexed: yes.

TargetResultTimeFilesSyslog
linux-develOK203
source / vignettesOK246
linux-releaseOK221
macos-releaseOK219
macos-oldrelOK217
windows-develOK223
windows-releaseOK231
windows-oldrelOK214
wasm-releaseOK140

Exports:pz_act_blurpz_act_clickpz_act_dragpz_act_focuspz_act_hoverpz_act_presspz_act_scrollpz_act_select_textpz_act_typepz_annotatepz_annotate_calloutpz_annotate_captionpz_annotate_clearpz_annotate_redactpz_annotate_spotlightpz_camerapz_camera_resetpz_chromotepz_closepz_cursor_hidepz_cursor_leavepz_cursor_movepz_cursor_showpz_devicepz_examplepz_expect_attrpz_expect_checkedpz_expect_classpz_expect_countpz_expect_enabledpz_expect_existspz_expect_focusedpz_expect_hiddenpz_expect_in_viewportpz_expect_jspz_expect_stylepz_expect_textpz_expect_titlepz_expect_urlpz_expect_valuepz_expect_visiblepz_findpz_find_firstpz_find_lastpz_find_nthpz_find_poppz_find_resetpz_font_bunnypz_font_filepz_font_googlepz_framepz_get_attrpz_get_countpz_get_elementspz_get_htmlpz_get_rectpz_get_stylepz_get_textpz_get_titlepz_get_urlpz_get_valuepz_inspectpz_jspz_locpz_local_pagepz_nav_backpz_nav_forwardpz_nav_gotopz_nav_reloadpz_openpz_recordpz_record_holdpz_record_pausepz_record_resumepz_record_startpz_record_stoppz_screenshotpz_serve_quartopz_serve_shinypz_serve_staticpz_set_filespz_set_shiny_inputpz_set_valuepz_stagepz_stage_annotatepz_stage_fontspz_stage_framepz_waitpz_wait_for_jspz_wait_for_navigationpz_wait_for_shiny_idlepz_wait_for_stablepz_with_page

Dependencies:AsioHeaderschromoteclicpp11curlfastmapgluejsonlitelaterlifecyclemagrittrotelpillarpkgconfigprocessxpromisespsR6Rcpprlangtibbleutf8vctrswebsocketwithrzip

Agent guide: Locators and scopes

Last update: 2026-10-01
Started: 2026-10-01

Agent guide: Pages and serving

Last update: 2026-10-01
Started: 2026-10-01

Agent guide: Recording and staging

Last update: 2026-10-01
Started: 2026-10-01

Agent guide: Screenshots and annotations

Last update: 2026-10-01
Started: 2026-10-01

Agent guide: Shiny

Last update: 2026-10-01
Started: 2026-10-01

Agent guide: Testing

Last update: 2026-10-01
Started: 2026-10-01

paparazzi for coding agents

Last update: 2026-10-01
Started: 2026-10-01

Readme and manuals

Help Manual

Help pageTopics
How actions workpaparazzi-actions
Blur the focused elementpz_act_blur
Click an elementpz_act_click
Drag an element to another element or by an offsetpz_act_drag
Focus an elementpz_act_focus
Hover the pointer over an elementpz_act_hover
Press key combinationspz_act_press
Scroll the page or an element into viewpz_act_scroll
Select text inside an elementpz_act_select_text
Type text into an elementpz_act_type
Mark page elementspz_annotate
Add text callouts to page elementspz_annotate_callout
Add a screen-space captionpz_annotate_caption
Clear page annotationspz_annotate_clear
Redact page elementspz_annotate_redact
Spotlight page elementspz_annotate_spotlight
Move the recording camerapz_camera
Reset the recording camerapz_camera_reset
Get the underlying ChromoteSessionpz_chromote
Close a pagepz_close
Hide the overlay cursorpz_cursor_hide
Move the overlay cursor out of the framepz_cursor_leave
Move the overlay cursor to an elementpz_cursor_move
Show the overlay cursorpz_cursor_show
Set the page's size and display settingspz_device
Paths to example pages and appspz_example
Expect attributespz_expect_attr
Expect elements to be checkedpz_expect_checked
Expect a classpz_expect_class
Expect a number of matching elementspz_expect_count
Expect elements to be enabledpz_expect_enabled
Expect at least one element to matchpz_expect_exists
Expect elements to be focusedpz_expect_focused
Expect elements to be in the viewportpz_expect_in_viewport
Expect a JavaScript predicate to holdpz_expect_js
Expect computed stylespz_expect_style
Expect element text contentpz_expect_text
Expect the page titlepz_expect_title
Expect the page URLpz_expect_url
Expect element valuespz_expect_value
Expect elements to be visiblepz_expect_hidden pz_expect_visible
Find elements and push them as the current scopepz_find
Find the first match and push it as the current scopepz_find_first
Find the last match and push it as the current scopepz_find_last
Find the nth match and push it as the current scopepz_find_nth
Pop the current scopepz_find_pop
Clear all scope, back to the rootpz_find_reset
Declare a font from Bunny Fontspz_font_bunny
Declare a font from a local filepz_font_file
Declare a font from Google Fontspz_font_google
Frame a capture regionpz_frame
Read an attribute of matching elementspz_get_attr
Count matching elementspz_get_count
Describe matching elementspz_get_elements
Read the HTML of matching elementspz_get_html
Read the geometry of matching elementspz_get_rect
Read computed styles of matching elementspz_get_style
Read the text of matching elementspz_get_text
Read the page titlepz_get_title
Read the page URLpz_get_url
Read the value of matching elementspz_get_value
Inspect the current page statepz_inspect
Evaluate JavaScript in the pagepz_js
Locate elements by CSS, with text, position, and scope qualifierspz_loc
Navigate the pagepz_nav_back pz_nav_forward pz_nav_goto pz_nav_reload
Open a pagepz_open
Record a block of codepz_record
Hold the current frame while recordingpz_record_hold
Pause and resume a recordingpz_record_pause pz_record_resume
Record a page interactionpz_record_start
Stop a recording and write the videopz_record_stop
Take a screenshotpz_screenshot
Serve a document or project with Quartopz_serve_quarto
Run a Shiny app in a background processpz_serve_shiny
Serve static files over HTTPpz_serve_static
Attach files to a file inputpz_set_files
Set a bound Shiny inputpz_set_shiny_input
Set the value of a form controlpz_set_value
Stage animation settingspz_stage
Stage annotation style defaultspz_stage_annotate
Stage fonts for annotations and captionspz_stage_fonts
Stage the default framingpz_stage_frame
Wait while pumping the page's event looppz_wait
Wait until a JavaScript condition holdspz_wait_for_js
Wait for a navigation to finishpz_wait_for_navigation
Wait until a Shiny page is idlepz_wait_for_shiny_idle
Wait until an element stops changingpz_wait_for_stable
Open a page that closes when a block or calling frame exitspz_local_page pz_with_page