Dramaturge.Tool
0.0.1
dotnet tool install --global Dramaturge.Tool --version 0.0.1
dotnet new tool-manifest
dotnet tool install --local Dramaturge.Tool --version 0.0.1
#tool dotnet:?package=Dramaturge.Tool&version=0.0.1
nuke :add-package Dramaturge.Tool --version 0.0.1
Dramaturge.Tool
The dramaturge command-line tool, which installs, lists, and removes the browsers and drivers that Dramaturge.Browsers keeps in its cache, and records what you do in a browser as C#. Installing is most useful in continuous integration: install the browsers while building a machine image or before the tests run, so that no test waits for a download.
It uses the same cache, download sources, and verification as the library, because it is the library: each release of the tool bundles the Dramaturge.Browsers of the same version.
Installation
dotnet tool install --global Dramaturge.Tool
Or, with .NET 10 or later, run it once without installing it:
dnx Dramaturge.Tool install chrome
The tool runs on .NET 8 and later.
Installing Browsers and Drivers
dramaturge install chrome chromedriver firefox@beta geckodriver
Each target is a name, optionally followed by @ and a channel, a milestone, or a version:
| Name | Channels | Also accepts |
|---|---|---|
chrome, chrome-headless-shell |
stable (the default), beta, dev, canary |
A milestone (chrome@131, the newest release of Chrome 131) or a version (chrome@131.0.6778.204) |
chromedriver |
stable, beta, dev, canary |
A milestone or version, of the Chrome it drives |
firefox |
stable, beta, dev (Developer Edition), nightly, esr |
A version (firefox@134.0) |
geckodriver |
None | Always its latest release |
msedgedriver |
stable, beta, dev, canary |
Always the version of the installed Edge of the channel |
Microsoft Edge and Safari are never downloaded: install Edge from Microsoft, and Safari comes with macOS. msedgedriver downloads the driver that matches the installed Edge.
The tool prints where each target is installed, and reports download progress on standard error. A target that is already cached is not downloaded again. Every target is checked before anything is downloaded, and a target that fails does not stop the others; the exit code is 1 if any failed.
--dry-run shows the version and URL each target resolves to, and whether it is already cached, without downloading anything:
dramaturge install --dry-run chrome@beta geckodriver
Listing and Removing
dramaturge list
dramaturge clear chrome@canary chromedriver@131
dramaturge clear
list shows each cached browser and driver, as name@version, with its channel, size, the date a channel or driver lookup last used it, and its directory. clear removes what its targets select (a channel, a milestone, a version, or everything of a name) or, with no targets, everything; --dry-run shows what it would remove. Drivers are shared by every channel, so a driver is selected by version, not channel.
Recording Code
dramaturge codegen https://example.com/ -o Recorded.cs
codegen opens a browser with a window and writes what you do in it as C#: a program, or, with --target, an xUnit, NUnit, MSTest, or TUnit test class. A toolbar in the page picks locators and adds assertions. Code Generation describes it.
The Cache
Every command takes --path to choose the cache directory. Otherwise, the tool uses the same directory as the library: DRAMATURGE_BROWSERS_PATH if it is set, or else the per-user cache directory. The library's other environment variables apply too, such as DRAMATURGE_DOWNLOAD_MANIFEST to download from a mirror. The Browser Setup guide describes them.
A test run can then use what the tool installed:
export DRAMATURGE_BROWSERS_PATH="$PWD/.browsers"
dramaturge install chrome chromedriver
export DRAMATURGE_SKIP_DOWNLOAD=1
dotnet test
With DRAMATURGE_SKIP_DOWNLOAD set, a test that needs a browser the tool did not install fails at once rather than downloading it.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.0.1 | 33 | 10/8/2026 |