...
May contain browser-specific code paths
how to use playwright libraries
Playwright is primarily designed for web automation and testing, but it can be used in creative ways to build various record and playback applications. Here's a brief overview of how to use Playwright, followed by some ideas for record and playback applications.
Desktop App for record and playback user interaction for web apps.
https://github.com/elastic/synthetics-recorder/tree/main
...
Above recorder is designed by elastic search team of their particular use case.
Note that the above recorder is in a Tech Preview phase at the moment, and not supported.
The idea is we can look into their source code and we can build some thing similar like mabl.
Playwright-CRX ( chrome Extension ).
https://github.com/ruifigueira/playwright-crx
This package contains the Chrome Extensions flavor of the Playwright library.
...
Existing chrome recorder
Using existing recorder we can generate playwright steps using playwright locator generator code.
below are some files which are responsible for selector generation
Implemented in files like:
packages\playwright-core\src\server\injected\consoleApi.ts
packages\playwright-core\src\server\injected\recorder\recorder.ts
packages\playwright-core\src\server\injected\selectorGenerator.ts
packages\playwright-core\src\server\injected\injectedScript.ts
It's not an easy job. A deep dive is necessary to fully understand their locator generation engine
Here's a concise breakdown of the pros and cons for implementing a Playwright script recorder as a Chrome extension versus a desktop app:
Chrome Extension:
Pros:
Easy distribution through Chrome Web Store
Seamless integration with Chrome browser
Cross-platform compatibility (works on any OS that runs Chrome)
Automatic updates
Cons:
Limited access to system resources
Restricted to Chrome browser only
Potential performance limitations
Subject to Chrome's extension policies and restrictions
Desktop App:
Pros:
Full access to system resources
Can work with multiple browsers
More flexibility in design and functionality
Potentially better performance
Cons:
More complex distribution and installation process
Requires separate builds for different operating systems
Manual update process for users
May require additional security measures
Conclusion
While we can't use the full Playwright library directly in Chrome extensions due to its Node.js dependency, we've found a solution in Playwright CRX. This flavor of Playwright is specifically designed for Chrome extensions, allowing us to leverage much of Playwright's functionality in a browser-compatible format.
We're planning to use specific JavaScript files from Playwright CRX that generate locators and action code snippets. This approach gives us access to Playwright's powerful selector generation capabilities and automation features, tailored for use within Chrome extensions.