tamash-playwright
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.qtpsudhakarproducts</groupId>
<artifactId>tamash-playwright</artifactId>
<version>0.2.0-beta.1</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.qtpsudhakarproducts</groupId>
<artifactId>tamash-playwright</artifactId>
<version>0.2.0-beta.1</version>
<packaging>jar</packaging>
<name>tamash-playwright</name>
<description>Plug-and-play self-healing for Playwright Java (JUnit 5, TestNG, or Cucumber): automatically recovers broken selectors using an AI model (Ollama, OpenAI, Anthropic, Gemini, or a Claude/GitHub Copilot subscription) or a rule-based no-AI provider.</description>
<url>https://github.com/qtpsudhakarproducts/tamash-playwright-java</url>
<!-- Free to use, including commercially; not open source (no copying/modifying/redistributing
without permission). See the LICENSE file at the project root for the full terms. -->
<licenses>
<license>
<name>Custom (free to use, not open source) — see LICENSE file</name>
<url>https://github.com/qtpsudhakarproducts/tamash-playwright-java/blob/main/LICENSE</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>qtpsudhakar</id>
<name>Sudhakar Kakunuri</name>
<email>sudhakar@qtpsudhakar.com</email>
<organization>QtpSudhakar / VibeTestQ</organization>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/qtpsudhakarproducts/tamash-playwright-java.git</connection>
<developerConnection>scm:git:https://github.com/qtpsudhakarproducts/tamash-playwright-java.git</developerConnection>
<url>https://github.com/qtpsudhakarproducts/tamash-playwright-java</url>
</scm>
<properties>
<maven.compiler.source>25</maven.compiler.source>
<maven.compiler.target>25</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<playwright.version>1.62.0</playwright.version>
<junit.version>6.1.3</junit.version>
<json.version>20250517</json.version>
<dotenv.version>3.2.0</dotenv.version>
<!-- Default main class for `mvn exec:java`; override per-run with
-Dexec.mainClass=com.microsoft.playwright.CLI (e.g. to install browsers). -->
<exec.mainClass>io.github.qtpsudhakarproducts.tamash.cli.Main</exec.mainClass>
</properties>
<dependencies>
<dependency>
<groupId>com.microsoft.playwright</groupId>
<artifactId>playwright</artifactId>
<version>${playwright.version}</version>
</dependency>
<!-- Request/response bodies for the OpenAI/Ollama/Gemini/Anthropic HTTP providers. Chosen
over Jackson/Gson for zero further transitive dependencies and a simple imperative API
well suited to hand-built JSON, rather than relying on Playwright's own internal Jackson
dependency (which is an implementation detail we shouldn't couple to). -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>${json.version}</version>
</dependency>
<!-- Loads .env the same way the TS/Python ports do, from the working directory. -->
<dependency>
<groupId>io.github.cdimascio</groupId>
<artifactId>dotenv-java</artifactId>
<version>${dotenv.version}</version>
</dependency>
<!-- Official Anthropic SDK — backs HEALER_PROVIDER=anthropic (API key) and
HEALER_PROVIDER=claude-subscription (a Claude Code OAuth token + the oauth beta header).
Matches the TS package's use of @anthropic-ai/sdk. Pulls okhttp + kotlin-stdlib. -->
<dependency>
<groupId>com.anthropic</groupId>
<artifactId>anthropic-java</artifactId>
<version>2.59.0</version>
</dependency>
<!-- Official GitHub Copilot SDK — backs HEALER_PROVIDER=copilot-subscription. Optional
(mirrors the TS package's optional peer dependency on @github/copilot-sdk): it's a preview
with a large surface and needs the `copilot` CLI on PATH anyway, so consumers who want
this provider add it themselves. CopilotSubscriptionProvider degrades gracefully
(NoClassDefFoundError -> a clear warning) when it's absent. -->
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.13-preview.2</version>
<optional>true</optional>
</dependency>
<!-- Default (compile) scope, not test scope: TamashPlaywrightExtension in src/main/java
implements JUnit 5's extension interfaces, so consumers need this API available even
though they're not running *our* tests — only the interfaces are needed here, not the
engine. -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- Needed to actually run this project's own tests (SampleTest); consumers bring their own
junit-jupiter-engine via their normal JUnit 5 test setup. -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- provided (not compile): the auto-registered TestExecutionListener in src/main
(io.github.qtpsudhakarproducts.tamash.report.TamashReportListener) needs the launcher API
to compile against, but every test runner (Surefire, Gradle, an IDE) already puts a
platform launcher on the classpath at test time, so this must not be forced on consumers
as a transitive runtime dependency. -->
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>${junit.version}</version>
<scope>provided</scope>
</dependency>
<!-- provided: the TestNG integration (io.github.qtpsudhakarproducts.tamash.testng) compiles
against these; a TestNG consumer already has TestNG, a JUnit/Cucumber consumer never
loads those classes. -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.11.0</version>
<scope>provided</scope>
</dependency>
<!-- provided: same, for the Cucumber integration (io.github.qtpsudhakarproducts.tamash.cucumber). -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.20.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.2</version>
</plugin>
<!-- Runs the doctor CLI: mvn exec:java -Dexec.args="doctor" -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<mainClass>${exec.mainClass}</mainClass>
</configuration>
</plugin>
<!-- Maven Central requires a -sources.jar and -javadoc.jar alongside the main artifact. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.4.0</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.12.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Maven Central requires every artifact (jar, sources, javadoc, pom) to be GPG-signed. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Publishes to Maven Central via the Sonatype Central Portal. Requires a <server> entry
named "central" in ~/.m2/settings.xml with a token generated from central.sonatype.com,
and a verified io.github.qtpsudhakarproducts namespace on that account. -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.11.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
</configuration>
</plugin>
</plugins>
</build>
</project>