Skip to main content

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
--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

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.properties or 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_provider and selenium_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.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sel2pw-scan 0.3.1
File Size Uploaded
sel2pw_scan-0.3.1.tar.gz 22.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sel2pw-scan 0.3.1
File Interpreter ABI Platform
sel2pw_scan-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 41.4 kB

Release files / sel2pw_scan-0.3.1.tar.gz

Download URL sel2pw_scan-0.3.1.tar.gz
Size 22.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f4b6f5c386426d14f3c2acdce52e136ab9ba94df19bfee7ed28e727b9885dc97
BLAKE2b-256 checksum
How to use checksums
6ee564adcd4a2f1c1f069467af9c403222e4a3d2d4c46cdf38ba469292772665
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

Release files / sel2pw_scan-0.3.1-py3-none-any.whl

Download URL sel2pw_scan-0.3.1-py3-none-any.whl
Size 18.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
68dbb3fc1cc81a535e5edff8bc6c305eaaa94212e5a0f1e08f2e61f61741b425
BLAKE2b-256 checksum
How to use checksums
d6e2f68c19997d63dda4aa63119cafe9a77889087a68663ad10b9a15fc48d1dc
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

Release history Release notifications | RSS feed

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page