sel2pw-scan
Offline inventory of a Selenium Java test project, for assessing a migration to Python Playwright.
sel2pw-scan reads your .java files and build files and writes a report: which test framework you use,
how many tests, page objects and helper classes you have, and how often your code uses Selenium features
that need deliberate work in a migration (fixed sleeps, frames, alerts, JavaScript calls, data providers and
so on).
It is a scanner only. It does not convert or change any code, uses no AI model and makes no network calls.
Install
Requires Python 3.10 or newer.
pip install sel2pw-scan
Use
sel2pw-scan path/to/selenium-project --out inventory.md
| Option | Effect |
|---|---|
--out FILE |
Write the report to a file instead of printing it |
--html FILE |
Write a styled, self-contained HTML report (Innominds branding, same content as --format md, plus a Playwright note per construct). Opens offline in any browser; combine with --out to save Markdown too |
--format md |
Default. Summary report, described below |
--format json |
Full detail for tooling, including locator values and annotation attributes |
--version |
Print the version |
python -m sel2pw_scan ... works the same way.
Use from an AI IDE (MCP server)
The package also installs sel2pw-scan-mcp, a Model Context Protocol
server, so an AI assistant in VS Code, Cursor, Claude Code, Windsurf or another MCP client can run the scan
for you. It talks to the IDE over stdio only: it opens no network port, makes no network calls and adds no
dependencies.
| Tool | Effect |
|---|---|
get_inventory_summary |
Counts only: frameworks, Selenium version, tests, page objects, Cucumber scenarios, constructs. No names |
get_inventory_report |
The Markdown report, the same as --format md |
write_inventory_report |
Saves the Markdown report to an .md file and returns the summary |
write_inventory_html_report |
Saves the styled HTML report to an .html file and returns the summary |
Each tool takes the absolute path of the project folder. The JSON report, which contains locator values, is not available through MCP.
Register the server with your IDE. If sel2pw-scan-mcp is not on your PATH (for example, it is installed
in a virtual environment), use the full path to the executable instead.
VS Code (.vscode/mcp.json):
{ "servers": { "sel2pw-scan": { "type": "stdio", "command": "sel2pw-scan-mcp" } } }
Cursor (.cursor/mcp.json), Windsurf and most other clients:
{ "mcpServers": { "sel2pw-scan": { "command": "sel2pw-scan-mcp" } } }
Claude Code:
claude mcp add sel2pw-scan -- sel2pw-scan-mcp
Then ask the assistant, for example: "Scan this Selenium project with sel2pw-scan and save inventory.md in the project folder."
The scanner itself still uses no AI model, but whatever a tool returns is passed to the AI model your IDE
uses, under that IDE's data policy. Use get_inventory_summary if the names in the full report should not
reach it.
What the report contains
The Markdown report (--format md) lists:
- the scanned folder path, detected frameworks (TestNG, JUnit 4, JUnit 5, Cucumber), Selenium version
(resolved from Maven properties,
gradle.propertiesor Gradle variables) and build files - counts of Java files, test classes, page objects, base and utility classes, and test methods, split into UI tests (code that reaches Selenium or Appium) and unit tests (code that does not), plus disabled ones
- for Cucumber projects: each feature file and scenario with its tags, how many test cases each Scenario Outline expands to, and the number of step definitions
- how often each of 27 Selenium constructs appears, such as
fixed_sleep,frames,alerts,javascript_execution,data_providerandselenium_grid - every test method as
ClassName#method, with its file, line, assertion count and constructs - every class with its role (test, step definitions, runner, page object, base/utility, enum, interface or other), parent class and the project classes it depends on
It does not contain test code, Gherkin step text, locator values, string literals or test data. It does contain names: classes, test methods, features and scenarios. Read it before sharing, and rename anything you consider sensitive.
The JSON report (--format json) adds locator values and annotation attributes, so treat it as internal.
Limits
The scan uses pattern matching, not a full Java parser, so counts can be slightly off for unusual code.
It finds JUnit and TestNG tests by annotations such as @Test, and Cucumber scenarios in .feature files
written with English Gherkin keywords. Kotlin and Groovy sources are not read.
License
Proprietary. Copyright (c) 2026 Innominds Software Private Limited. All rights reserved. See LICENSE for the terms of use.
Metadata
Release files for sel2pw-scan 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sel2pw_scan-0.4.1.tar.gz | 46.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sel2pw_scan-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 88.4 kB
Release files / sel2pw_scan-0.4.1.tar.gz
| Download URL | sel2pw_scan-0.4.1.tar.gz |
|---|---|
| Size | 46.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d21e38a5d61aeccd83188b17340c2840bdfb23f49f483423d15f9b2c39a85d6
|
|
BLAKE2b-256 checksum How to use checksums |
c10f5026bfc727ac3f59ce1d23ec4985bdcf34b267ea33ad653073a248ded38b
|
| 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 Oct 8, 2026.
Transparency logRelease files / sel2pw_scan-0.4.1-py3-none-any.whl
| Download URL | sel2pw_scan-0.4.1-py3-none-any.whl |
|---|---|
| Size | 41.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
59e91efdec07a58b9f8ddbb0ae2d89e0d79520849d8a305ad5c77ccc1cf8c3dd
|
|
BLAKE2b-256 checksum How to use checksums |
1f61062b7f2221d2f18949e1a1320d6c7b0f6139004d0faa8b635672060b5ab5
|
| 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 Oct 8, 2026.
Transparency log