diff --git a/.github/workflows/java-playwright-nightly.yml b/.github/workflows/java-playwright-nightly.yml
index ad605315795..3144c62ea28 100644
--- a/.github/workflows/java-playwright-nightly.yml
+++ b/.github/workflows/java-playwright-nightly.yml
@@ -9,12 +9,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# Nightly run of the Java Playwright suite. Runs the same scenarios as the PR
-# workflow today; expands in Phase 3 to include the external-mode matrix
-# (ES+OS), distributed reindex coordination, and crash-recovery scenarios.
-# Tracks EPIC #3731, satisfies tickets #3767 / #3792.
+# Nightly run of the UI integration suite (*UIIT.java) — lives inside
+# openmetadata-integration-tests under the `ui-it` Maven profile. Expands in
+# Phase 3 to include the external-mode matrix (ES + OS), distributed reindex
+# coordination, and crash-recovery scenarios. Tracks EPIC #3731 / tickets
+# #3767, #3792.
-name: Java Playwright (Nightly)
+name: UI Integration Tests (Nightly)
on:
schedule:
@@ -26,7 +27,7 @@ permissions:
checks: write
jobs:
- java-playwright-nightly:
+ ui-it-nightly:
runs-on: ubuntu-latest
timeout-minutes: 90
strategy:
@@ -76,14 +77,14 @@ jobs:
# consistent across actors.
run: echo "127.0.0.1 om-mock-idp" | sudo tee -a /etc/hosts
- - name: Build dependencies for Java Playwright module
+ - name: Build dependencies for integration-tests
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: mvn -DskipTests clean install -pl :openmetadata-java-playwright -am
+ run: mvn -DskipTests clean install -pl :openmetadata-integration-tests -am
- name: Install Playwright browsers
run: |
- mvn -pl :openmetadata-java-playwright dependency:build-classpath -Dmdep.outputFile=/tmp/cp.txt -q
+ mvn -pl :openmetadata-integration-tests dependency:build-classpath -Dmdep.outputFile=/tmp/cp.txt -q
java -cp "$(cat /tmp/cp.txt)" com.microsoft.playwright.CLI install --with-deps chromium
- name: Free build artifacts
@@ -93,17 +94,16 @@ jobs:
rm -rf openmetadata-shaded-deps/*/target
df -h /
- - name: Run Java Playwright scenarios (${{ matrix.searchEngine }})
+ - name: Run UI integration tests (${{ matrix.searchEngine }})
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- JPW_MODE: embedded
run: |
if [ "${{ matrix.searchEngine }}" = "elasticsearch" ]; then
- mvn verify -pl :openmetadata-java-playwright \
+ mvn verify -P ui-it -pl :openmetadata-integration-tests \
-DsearchType=elasticsearch \
-DsearchImage=docker.elastic.co/elasticsearch/elasticsearch:9.3.0
else
- mvn verify -pl :openmetadata-java-playwright
+ mvn verify -P ui-it -pl :openmetadata-integration-tests
fi
- name: Upload Playwright traces
@@ -111,7 +111,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: playwright-traces-${{ matrix.searchEngine }}-${{ github.run_id }}
- path: openmetadata-java-playwright/target/playwright-traces
+ path: openmetadata-integration-tests/target/playwright-traces
if-no-files-found: ignore
retention-days: 14
@@ -120,7 +120,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: failsafe-reports-${{ matrix.searchEngine }}-${{ github.run_id }}
- path: openmetadata-java-playwright/target/failsafe-reports
+ path: openmetadata-integration-tests/target/failsafe-reports
if-no-files-found: ignore
retention-days: 14
@@ -130,4 +130,4 @@ jobs:
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
fail_on_test_failures: true
- report_paths: 'openmetadata-java-playwright/target/failsafe-reports/TEST-*.xml'
+ report_paths: 'openmetadata-integration-tests/target/failsafe-reports/TEST-*.xml'
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/CONVENTIONS.md b/openmetadata-integration-tests/UI_TEST_CONVENTIONS.md
similarity index 100%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/CONVENTIONS.md
rename to openmetadata-integration-tests/UI_TEST_CONVENTIONS.md
diff --git a/openmetadata-integration-tests/pom.xml b/openmetadata-integration-tests/pom.xml
index d4538fc47f1..6754a69e82c 100644
--- a/openmetadata-integration-tests/pom.xml
+++ b/openmetadata-integration-tests/pom.xml
@@ -160,6 +160,13 @@
4.4.0
test
+
+
+ com.microsoft.playwright
+ playwright
+ 1.49.0
+ test
+
org.apache.jena
@@ -208,6 +215,9 @@
org/openmetadata/it/auth/**
org/openmetadata/it/util/**
org/openmetadata/it/factories/**
+ org/openmetadata/it/server/**
+ org/openmetadata/it/search/**
+ org/openmetadata/it/ui/**
org/openmetadata/it/tests/BaseEntityIT*
private_key.der
public_key.der
@@ -291,6 +301,7 @@
**/SystemResourceIT.java
**/VectorEmbeddingIntegrationIT.java
**/GlossaryOntologyExportIT.java
+ **/*UIIT.java
mysql
@@ -383,6 +394,7 @@
**/VectorEmbeddingIntegrationIT.java
**/PatchTableEmbeddingIT.java
**/GlossaryOntologyExportIT.java
+ **/*UIIT.java
postgres
@@ -477,6 +489,7 @@
**/VectorEmbeddingIntegrationIT.java
**/PatchTableEmbeddingIT.java
**/GlossaryOntologyExportIT.java
+ **/*UIIT.java
postgres
@@ -568,6 +581,7 @@
**/SystemResourceIT.java
**/VectorEmbeddingIntegrationIT.java
**/GlossaryOntologyExportIT.java
+ **/*UIIT.java
postgres
@@ -660,6 +674,7 @@
**/VectorEmbeddingIntegrationIT.java
**/PatchTableEmbeddingIT.java
**/GlossaryOntologyExportIT.java
+ **/*UIIT.java
mysql
@@ -750,6 +765,7 @@
**/SystemResourceIT.java
**/VectorEmbeddingIntegrationIT.java
**/GlossaryOntologyExportIT.java
+ **/*UIIT.java
mysql
@@ -894,6 +910,7 @@
**/SystemResourceIT.java
**/VectorEmbeddingIntegrationIT.java
**/GlossaryOntologyExportIT.java
+ **/*UIIT.java
true
@@ -923,5 +940,55 @@
+
+
+
+ ui-it
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ ${maven.failsafe.version}
+
+
+ ui-scenario-tests
+
+ integration-test
+ verify
+
+
+ 1
+ true
+ -Xmx4096m -XX:+UseG1GC
+
+ **/*UIIT.java
+
+
+ true
+
+ true
+ true
+ true
+ concurrent
+ same_thread
+ dynamic
+ 0.5
+
+ false
+ plain
+ true
+
+
+
+
+
+
+
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AppStateInjection.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AppStateInjection.java
similarity index 97%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AppStateInjection.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AppStateInjection.java
index 82e397f9902..283f9d6873f 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AppStateInjection.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AppStateInjection.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import com.microsoft.playwright.BrowserContext;
import java.util.Locale;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthAssumptions.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthAssumptions.java
similarity index 97%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthAssumptions.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthAssumptions.java
index 432e3cb23fb..2d7de159a43 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthAssumptions.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthAssumptions.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthBackend.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthBackend.java
similarity index 87%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthBackend.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthBackend.java
index 965da65212d..b5566110cce 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthBackend.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthBackend.java
@@ -1,10 +1,10 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import com.microsoft.playwright.BrowserContext;
import java.util.Map;
-import org.openmetadata.jpw.server.ServerHandle;
-import org.openmetadata.jpw.server.sso.MockOidcServer;
-import org.openmetadata.jpw.server.sso.SsoProfile;
+import org.openmetadata.it.server.ServerHandle;
+import org.openmetadata.it.server.sso.MockOidcServer;
+import org.openmetadata.it.server.sso.SsoProfile;
/**
* One auth backend = one way OM is configured to authenticate, plus how tokens are
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthBackends.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthBackends.java
similarity index 89%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthBackends.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthBackends.java
index c94c94f42f9..b5e4c6a07db 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthBackends.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthBackends.java
@@ -1,10 +1,10 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import java.util.Locale;
-import org.openmetadata.jpw.server.sso.ClientType;
-import org.openmetadata.jpw.server.sso.CustomOidcProfile;
-import org.openmetadata.jpw.server.sso.GoogleProfile;
-import org.openmetadata.jpw.server.sso.OktaProfile;
+import org.openmetadata.it.server.sso.ClientType;
+import org.openmetadata.it.server.sso.CustomOidcProfile;
+import org.openmetadata.it.server.sso.GoogleProfile;
+import org.openmetadata.it.server.sso.OktaProfile;
/**
* Resolves the JVM's active {@link AuthBackend} from the {@code jpw.auth} system property
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthSession.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthSession.java
similarity index 97%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthSession.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthSession.java
index 785c340a391..f5b254555cd 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/AuthSession.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/AuthSession.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/BasicJwtBackend.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/BasicJwtBackend.java
similarity index 91%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/BasicJwtBackend.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/BasicJwtBackend.java
index c5ba1db837c..9d00ded76e2 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/BasicJwtBackend.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/BasicJwtBackend.java
@@ -1,13 +1,13 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import com.microsoft.playwright.BrowserContext;
import java.time.Duration;
import java.time.Instant;
import java.util.Map;
import org.openmetadata.it.auth.JwtAuthProvider;
-import org.openmetadata.jpw.server.ServerHandle;
-import org.openmetadata.jpw.server.sso.MockOidcServer;
-import org.openmetadata.jpw.server.sso.SsoProfile;
+import org.openmetadata.it.server.ServerHandle;
+import org.openmetadata.it.server.sso.MockOidcServer;
+import org.openmetadata.it.server.sso.SsoProfile;
/**
* Default backend — OM runs with its built-in JWT auth and tests use admin tokens minted
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/NoPreloadAuth.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/NoPreloadAuth.java
similarity index 95%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/NoPreloadAuth.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/NoPreloadAuth.java
index 480cf817e07..266c00e4737 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/NoPreloadAuth.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/NoPreloadAuth.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/OidcBackend.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/OidcBackend.java
similarity index 96%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/OidcBackend.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/OidcBackend.java
index 5cfdab9fedd..13181391cfd 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/OidcBackend.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/OidcBackend.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import com.microsoft.playwright.BrowserContext;
import java.net.URI;
@@ -15,9 +15,9 @@ import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.openmetadata.jpw.server.ServerHandle;
-import org.openmetadata.jpw.server.sso.MockOidcServer;
-import org.openmetadata.jpw.server.sso.SsoProfile;
+import org.openmetadata.it.server.ServerHandle;
+import org.openmetadata.it.server.sso.MockOidcServer;
+import org.openmetadata.it.server.sso.SsoProfile;
/**
* Single OIDC backend — works for any {@link SsoProfile} (Google, Okta, custom OIDC) and
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/TokenRefresher.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/TokenRefresher.java
similarity index 95%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/TokenRefresher.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/TokenRefresher.java
index ac4cb1e7011..3afe70e0ca6 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/TokenRefresher.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/TokenRefresher.java
@@ -1,12 +1,12 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import java.time.Duration;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.openmetadata.it.util.SdkClients;
-import org.openmetadata.jpw.server.ServerHandle;
-import org.openmetadata.jpw.server.sso.MockOidcServer;
+import org.openmetadata.it.server.ServerHandle;
+import org.openmetadata.it.server.sso.MockOidcServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/TokenSet.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/TokenSet.java
similarity index 95%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/TokenSet.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/TokenSet.java
index f07af7a7ceb..fe0892d6b4e 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/auth/TokenSet.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/auth/TokenSet.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.auth;
+package org.openmetadata.it.auth;
import java.time.Duration;
import java.time.Instant;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/auth/signin/GoogleSsoSignInUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/auth/signin/GoogleSsoSignInUIIT.java
similarity index 81%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/auth/signin/GoogleSsoSignInUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/auth/signin/GoogleSsoSignInUIIT.java
index 73465b49618..0712ff3ed62 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/auth/signin/GoogleSsoSignInUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/auth/signin/GoogleSsoSignInUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.auth.signin;
+package org.openmetadata.it.scenarios.auth.signin;
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
@@ -6,12 +6,12 @@ import com.microsoft.playwright.Page;
import java.util.regex.Pattern;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import org.openmetadata.jpw.auth.AuthAssumptions;
-import org.openmetadata.jpw.auth.NoPreloadAuth;
-import org.openmetadata.jpw.ui.UiSession;
-import org.openmetadata.jpw.ui.UiSessionExtension;
-import org.openmetadata.jpw.ui.pages.MockIdpLoginPage;
-import org.openmetadata.jpw.ui.pages.SignInPage;
+import org.openmetadata.it.auth.AuthAssumptions;
+import org.openmetadata.it.auth.NoPreloadAuth;
+import org.openmetadata.it.ui.UiSession;
+import org.openmetadata.it.ui.UiSessionExtension;
+import org.openmetadata.it.ui.pages.MockIdpLoginPage;
+import org.openmetadata.it.ui.pages.SignInPage;
/**
* End-to-end sign-in flow under the Google SSO confidential-client backend: clicks the
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/loader/EntityLoaderSmokeUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/loader/EntityLoaderSmokeUIIT.java
similarity index 96%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/loader/EntityLoaderSmokeUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/loader/EntityLoaderSmokeUIIT.java
index 493258ffa89..03e065c0cd0 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/loader/EntityLoaderSmokeUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/loader/EntityLoaderSmokeUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.loader;
+package org.openmetadata.it.scenarios.loader;
import static org.assertj.core.api.Assertions.assertThat;
@@ -11,7 +11,7 @@ import org.openmetadata.it.factories.EntityLoadSummary;
import org.openmetadata.it.factories.EntityLoader;
import org.openmetadata.it.util.TestNamespace;
import org.openmetadata.it.util.TestNamespaceExtension;
-import org.openmetadata.jpw.util.UiTestServer;
+import org.openmetadata.it.util.UiTestServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/DistributedAutoTuneReindexUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/DistributedAutoTuneReindexUIIT.java
similarity index 94%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/DistributedAutoTuneReindexUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/DistributedAutoTuneReindexUIIT.java
index 63d68856879..b6ff15cd18f 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/DistributedAutoTuneReindexUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/DistributedAutoTuneReindexUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.search.reindex;
+package org.openmetadata.it.scenarios.search.reindex;
import static org.assertj.core.api.Assertions.assertThat;
@@ -18,13 +18,13 @@ import org.openmetadata.it.factories.EntityLoadSummary;
import org.openmetadata.it.factories.EntityLoader;
import org.openmetadata.it.util.TestNamespace;
import org.openmetadata.it.util.TestNamespaceExtension;
-import org.openmetadata.jpw.search.ReindexHelpers;
-import org.openmetadata.jpw.search.SearchQueryHelper;
-import org.openmetadata.jpw.search.SearchQueryHelper.SearchProbe;
-import org.openmetadata.jpw.server.ServerHandle;
-import org.openmetadata.jpw.ui.UiSession;
-import org.openmetadata.jpw.ui.UiSessionExtension;
-import org.openmetadata.jpw.ui.pages.SearchIndexAppPage;
+import org.openmetadata.it.search.ReindexHelpers;
+import org.openmetadata.it.search.SearchQueryHelper;
+import org.openmetadata.it.search.SearchQueryHelper.SearchProbe;
+import org.openmetadata.it.server.ServerHandle;
+import org.openmetadata.it.ui.UiSession;
+import org.openmetadata.it.ui.UiSessionExtension;
+import org.openmetadata.it.ui.pages.SearchIndexAppPage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/SearchAvailableDuringReindexUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/SearchAvailableDuringReindexUIIT.java
similarity index 94%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/SearchAvailableDuringReindexUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/SearchAvailableDuringReindexUIIT.java
index 43f916f151c..843cd058a76 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/SearchAvailableDuringReindexUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/SearchAvailableDuringReindexUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.search.reindex;
+package org.openmetadata.it.scenarios.search.reindex;
import static org.assertj.core.api.Assertions.assertThat;
@@ -19,14 +19,13 @@ import org.openmetadata.it.factories.EntityLoadSummary;
import org.openmetadata.it.factories.EntityLoader;
import org.openmetadata.it.util.TestNamespace;
import org.openmetadata.it.util.TestNamespaceExtension;
-import org.openmetadata.jpw.search.ReindexHelpers;
-import org.openmetadata.jpw.search.SearchQueryHelper;
-import org.openmetadata.jpw.search.SearchQueryHelper.SearchProbe;
-import org.openmetadata.jpw.server.ServerHandle;
-import org.openmetadata.jpw.ui.UiSession;
-import org.openmetadata.jpw.ui.UiSessionExtension;
-import org.openmetadata.jpw.ui.pages.SearchIndexAppPage;
-import org.openmetadata.jpw.util.UiTestServer;
+import org.openmetadata.it.search.ReindexHelpers;
+import org.openmetadata.it.search.SearchQueryHelper;
+import org.openmetadata.it.search.SearchQueryHelper.SearchProbe;
+import org.openmetadata.it.server.ServerHandle;
+import org.openmetadata.it.ui.UiSession;
+import org.openmetadata.it.ui.UiSessionExtension;
+import org.openmetadata.it.ui.pages.SearchIndexAppPage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/SimpleReindexTriggerUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/SimpleReindexTriggerUIIT.java
similarity index 93%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/SimpleReindexTriggerUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/SimpleReindexTriggerUIIT.java
index 4fe0d7e4686..0224ebd7407 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/search/reindex/SimpleReindexTriggerUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/search/reindex/SimpleReindexTriggerUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.search.reindex;
+package org.openmetadata.it.scenarios.search.reindex;
import java.time.Duration;
import java.util.Map;
@@ -12,11 +12,11 @@ import org.openmetadata.it.factories.EntityLoadSummary;
import org.openmetadata.it.factories.EntityLoader;
import org.openmetadata.it.util.TestNamespace;
import org.openmetadata.it.util.TestNamespaceExtension;
-import org.openmetadata.jpw.ui.UiSession;
-import org.openmetadata.jpw.ui.UiSessionExtension;
-import org.openmetadata.jpw.ui.pages.ExplorePage;
-import org.openmetadata.jpw.ui.pages.ExplorePage.Tab;
-import org.openmetadata.jpw.ui.pages.SearchIndexAppPage;
+import org.openmetadata.it.ui.UiSession;
+import org.openmetadata.it.ui.UiSessionExtension;
+import org.openmetadata.it.ui.pages.ExplorePage;
+import org.openmetadata.it.ui.pages.ExplorePage.Tab;
+import org.openmetadata.it.ui.pages.SearchIndexAppPage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/sso/GoogleSsoBootstrapUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/sso/GoogleSsoBootstrapUIIT.java
similarity index 88%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/sso/GoogleSsoBootstrapUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/sso/GoogleSsoBootstrapUIIT.java
index 314de8458e5..ed5c3ca07a1 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/sso/GoogleSsoBootstrapUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/sso/GoogleSsoBootstrapUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.sso;
+package org.openmetadata.it.scenarios.sso;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -10,13 +10,13 @@ import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;
import org.junit.jupiter.api.Test;
-import org.openmetadata.jpw.server.ContainerizedServer;
-import org.openmetadata.jpw.server.sso.ClientType;
-import org.openmetadata.jpw.server.sso.GoogleProfile;
+import org.openmetadata.it.server.ContainerizedServer;
+import org.openmetadata.it.server.sso.ClientType;
+import org.openmetadata.it.server.sso.GoogleProfile;
/**
* End-to-end wiring check for SSO mode: launches OM with the Google confidential-client
- * profile and the {@link org.openmetadata.jpw.server.sso.MockOidcServer} sidecar, then
+ * profile and the {@link org.openmetadata.it.server.sso.MockOidcServer} sidecar, then
* fetches OM's public {@code /api/v1/system/config/auth} endpoint to confirm OM picked up
* the SSO env vars at boot — provider {@code google}, client type {@code confidential},
* authority pointing at the mock IdP under the {@code om-mock-idp} hostname.
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/sso/MockIdpSmokeUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/sso/MockIdpSmokeUIIT.java
similarity index 96%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/sso/MockIdpSmokeUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/sso/MockIdpSmokeUIIT.java
index 8a7e5c36c56..12ec1337aef 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/sso/MockIdpSmokeUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/sso/MockIdpSmokeUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.sso;
+package org.openmetadata.it.scenarios.sso;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -10,7 +10,7 @@ import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;
import org.junit.jupiter.api.Test;
-import org.openmetadata.jpw.server.sso.MockOidcServer;
+import org.openmetadata.it.server.sso.MockOidcServer;
import org.testcontainers.containers.Network;
/**
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/ui/smoke/TableDetailsSmokeUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/ui/smoke/TableDetailsSmokeUIIT.java
similarity index 87%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/ui/smoke/TableDetailsSmokeUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/ui/smoke/TableDetailsSmokeUIIT.java
index 86952cdd851..ad2758909b7 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/ui/smoke/TableDetailsSmokeUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/ui/smoke/TableDetailsSmokeUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.ui.smoke;
+package org.openmetadata.it.scenarios.ui.smoke;
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
@@ -8,9 +8,9 @@ import org.openmetadata.it.factories.DatabaseSchemaTestFactory;
import org.openmetadata.it.factories.TableTestFactory;
import org.openmetadata.it.util.TestNamespace;
import org.openmetadata.it.util.TestNamespaceExtension;
-import org.openmetadata.jpw.ui.UiSession;
-import org.openmetadata.jpw.ui.UiSessionExtension;
-import org.openmetadata.jpw.ui.pages.TablePage;
+import org.openmetadata.it.ui.UiSession;
+import org.openmetadata.it.ui.UiSessionExtension;
+import org.openmetadata.it.ui.pages.TablePage;
import org.openmetadata.schema.entity.data.DatabaseSchema;
import org.openmetadata.schema.entity.data.Table;
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/ui/topic/TopicUIIT.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/ui/topic/TopicUIIT.java
similarity index 85%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/ui/topic/TopicUIIT.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/ui/topic/TopicUIIT.java
index 9371b221b15..b27e8a95731 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/scenarios/ui/topic/TopicUIIT.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/scenarios/ui/topic/TopicUIIT.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.scenarios.ui.topic;
+package org.openmetadata.it.scenarios.ui.topic;
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;
@@ -7,9 +7,9 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.openmetadata.it.factories.TopicTestFactory;
import org.openmetadata.it.util.TestNamespace;
import org.openmetadata.it.util.TestNamespaceExtension;
-import org.openmetadata.jpw.ui.UiSession;
-import org.openmetadata.jpw.ui.UiSessionExtension;
-import org.openmetadata.jpw.ui.pages.TopicPage;
+import org.openmetadata.it.ui.UiSession;
+import org.openmetadata.it.ui.UiSessionExtension;
+import org.openmetadata.it.ui.pages.TopicPage;
import org.openmetadata.schema.entity.data.Topic;
/**
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/ReindexHelpers.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/ReindexHelpers.java
similarity index 98%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/ReindexHelpers.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/ReindexHelpers.java
index 988d7910fdc..12c8ed84387 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/ReindexHelpers.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/ReindexHelpers.java
@@ -1,11 +1,11 @@
-package org.openmetadata.jpw.search;
+package org.openmetadata.it.search;
import java.time.Duration;
import java.util.Map;
import java.util.Set;
import org.awaitility.Awaitility;
import org.awaitility.core.ConditionTimeoutException;
-import org.openmetadata.jpw.server.ServerHandle;
+import org.openmetadata.it.server.ServerHandle;
import org.openmetadata.schema.entity.app.AppRunRecord;
import org.openmetadata.sdk.network.HttpClient;
import org.openmetadata.sdk.network.HttpMethod;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchAssertions.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchAssertions.java
similarity index 97%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchAssertions.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchAssertions.java
index 0ebeb206dac..15edc028b75 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchAssertions.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchAssertions.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.search;
+package org.openmetadata.it.search;
import static org.assertj.core.api.Assertions.assertThat;
@@ -7,7 +7,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.openmetadata.jpw.server.ServerHandle;
+import org.openmetadata.it.server.ServerHandle;
/**
* Assertions over the live search engine — index existence, doc counts, alias resolution,
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchClient.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchClient.java
similarity index 97%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchClient.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchClient.java
index 196ac40749b..6de328cc44d 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchClient.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchClient.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.search;
+package org.openmetadata.it.search;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -8,7 +8,7 @@ import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
-import org.openmetadata.jpw.server.ServerHandle;
+import org.openmetadata.it.server.ServerHandle;
/**
* Thin JSON-over-HTTP client for the search engine (works against ES and OpenSearch).
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchQueryHelper.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchQueryHelper.java
similarity index 97%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchQueryHelper.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchQueryHelper.java
index 6446e3e7719..801a9af4944 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/search/SearchQueryHelper.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/search/SearchQueryHelper.java
@@ -1,11 +1,11 @@
-package org.openmetadata.jpw.search;
+package org.openmetadata.it.search;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.openmetadata.jpw.server.ServerHandle;
+import org.openmetadata.it.server.ServerHandle;
import org.openmetadata.sdk.network.HttpClient;
import org.openmetadata.sdk.network.HttpMethod;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ContainerizedServer.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ContainerizedServer.java
similarity index 99%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ContainerizedServer.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ContainerizedServer.java
index b485fa7ecf4..8c7986d93c9 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ContainerizedServer.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ContainerizedServer.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server;
+package org.openmetadata.it.server;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.HealthCheck;
@@ -13,8 +13,8 @@ import java.time.Duration;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
-import org.openmetadata.jpw.server.sso.MockOidcServer;
-import org.openmetadata.jpw.server.sso.SsoProfile;
+import org.openmetadata.it.server.sso.MockOidcServer;
+import org.openmetadata.it.server.sso.SsoProfile;
import org.openmetadata.sdk.client.OpenMetadataClient;
import org.openmetadata.sdk.config.OpenMetadataConfig;
import org.opensearch.testcontainers.OpensearchContainer;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ExternalServer.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ExternalServer.java
similarity index 98%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ExternalServer.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ExternalServer.java
index ae668879e15..6f10f6432e0 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ExternalServer.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ExternalServer.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server;
+package org.openmetadata.it.server;
import java.net.URI;
import java.util.Locale;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ServerHandle.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ServerHandle.java
similarity index 97%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ServerHandle.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ServerHandle.java
index b0c8af66c48..57dc957064d 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/ServerHandle.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/ServerHandle.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server;
+package org.openmetadata.it.server;
import java.net.URI;
import java.util.Objects;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/ClientType.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/ClientType.java
similarity index 88%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/ClientType.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/ClientType.java
index 3ce16497b4c..3329bd9a817 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/ClientType.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/ClientType.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server.sso;
+package org.openmetadata.it.server.sso;
/**
* OAuth2 client type — selects between {@code response_type=id_token} (browser receives
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/CustomOidcProfile.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/CustomOidcProfile.java
similarity index 96%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/CustomOidcProfile.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/CustomOidcProfile.java
index 6af1cebbe35..b412faa003c 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/CustomOidcProfile.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/CustomOidcProfile.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server.sso;
+package org.openmetadata.it.server.sso;
import java.util.Map;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/GoogleProfile.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/GoogleProfile.java
similarity index 95%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/GoogleProfile.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/GoogleProfile.java
index 3f918c25627..a6fa182bcbe 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/GoogleProfile.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/GoogleProfile.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server.sso;
+package org.openmetadata.it.server.sso;
import java.util.Map;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/MockOidcServer.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/MockOidcServer.java
similarity index 99%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/MockOidcServer.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/MockOidcServer.java
index 9ae75f51e4c..e83ba96db73 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/MockOidcServer.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/MockOidcServer.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server.sso;
+package org.openmetadata.it.server.sso;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.PortBinding;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/OidcEnvBuilder.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/OidcEnvBuilder.java
similarity index 98%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/OidcEnvBuilder.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/OidcEnvBuilder.java
index 2d7f3b5b849..10aa6203574 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/OidcEnvBuilder.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/OidcEnvBuilder.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server.sso;
+package org.openmetadata.it.server.sso;
import java.util.HashMap;
import java.util.Map;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/OktaProfile.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/OktaProfile.java
similarity index 96%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/OktaProfile.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/OktaProfile.java
index 135adc88613..ea46e02ca11 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/OktaProfile.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/OktaProfile.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server.sso;
+package org.openmetadata.it.server.sso;
import java.util.Map;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/SsoProfile.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/SsoProfile.java
similarity index 96%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/SsoProfile.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/SsoProfile.java
index 2af5e731ed4..7119bab48ba 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/server/sso/SsoProfile.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/server/sso/SsoProfile.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.server.sso;
+package org.openmetadata.it.server.sso;
import java.util.Map;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/ClipboardHelper.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/ClipboardHelper.java
similarity index 98%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/ClipboardHelper.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/ClipboardHelper.java
index 60c147f7231..4292998aeac 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/ClipboardHelper.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/ClipboardHelper.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.ui;
+package org.openmetadata.it.ui;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Locator.ClickOptions;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/SessionBrowser.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/SessionBrowser.java
similarity index 98%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/SessionBrowser.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/SessionBrowser.java
index c7a9b7a90f7..3313661b5fc 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/SessionBrowser.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/SessionBrowser.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.ui;
+package org.openmetadata.it.ui;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserType;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/TraceRecorder.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/TraceRecorder.java
similarity index 97%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/TraceRecorder.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/TraceRecorder.java
index 721ae80d829..a7ea04857ba 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/TraceRecorder.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/TraceRecorder.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.ui;
+package org.openmetadata.it.ui;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.Tracing;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/UiSession.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/UiSession.java
similarity index 93%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/UiSession.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/UiSession.java
index f342e8333fc..124e6c2fc32 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/UiSession.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/UiSession.java
@@ -1,8 +1,8 @@
-package org.openmetadata.jpw.ui;
+package org.openmetadata.it.ui;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.Page;
-import org.openmetadata.jpw.server.ServerHandle;
+import org.openmetadata.it.server.ServerHandle;
/**
* Per-test handle around a fresh {@link BrowserContext} pre-authenticated for the OM UI.
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/ui/UiSessionExtension.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/UiSessionExtension.java
similarity index 96%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/ui/UiSessionExtension.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/UiSessionExtension.java
index 090ce4e111b..3e943c23c42 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/ui/UiSessionExtension.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/UiSessionExtension.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.ui;
+package org.openmetadata.it.ui;
import com.microsoft.playwright.Browser.NewContextOptions;
import com.microsoft.playwright.BrowserContext;
@@ -15,10 +15,10 @@ import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.api.extension.ParameterResolver;
-import org.openmetadata.jpw.auth.AuthSession;
-import org.openmetadata.jpw.auth.NoPreloadAuth;
-import org.openmetadata.jpw.server.ServerHandle;
-import org.openmetadata.jpw.util.UiTestServer;
+import org.openmetadata.it.auth.AuthSession;
+import org.openmetadata.it.auth.NoPreloadAuth;
+import org.openmetadata.it.server.ServerHandle;
+import org.openmetadata.it.util.UiTestServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/ExplorePage.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/ExplorePage.java
similarity index 98%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/ExplorePage.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/ExplorePage.java
index 6d6fbd3a42a..56817afdf5c 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/ExplorePage.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/ExplorePage.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.ui.pages;
+package org.openmetadata.it.ui.pages;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
@@ -7,7 +7,7 @@ import com.microsoft.playwright.assertions.PlaywrightAssertions;
import com.microsoft.playwright.options.WaitForSelectorState;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
-import org.openmetadata.jpw.ui.UiSession;
+import org.openmetadata.it.ui.UiSession;
/**
* Page object for {@code /explore/} — the entity discovery surface.
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/MockIdpLoginPage.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/MockIdpLoginPage.java
similarity index 94%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/MockIdpLoginPage.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/MockIdpLoginPage.java
index 9e7ee62447e..cea6a6ac93c 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/MockIdpLoginPage.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/MockIdpLoginPage.java
@@ -1,9 +1,9 @@
-package org.openmetadata.jpw.ui.pages;
+package org.openmetadata.it.ui.pages;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.options.AriaRole;
-import org.openmetadata.jpw.ui.UiSession;
+import org.openmetadata.it.ui.UiSession;
/**
* Page object for {@code navikt/mock-oauth2-server}'s interactive login form. Reached by
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/PageObject.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/PageObject.java
similarity index 95%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/PageObject.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/PageObject.java
index db5d54e9e82..8089469f439 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/PageObject.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/PageObject.java
@@ -1,8 +1,8 @@
-package org.openmetadata.jpw.ui.pages;
+package org.openmetadata.it.ui.pages;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
-import org.openmetadata.jpw.ui.UiSession;
+import org.openmetadata.it.ui.UiSession;
/**
* Base class for OM UI page objects.
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/SearchIndexAppPage.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/SearchIndexAppPage.java
similarity index 97%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/SearchIndexAppPage.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/SearchIndexAppPage.java
index 00c78664300..e7c5996db18 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/SearchIndexAppPage.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/SearchIndexAppPage.java
@@ -1,4 +1,4 @@
-package org.openmetadata.jpw.ui.pages;
+package org.openmetadata.it.ui.pages;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Locator.WaitForOptions;
@@ -6,7 +6,7 @@ import com.microsoft.playwright.Page;
import com.microsoft.playwright.assertions.PlaywrightAssertions;
import com.microsoft.playwright.options.WaitForSelectorState;
import java.time.Duration;
-import org.openmetadata.jpw.ui.UiSession;
+import org.openmetadata.it.ui.UiSession;
/**
* Page object for {@code /settings/apps/SearchIndexingApplication} — the Search Indexing
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/SignInPage.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/SignInPage.java
similarity index 96%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/SignInPage.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/SignInPage.java
index 1258b15cee2..52d682e2586 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/SignInPage.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/SignInPage.java
@@ -1,9 +1,9 @@
-package org.openmetadata.jpw.ui.pages;
+package org.openmetadata.it.ui.pages;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.options.AriaRole;
-import org.openmetadata.jpw.ui.UiSession;
+import org.openmetadata.it.ui.UiSession;
/**
* Page object for the OM sign-in surface ({@code /signin}). Exposes both the basic-auth
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/TablePage.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/TablePage.java
similarity index 95%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/TablePage.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/TablePage.java
index c097164c4d5..1fbc80d6034 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/TablePage.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/TablePage.java
@@ -1,8 +1,8 @@
-package org.openmetadata.jpw.ui.pages;
+package org.openmetadata.it.ui.pages;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
-import org.openmetadata.jpw.ui.UiSession;
+import org.openmetadata.it.ui.UiSession;
/**
* Page object for {@code /table/} — a single table's details page.
diff --git a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/TopicPage.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/TopicPage.java
similarity index 96%
rename from openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/TopicPage.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/TopicPage.java
index 5fc2c71b49b..0afe585fc54 100644
--- a/openmetadata-java-playwright/src/main/java/org/openmetadata/jpw/ui/pages/TopicPage.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/ui/pages/TopicPage.java
@@ -1,8 +1,8 @@
-package org.openmetadata.jpw.ui.pages;
+package org.openmetadata.it.ui.pages;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
-import org.openmetadata.jpw.ui.UiSession;
+import org.openmetadata.it.ui.UiSession;
/**
* Page object for {@code /topic/} — a single topic's details page.
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/util/OssTestServer.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/util/OssTestServer.java
similarity index 91%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/util/OssTestServer.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/util/OssTestServer.java
index 4b525feb0a7..773d35f09dd 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/util/OssTestServer.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/util/OssTestServer.java
@@ -1,9 +1,9 @@
-package org.openmetadata.jpw.util;
+package org.openmetadata.it.util;
import java.net.URI;
import org.openmetadata.it.bootstrap.TestSuiteBootstrap;
import org.openmetadata.it.util.SdkClients;
-import org.openmetadata.jpw.server.ServerHandle;
+import org.openmetadata.it.server.ServerHandle;
/**
* Builds a {@link ServerHandle} backed by the embedded OpenMetadata test stack.
diff --git a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/util/UiTestServer.java b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/util/UiTestServer.java
similarity index 89%
rename from openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/util/UiTestServer.java
rename to openmetadata-integration-tests/src/test/java/org/openmetadata/it/util/UiTestServer.java
index 53ebd49e523..e79d281d289 100644
--- a/openmetadata-java-playwright/src/test/java/org/openmetadata/jpw/util/UiTestServer.java
+++ b/openmetadata-integration-tests/src/test/java/org/openmetadata/it/util/UiTestServer.java
@@ -1,15 +1,15 @@
-package org.openmetadata.jpw.util;
+package org.openmetadata.it.util;
import org.openmetadata.it.util.SdkClients;
-import org.openmetadata.jpw.auth.AuthBackend;
-import org.openmetadata.jpw.auth.AuthBackends;
-import org.openmetadata.jpw.auth.AuthSession;
-import org.openmetadata.jpw.auth.TokenRefresher;
-import org.openmetadata.jpw.auth.TokenSet;
-import org.openmetadata.jpw.server.ContainerizedServer;
-import org.openmetadata.jpw.server.ExternalServer;
-import org.openmetadata.jpw.server.ServerHandle;
-import org.openmetadata.jpw.server.sso.MockOidcServer;
+import org.openmetadata.it.auth.AuthBackend;
+import org.openmetadata.it.auth.AuthBackends;
+import org.openmetadata.it.auth.AuthSession;
+import org.openmetadata.it.auth.TokenRefresher;
+import org.openmetadata.it.auth.TokenSet;
+import org.openmetadata.it.server.ContainerizedServer;
+import org.openmetadata.it.server.ExternalServer;
+import org.openmetadata.it.server.ServerHandle;
+import org.openmetadata.it.server.sso.MockOidcServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmetadata-integration-tests/src/test/resources/logback.xml b/openmetadata-integration-tests/src/test/resources/logback.xml
index 0192b3d1ea0..b8ebb05f868 100644
--- a/openmetadata-integration-tests/src/test/resources/logback.xml
+++ b/openmetadata-integration-tests/src/test/resources/logback.xml
@@ -1,15 +1,19 @@
-
-
- INFO
-
-
- [%thread] %-5level %logger{5} - %msg%n
-
-
-
-
-
-
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openmetadata-java-playwright/README.md b/openmetadata-java-playwright/README.md
deleted file mode 100644
index 4d26e288e9d..00000000000
--- a/openmetadata-java-playwright/README.md
+++ /dev/null
@@ -1,148 +0,0 @@
-# openmetadata-java-playwright
-
-Java-driven end-to-end scenario suite for OpenMetadata. Boots a real server, seeds data via the SDK, and validates backend behaviour — reindex, search, ingestion, governance — with optional Playwright-Java browser checks.
-
-> Tracks EPIC [#3731](https://github.com/open-metadata/openmetadata-collate/issues/3731). Satisfies open tickets [#3767](https://github.com/open-metadata/openmetadata-collate/issues/3767) (e2e suite for SearchIndexingApplication) and [#3792](https://github.com/open-metadata/openmetadata-collate/issues/3792) (Playwright nightly suite for search scenarios).
-
-## Why a separate module?
-
-| Existing | Gap this module fills |
-|---|---|
-| `openmetadata-integration-tests` | API CRUD, isolated entity tests. Can't easily express "seed → trigger reindex → assert engine state → verify in UI" scenarios. |
-| `openmetadata-ui` Playwright (TS) | Frontend perspective, written by UI engineers. Misses backend edge cases that are obvious to backend engineers (orchestrator failure paths, alias swaps, distributed coordination). |
-
-This module is the backend engineer's scenario suite. Same Testcontainers + SDK harness as `openmetadata-integration-tests` (via test-jar dependency), plus Playwright-Java for the cases that need a browser.
-
-## Modes
-
-The module ships with two execution modes, selected by the `JPW_MODE` environment variable. Backend reindex scenarios use embedded mode (fast, hermetic). UI scenarios use external mode (real UI bundle served).
-
-### Embedded (default — backend scenarios)
-
-`TestSuiteBootstrap` (reused from `openmetadata-integration-tests`) starts MySQL/PostgreSQL + Elasticsearch/OpenSearch via Testcontainers and boots `OpenMetadataApplication` in-JVM via `DropwizardAppExtension`. Tests connect via SDK using JWT-cached `SdkClients.adminClient()`.
-
-- Boot time: ~30–60s
-- Debuggable: set a breakpoint in `SearchIndexApp` and the IDE debugger will hit it
-- Limitation: no UI bundle is served — UI scenarios skip via `@DisabledIfEnvironmentVariable(named = "JPW_MODE", matches = "external")` running in reverse
-
-### External (UI + future distributed/crash scenarios)
-
-Tests connect to an already-running stack. Phase 1 supports this for UI scenarios; later phases will add distributed reindex, crash recovery, and ingestion E2E here.
-
-When `JPW_MODE=external` is set:
-- The embedded `TestSuiteBootstrap` skips its boot (no Testcontainers spin-up)
-- Embedded scenarios are skipped via `@DisabledIfEnvironmentVariable`
-- UI scenarios are enabled via `@EnabledIfEnvironmentVariable`
-- `ExternalServer.fromEnv()` reads `OM_URL` + `OM_ADMIN_TOKEN` and builds the SDK client
-
-## Layout
-
-```
-openmetadata-java-playwright/
- src/main/java/org/openmetadata/jpw/
- server/ServerHandle.java connection details (URL, SDK client, search engine endpoint)
- search/ReindexHelpers.java trigger SearchIndexingApplication + Awaitility wait
- search/SearchClient.java stdlib HTTP client to the search engine
- search/SearchAssertions.java doc count, alias→index, presence/absence assertions
- ui/PlaywrightFixture.java browser session lifecycle + traces
- src/test/java/org/openmetadata/jpw/
- util/OssTestServer.java builds a ServerHandle from TestSuiteBootstrap
- scenarios/search/reindex/ Phase 1 scenarios
-```
-
-The harness lives in `src/main/java` so the Collate module (`collate-java-playwright`) can depend on it directly.
-
-## Running locally
-
-### One-time setup
-
-```bash
-# Build everything the module needs
-mvn -DskipTests clean install -pl :openmetadata-java-playwright -am
-
-# Install Playwright browsers (one-time per machine; UI scenarios need it, backend ones don't)
-mvn -pl :openmetadata-java-playwright dependency:build-classpath -Dmdep.outputFile=/tmp/cp.txt -q
-java -cp "$(cat /tmp/cp.txt)" com.microsoft.playwright.CLI install chromium
-```
-
-### Backend scenarios (embedded mode)
-
-```bash
-# All backend scenarios, OpenSearch (default)
-mvn verify -pl :openmetadata-java-playwright
-
-# Elasticsearch instead
-mvn verify -pl :openmetadata-java-playwright \
- -DsearchType=elasticsearch \
- -DsearchImage=docker.elastic.co/elasticsearch/elasticsearch:9.3.0
-
-# Single scenario
-mvn verify -pl :openmetadata-java-playwright -Dit.test=FullReindexFromCleanStateIT
-```
-
-### UI scenarios
-
-UI scenarios are **transparent** — `mvn verify -Dit.test='*UIIT'` just works. `UiTestServer` auto-picks the right backing stack:
-
-| If you set... | UI tests run against |
-|---|---|
-| Nothing (default) | A freshly-built containerized stack (MySQL + OpenSearch + the OM server image built from your local `openmetadata-dist` tarball). First run ~5 min for the dist build, ~2 min for image build + container boot. Subsequent runs reuse Docker layer cache. |
-| `OM_URL` + `OM_ADMIN_TOKEN` | Whatever stack those vars point at (e.g. a `./docker/run_local_docker.sh` you already have running). |
-| `OM_TEST_IMAGE=openmetadata/server:1.11.4` | A containerized stack using that pre-built image instead of building one from local code. Useful for testing against released versions. |
-
-```bash
-# 1) Just run it. First time will build the dist tarball (~5 min) and the image.
-mvn verify -pl :openmetadata-java-playwright -Dit.test='*UIIT'
-```
-
-That's it. The test seeds a table via the SDK, triggers `SearchIndexingApplication`, opens Chromium, navigates to Explore, types the table name, presses Enter, asserts the table appears.
-
-### Iterating against a stack you already have running
-
-If you already have `./docker/run_local_docker.sh -m ui -d mysql` going, point the test at it and skip the rebuild:
-
-```bash
-export OM_URL=http://localhost:8585
-export OM_ADMIN_TOKEN=''
-mvn verify -pl :openmetadata-java-playwright -Dit.test='*UIIT'
-```
-
-`UiTestServer` detects the env vars and uses them automatically.
-
-### Watching the browser
-
-Edit `PlaywrightFixture.java` line 51, change `setHeadless(true)` → `setHeadless(false).setSlowMo(300)`. Re-run; Chromium pops up.
-
-### Skipping the wasted embedded boot when only running UI tests
-
-By default, when you run `mvn verify`, the `TestSuiteBootstrap` LauncherSessionListener fires and boots an embedded MySQL+OpenSearch even if you filter to UI tests. Suppress it with:
-
-```bash
-mvn verify -pl :openmetadata-java-playwright -Dit.test='*UIIT' -Dskip.embedded.bootstrap=true
-```
-
-## Adding a scenario
-
-1. Pick (or create) a sub-package under `src/test/java/org/openmetadata/jpw/scenarios/`.
-2. Name the class `IT.java` so failsafe picks it up.
-3. Use `@Execution(SAME_THREAD)` if your scenario triggers the SearchIndexingApplication (it's a shared resource).
-4. Build a `ServerHandle` once in `@BeforeAll` via `OssTestServer.defaultHandle()`.
-5. Seed via `*TestFactory` classes from `openmetadata-integration-tests` (already on the classpath).
-6. Drive search via `ReindexHelpers`, assert via `SearchAssertions`.
-7. Reference the EPIC sub-issue(s) the scenario protects against in the class Javadoc.
-
-## CI
-
-| Workflow | Trigger | What it runs |
-|---|---|---|
-| `java-playwright-pr.yml` | Path-filtered PR + `run-java-playwright` label + dispatch | Embedded mode, OpenSearch only, fast subset |
-| `java-playwright-nightly.yml` | Cron `0 2 * * *` + dispatch | Embedded mode, ES + OS matrix; expands in Phase 3 to external mode |
-
-Path filter triggers on changes to `openmetadata-service/src/.../searchIndex/**`, `.../search/**`, the spec, the SDK search service, the integration-tests bootstrap, and this module itself.
-
-## Phasing
-
-- **Phase 1 (this PR)**: skeleton, harness, 3 reindex scenarios, embedded mode, CI wiring.
-- **Phase 2**: scenarios for buckets D (stats), E (ES/OS parity), F (query correctness), G (lifecycle), I (column embeddings), J (permissions). UI scenarios (search after reindex appears in Explore).
-- **Phase 3**: external mode (`docker-compose-e2e.yml` + `ExternalServer`), distributed reindex (#25058, #3750, #3757), crash recovery, perf smoke (#3961).
-- **Phase 4+**: ingestion E2E, governance, lineage.
diff --git a/openmetadata-java-playwright/pom.xml b/openmetadata-java-playwright/pom.xml
deleted file mode 100644
index 2a9bcfd9e3d..00000000000
--- a/openmetadata-java-playwright/pom.xml
+++ /dev/null
@@ -1,238 +0,0 @@
-
-
-
- platform
- org.open-metadata
- 1.12.0-SNAPSHOT
-
- 4.0.0
- openmetadata-java-playwright
- OpenMetadata Java Playwright Scenario Tests
-
- Java-driven end-to-end scenario suite for OpenMetadata. Boots a real server
- (embedded or external), seeds data via the SDK, and validates backend
- behaviour — reindex, search, ingestion, governance — with optional
- Playwright-Java browser checks. Satisfies EPIC #3731 / tickets #3767, #3792.
-
- jar
-
-
- 3.1.2
- 3.1.2
- 1.49.0
-
-
-
-
-
- org.open-metadata
- openmetadata-sdk
- ${project.version}
-
-
- org.awaitility
- awaitility
- compile
-
-
- org.assertj
- assertj-core
- 3.27.7
-
-
- com.microsoft.playwright
- playwright
- ${playwright.version}
-
-
-
- org.testcontainers
- testcontainers
- 1.21.4
-
-
- org.testcontainers
- mysql
- 1.21.4
-
-
- org.testcontainers
- postgresql
- 1.21.4
-
-
- org.testcontainers
- k3s
- 1.21.4
-
-
- org.opensearch
- opensearch-testcontainers
- 2.1.1
-
-
- com.github.docker-java
- docker-java-api
- 3.4.2
-
-
- org.junit.jupiter
- junit-jupiter-api
- ${org.junit.jupiter.version}
-
-
- org.slf4j
- slf4j-api
-
-
- org.projectlombok
- lombok
- provided
-
-
- com.fasterxml.jackson.core
- jackson-databind
-
-
-
-
- org.open-metadata
- openmetadata-integration-tests
- ${project.version}
- test-jar
- tests
- test
-
-
-
- org.open-metadata
- openmetadata-dist
- ${project.version}
- pom
- test
- true
-
-
- org.open-metadata
- openmetadata-service
- ${project.version}
- test
-
-
- org.testcontainers
- elasticsearch
- 1.21.4
- test
-
-
- org.testcontainers
- junit-jupiter
- 1.21.4
- test
-
-
-
- io.dropwizard
- dropwizard-testing
- test
-
-
- com.auth0
- java-jwt
- 4.4.0
- test
-
-
- org.junit.jupiter
- junit-jupiter
- ${org.junit.jupiter.version}
- test
-
-
- org.junit.platform
- junit-platform-launcher
- test
-
-
- ch.qos.logback
- logback-classic
- test
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-failsafe-plugin
- ${maven.failsafe.version}
-
-
-
- scenario-tests
-
- integration-test
- verify
-
-
- 1
- true
- -Xmx4096m -XX:+UseG1GC
-
- **/*IT.java
-
-
- **/*UIIT.java
-
-
- mysql
- mysql:8.3.0
- opensearch
- opensearchproject/opensearch:2.13.0
- true
-
-
-
-
-
-
- ui-scenario-tests
-
- integration-test
- verify
-
-
- 1
- true
- -Xmx4096m -XX:+UseG1GC
-
- **/*UIIT.java
-
-
- true
-
- true
- true
- true
- concurrent
- same_thread
- dynamic
- 0.5
-
-
-
-
-
-
-
-
diff --git a/openmetadata-java-playwright/src/test/resources/logback.xml b/openmetadata-java-playwright/src/test/resources/logback.xml
deleted file mode 100644
index e4c6d884f6e..00000000000
--- a/openmetadata-java-playwright/src/test/resources/logback.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/openmetadata-java-playwright/src/test/resources/openmetadata-secure-test.yaml b/openmetadata-java-playwright/src/test/resources/openmetadata-secure-test.yaml
deleted file mode 100644
index 159105f6fce..00000000000
--- a/openmetadata-java-playwright/src/test/resources/openmetadata-secure-test.yaml
+++ /dev/null
@@ -1,121 +0,0 @@
-clusterName: openmetadata
-swagger:
- resourcePackage: org.openmetadata.service.webservice.resources
-server:
- rootPath: '/api/*'
- enableVirtualThreads: true
- applicationConnectors:
- - type: http
- port: 0
- uriCompliance: UNSAFE
- adminConnectors:
- - type: http
- port: 0
-logging:
- level: INFO
- appenders:
- - type: console
- layout:
- type: om-event-layout
- format: ${LOG_FORMAT:-text}
- appendLineSeparator: true
-database:
- driverClass: org.postgresql.Driver
- user: test
- password:
- url: jdbc:postgresql://localhost:5432/openmetadata
- # Optimized for single JVM with method-level parallelization
- # Dynamic factor 1.0 = ~8 threads on 8-core, need sufficient connections
- maxSize: 100
- minSize: 20
- initialSize: 20
- checkConnectionWhileIdle: true
- checkConnectionOnBorrow: true
- evictionInterval: 30 seconds
- minIdleTime: 10 seconds
- validationQuery: "SELECT 1"
- maxWaitForConnection: 30 seconds
-migrationConfiguration:
- flywayPath: "../bootstrap/sql/migrations/flyway"
- nativePath: "../bootstrap/sql/migrations/native"
- extensionPath: ""
-secretsManagerConfiguration:
- secretsManager: db
- tags: []
-health:
- delayedShutdownHandlerEnabled: true
- shutdownWaitPeriod: 5s
- healthChecks:
- - name: OpenMetadataServerHealthCheck
- critical: true
-authorizerConfiguration:
- className: "org.openmetadata.service.security.DefaultAuthorizer"
- containerRequestFilter: "org.openmetadata.service.security.JwtFilter"
- adminPrincipals:
- - "admin"
- testPrincipals:
- - "test"
- principalDomain: "open-metadata.org"
- enforcePrincipalDomain: false
- enableSecureSocketConnection: false
- allowedEmailRegistrationDomains:
- - "all"
-authenticationConfiguration:
- clientType: "public"
- provider: "openmetadata"
- providerName: ""
- publicKeyUrls:
- - "https://www.googleapis.com/oauth2/v3/certs"
- authority: "https://accounts.google.com"
- clientId: "dummy"
- callbackUrl: "http://localhost:8585/callback"
- jwtPrincipalClaims:
- - "email"
- - "preferred_username"
- - "sub"
- enableSelfSignup : true
-jwtTokenConfiguration:
- rsapublicKeyFilePath: "src/test/resources/public_key.der"
- rsaprivateKeyFilePath: "src/test/resources/private_key.der"
- jwtissuer: "open-metadata.org"
- keyId: "test-key"
-eventHandlerConfiguration:
- eventHandlerClassNames:
- - "org.openmetadata.service.events.AuditEventHandler"
- - "org.openmetadata.service.events.ChangeEventHandler"
-
-eventMonitoringConfiguration:
- eventMonitor: "prometheus"
- batchSize: 10
- pathPattern: ["/*"]
- latency: [0.90]
-pipelineServiceClientConfiguration:
- className: "org.openmetadata.service.clients.pipeline.airflow.AirflowRESTClient"
- metadataApiEndpoint: http://localhost:8585/api
- apiEndpoint: http://localhost:8080
- hostIp: ""
- healthCheckInterval: 300
- verifySSL: "no-ssl"
- authProvider: "openmetadata"
- parameters:
- username: admin
- password: admin
- timeout: 10
- truststorePath: ""
- truststorePassword: ""
-fernetConfiguration:
- fernetKey: ihZpp5gmmDvVsgoOG6OVivKWwC9vd5JQ
-objectStorage:
- enabled: false
- provider: NOOP
- maxFileSize: 5242880
-
-# RDF Configuration - will be dynamically configured by TestSuiteBootstrap
-rdf:
- enabled: false
- baseUri: "https://open-metadata.org/"
- storageType: "FUSEKI"
- remoteEndpoint: "http://localhost:3030/openmetadata"
- username: "admin"
- password: "test-admin"
- dataset: "openmetadata"
diff --git a/openmetadata-java-playwright/src/test/resources/private_key.der b/openmetadata-java-playwright/src/test/resources/private_key.der
deleted file mode 100644
index 8d310e40575..00000000000
Binary files a/openmetadata-java-playwright/src/test/resources/private_key.der and /dev/null differ
diff --git a/openmetadata-java-playwright/src/test/resources/public_key.der b/openmetadata-java-playwright/src/test/resources/public_key.der
deleted file mode 100644
index 6e4bbc64fae..00000000000
Binary files a/openmetadata-java-playwright/src/test/resources/public_key.der and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 06a84eff3a8..41489ca1d50 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,7 +36,6 @@
openmetadata-service
openmetadata-k8s-operator
openmetadata-integration-tests
- openmetadata-java-playwright
openmetadata-mcp
openmetadata-ui-core-components
openmetadata-ui