Puppetry is a no-code/low-code end-to-end web testing tool built on top of Puppeteer and Jest, aimed at QA engineers, testers, and developers who want to record and manage browser tests through a UI instead of writing scripts — though the project is now officially deprecated and kept only as an example and a piece of its own history.
What it is
Puppetry is a test automation tool for end-to-end testing of web applications that wraps Puppeteer headless Chrome and the Jest test runner behind a graphical interface. Instead of authoring selector logic and assertions by hand, users pick browser methods and assertions from a predefined list with predefined settings and extensive inline tips, then compose those steps into runnable browser tests. The project is written in JavaScript and distributed under the MIT licence, with 888 stars, 127 forks, and 25 open issues on GitHub.
The concrete problem it solves is the gap between teams that need E2E coverage and the engineering effort required to write and maintain that coverage. Puppetry replaces hand-written Puppeteer scripts with a recorder and a BDD-style editor: a user records a user flow, declares element targets as pairs in the form variable = locator where the locator is either a CSS selector or an XPath expression, and organises the resulting work in a hierarchy of project, suite, test context, and test case. The recorded project can then be exported as a Jest/Puppeteer bundle that a continuous integration server runs in a CLI, so the codeless authoring step feeds a standard code-based pipeline rather than replacing it.
Key capabilities
- Built-in automation recorder captures a user flow and turns it into editable test steps.
- Element targets declared as
variable = locator pairs, with locators written as CSS selectors or XPath expressions.
- BDD-style test organisation across project, suite, test context, and test case levels.
- Test execution against Chromium, Chrome, Firefox, and Edge browsers.
- Export as a Jest/Puppeteer project bundle, ready to plug into a CI/CD pipeline.
- Export as a human-readable test specification that includes screenshots captured per test step.
- Staging, template variables, and expressions for configurable and reusable test scenarios, plus reusable snippets.
- Git version control integration and Allure test report support.
Who uses it and how
- QA engineers with no programming background can author and maintain E2E suites through the UI, which is the primary audience the README names.
- Development and testing teams export the project as a Jest/Puppeteer bundle and run it from a CI server rather than inside the editor.
- Teams covering distinct testing types the documentation calls out, including functional testing, testing of dynamic content, and visual regression work.
- Testers validating responsive web design, covered by a dedicated walkthrough in the project's video material.
- Users who prefer step-by-step navigation of a running test, through an interactive mode described as similar to Cypress.
Getting started
The README points to the hosted site at https://puppetry.app and to the project documentation, and tagged builds are published through GitHub Releases, with v3.2.6 as the latest download. The documentation covers export for CI at docs.puppetry.app, and getting-started guidance lives under the same docs domain.
How it compares
Puppetry is layered on two tools that are not its competitors but its foundation: Puppeteer supplies the headless Chrome control and Jest supplies the runner, and the export format is exactly that pairing. Its main overlap is with Playwright, which the deprecation notice states has evolved to cover almost everything Puppetry originally aimed to achieve, and does so better. Cypress is referenced only as the reference point for Puppetry's interactive step navigation, which is a single feature rather than a replacement claim.
When to use it — and when not to
Do not start new work on Puppetry. The maintainer, Dmitry Sheiko, has officially deprecated it, calling codeless end-to-end testing a technological dead end and pointing to Playwright for the capabilities it once targeted. Anyone who needs browser end-to-end coverage today should adopt Playwright, or generate tests through AI-assisted development by narrating the intended outcome, rather than operate a UI editor whose upstream direction has been abandoned. The repository remains useful as a reference implementation of a recorder-driven Puppeteer and Jest workflow and as an example of the codeless-testing approach, and the README gives no indication of resumed maintenance.
project readme (upstream, from github) — read inline
Puppetry
⚠️ Project Deprecated
After observing the market for many years since the last update, I’ve decided to officially deprecate Puppetry.
Over time, it became clear that Playwright has evolved to cover almost everything I originally aimed to achieve with this project — and they do it much better. The idea of codeless end-to-end testing, while exciting at the time, has proven to be a technological dead end.
Today, with the rise of AI-assisted development, it’s possible to create robust end-to-end tests simply by narrating what you want to achieve — something that goes far beyond the original Puppetry vision.
I’m keeping this repository available as an example and a part of the project’s history. Thank you to everyone who supported and used Puppetry over the years.
— Dmitry Sheiko

CODELESS END-TO-END AUTOMATED TESTING
Puppetry is a powerful, no-code/low-code test automation tool for end-to-end (E2E) testing of web applications. Built on top of Puppeteer, it provides a user-friendly UI for creating, managing, and running automated browser tests—without writing complex scripts. Designed for developers, QA engineers, and testers, Puppetry simplifies web automation while offering flexibility for advanced users.

Welcome Puppetry
Puppetry offers you an easy-to-use UI where you choose browser methods and assertions from a predefined list, with predefined settings, guided by extensive tips.
Namely you can do the following:
- record user flow
- declare element targets as pairs
variable = locator, where locator can be either CSS selector or Xpath.
- manage your test structure in BDD style (project, suite, test context, test case)
- manage page/element methods and assertions
- run the tests in Chromium/Chromium/Chrome/Firefox/Edge
- export the project as Jest/Puppeteer bundle ready to run in CLI (e.g. by a continuous integration server)
Key Features
Download
You can download latest installers for your platform from the releases page
Current only the following OS are supported:
- Windows 7 and greater (64 bit)
- Ubuntu 14.04 and greater (64 bit)
- MacOS X 10.10 (Yosemite) and greater (64 bit)
On Linux can be installed with Snapcraft:
sudo snap install puppetry
On Mac can be installed with Homebrew:
brew cask install puppetry
FAQ
Feedback
Contributing
- get acquainted with guides
- examine the Backlog, suggest new features
- look into existing Issues, come up with a fix (
master branch)
- implement new features (
dev branch)
- check Developer Guide
Please adhere the coding style. We have one based on jQuery's JavaScript Style Guide. You can find the validation rules in .eslintrc
and lint the code by running npm run lint
Thanks
A special thanks to
Monika Rao,
vteixeira19,
Gernot Messow,
Carlos Mantilla,
kkmuffme,
Ravindra Jadhav
for the ideas and support
Credits
License
MIT