Recordation
A browser extension that records user interactions and exports them to executable browser automation (Python / Chrome Extension). Created by DraxonV1.
Captures user actions across Chromium browsers (mobile and desktop) into standardized .rec files, then compiles them into TrueDriver Python scripts (with automatic system Chrome binary discovery) or standalone Chrome extensions for direct replay.
Features
- In-Page Floating HUD: Draggable overlay with step counter, recording state, pause/resume, and direct
.recexport. - Multi-Strategy Selector Engine: Generates resilient selector cascades per element:
- Form attributes (
name,type,placeholder) - Accessibility attributes (
aria-label,role) - Test identifiers (
data-testid,data-cy,data-qa) - Normalized text content for buttons, links, and dropdown options
- Hierarchical CSS selectors and XPath expressions
- Form attributes (
- Dynamic ID Filtering: Automatically rejects transient framework identifiers (e.g. React
useId,uid_*,_r_*). - Target Exporters:
- TrueDriver (
export-py): Generates async Python scripts using TrueDriver with automated system Chrome binary resolution (find_system_chrome()). - Standalone Extension (
export-ext): Compiles the recording into a standalone Manifest V3 extension ready for unpackaged loading and replay. - Playwright (
export-playwright): Generates standard sync or async Playwright scripts.
- TrueDriver (
- Trace Optimizer (
optimize): Merges consecutive input sequences, removes rapid duplicate clicks within configurable thresholds, and normalizes delay intervals.
Interface Preview
Architecture
recordation/
├── extension/ # Chrome Extension (Manifest V3)
│ ├── manifest.json # Extension manifest
│ ├── background.js # Service worker & navigation listener
│ ├── content/
│ │ ├── selector-generator.js # Selector generation engine
│ │ ├── floating-hud.js # Draggable HUD component
│ │ └── recorder.js # Capture-phase event dispatcher
│ ├── popup/ # Extension management interface
│ └── icons/ # Application icons
├── python/
│ └── recordation/
│ ├── models.py # Pydantic schemas for .rec specification
│ ├── optimizer.py # Trace deduplication and normalization heuristics
│ ├── cli.py # CLI entry points
│ └── exporters/
│ ├── truedriver_exporter.py # TrueDriver compiler
│ ├── extension_exporter.py # Standalone extension compiler
│ └── playwright_exporter.py # Playwright compiler
├── examples/ # Reference recording traces
├── pyproject.toml # Build specification & dependencies
└── recordation-extension.zip # Packaged extension archive
Quickstart
1. Extension Installation
- Download
recordation-extension.zipor clone the repository. - Navigate to
chrome://extensionsin any Chromium browser. - Enable Developer mode.
- Select Load unpacked and choose the
extension/directory (or supply the ZIP package on supported mobile browsers).
2. Recording User Interactions
- Navigate to the target web application.
- Open the Recordation extension popup and click Start Recording.
- The popup closes, and the on-screen HUD appears.
- Execute interactions (clicks, keyboard input, selections, navigations).
- Click Save .rec on the HUD or Stop & Save in the popup to download the recording file.
CLI Reference
Installation
git clone https://github.com/DraxonV1/Recordation.git
cd Recordation
pip install -e .
Verify installation:
recordation --version
Commands
Inspect Recording Metadata
recordation info flow.rec
Enumerate Recorded Steps
recordation list flow.rec
Compile to TrueDriver (System Chrome)
Generates an automation script that resolves the local Chrome executable:
recordation export-py flow.rec -o automation.py
# Execute automation
python automation.py
Compile to Standalone Extension
Generates an unpacked Chrome Extension directory configured to replay the recorded flow:
recordation export-ext flow.rec -o ./runner_extension
To execute:
- Load
./runner_extensionvia Extensions -> Load unpacked. - Open the target domain and click Run Automation in the runner popup.
Compile to Playwright
recordation export-playwright flow.rec -o playwright_script.py
Optimize Recording Trace
recordation optimize flow.rec -o optimized.rec
Format Specification (.rec)
Recordation traces follow a strict JSON schema:
{
"version": "1.0.0",
"format": "recordation.rec",
"metadata": {
"title": "Registration Flow",
"createdAt": "2026-09-24T12:00:00Z",
"viewport": { "width": 412, "height": 915 },
"startUrl": "https://example.com/signup"
},
"steps": [
{
"id": "step_1",
"type": "navigate",
"url": "https://example.com/signup",
"timestamp": 1774430400000,
"delayMs": 0
},
{
"id": "step_2",
"type": "input",
"value": "user@example.com",
"target": {
"tag": "INPUT",
"selectors": {
"name": "email",
"ariaLabel": "Email Address",
"css": "input[name='email']",
"xpath": "//input[@name='email']"
}
},
"timestamp": 1774430401500,
"delayMs": 1500
}
]
}
Testing
Execute the test suite using pytest:
pytest python/tests/test_recordation.py -v
Author
Created by DraxonV1.
License
Distributed under the MIT License. See LICENSE for details.
Metadata
Release files for recordation 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| recordation-1.0.2.tar.gz | 19.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| recordation-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.2 kB
Release files / recordation-1.0.2.tar.gz
| Download URL | recordation-1.0.2.tar.gz |
|---|---|
| Size | 19.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fd5c929da4c48917bc26389ba122e82ed80dcace996ddcc5bc191b83827c65d
|
|
BLAKE2b-256 checksum How to use checksums |
23b4797a90efcb89832e744bb665244e9b083a893f200efe3db95fbf508ffd64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / recordation-1.0.2-py3-none-any.whl
| Download URL | recordation-1.0.2-py3-none-any.whl |
|---|---|
| Size | 19.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
26a9b963b0ffde6793920759255838f4951b2d17e8a4513aed6aebcd5ae1878c
|
|
BLAKE2b-256 checksum How to use checksums |
95a2a8d3a00d85e4c7a2326db77387493720e9400196143c0c548043b5c58f27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency log