diff --git a/.github/workflows/run-regression-tests.yml b/.github/workflows/run-regression-tests.yml
index 44d48940..77ca6ca6 100644
--- a/.github/workflows/run-regression-tests.yml
+++ b/.github/workflows/run-regression-tests.yml
@@ -10,7 +10,7 @@ jobs:
fail-fast: false
matrix:
runtime: [ linux, mac, windows ]
- targetPlatform: [ 2Q2025 ]
+ targetPlatform: [ 3Q2025 ]
include:
- runtime: linux
os: ubuntu-latest
diff --git a/ci/jenkins/run-tests b/ci/jenkins/run-tests
index b65abe89..a30c199e 100644
--- a/ci/jenkins/run-tests
+++ b/ci/jenkins/run-tests
@@ -38,7 +38,7 @@ pipeline {
}
}
- stage('Test on Eclipse 2Q2025') {
+ stage('Test on Eclipse 3Q2025') {
steps {
dir('liberty-tools-eclipse') {
script {
@@ -48,16 +48,16 @@ pipeline {
sh '''
MVNPATH="$(dirname $(which mvn))/.."
GRADLEPATH="$(dirname $(which gradle))/.."
- mvn clean verify -DmvnLogFile -DmvnPath=$MVNPATH -DgradlePath=$GRADLEPATH -Dtycho.disableP2Mirrors=true -Declipse.target=2Q2025 -Dosgi.debug=./tests/resources/ci/debug.opts -DtestAppImportWait=120000 -Dtycho.showEclipseLog -e -X
+ mvn clean verify -DmvnLogFile -DmvnPath=$MVNPATH -DgradlePath=$GRADLEPATH -Dtycho.disableP2Mirrors=true -Declipse.target=3Q2025 -Dosgi.debug=./tests/resources/ci/debug.opts -DtestAppImportWait=120000 -Dtycho.showEclipseLog -e -X
'''
}
} finally {
sh "find tests -type f -name \"lte-dev-mode-output-*.log\""
sh "mkdir lte-dev-mode-output-logs && find tests -type f -name \"lte-dev-mode-output-*.log\" -exec cp {} lte-dev-mode-output-logs \\;"
sh "zip -r lte-dev-mode-output-logs.zip lte-dev-mode-output-logs"
- sh "cd tests/target/surefire-reports && zip -r 2Q2025-test-reports.zip ."
+ sh "cd tests/target/surefire-reports && zip -r 3Q2025-test-reports.zip ."
- archiveArtifacts artifacts: 'tests/target/surefire-reports/2Q2025-test-reports.zip', fingerprint: true
+ archiveArtifacts artifacts: 'tests/target/surefire-reports/3Q2025-test-reports.zip', fingerprint: true
archiveArtifacts artifacts: 'lte-dev-mode-output-logs.zip', fingerprint: true
archiveArtifacts artifacts: 'tests/target/work/data/.metadata/.log', fingerprint: true
}
diff --git a/pom.xml b/pom.xml
index b4017f92..218ce550 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,7 +42,7 @@
- 2Q2025
+ 3Q2025
diff --git a/releng/target-platform-3Q2025/target-platform-3Q2025.target b/releng/target-platform-3Q2025/target-platform-3Q2025.target
new file mode 100644
index 00000000..2ded5273
--- /dev/null
+++ b/releng/target-platform-3Q2025/target-platform-3Q2025.target
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ net.bytebuddy
+ byte-buddy-agent
+ 1.14.18
+ jar
+
+
+ net.bytebuddy
+ byte-buddy
+ 1.14.18
+ jar
+
+
+ org.mockito
+ mockito-core
+ 5.12.0
+ jar
+
+
+ org.mockito
+ mockito-junit-jupiter
+ 5.12.0
+ jar
+
+
+ org.objenesis
+ objenesis
+ 3.4
+ jar
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/src/main/java/io/openliberty/tools/eclipse/test/it/utils/SWTBotPluginOperations.java b/tests/src/main/java/io/openliberty/tools/eclipse/test/it/utils/SWTBotPluginOperations.java
index 8186a259..2667a1dc 100644
--- a/tests/src/main/java/io/openliberty/tools/eclipse/test/it/utils/SWTBotPluginOperations.java
+++ b/tests/src/main/java/io/openliberty/tools/eclipse/test/it/utils/SWTBotPluginOperations.java
@@ -27,6 +27,8 @@
import java.util.Iterator;
import java.util.List;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
@@ -140,7 +142,7 @@ public static SWTBotMenu getDebuggerConnectMenuForDebugObject(Object debugObject
showDebugView();
SWTBotTreeItem obj = new SWTBotTreeItem((TreeItem) debugObject);
-
+
// Ensure the tree item is properly selected and focused before accessing context menu
// This is critical for headless CI environments where context menus can hang
obj.select();
@@ -238,10 +240,10 @@ public void run() {
}
}
});
-
+
// Give the view time to activate and render
MagicWidgetFinder.pause(500);
-
+
Object debugView = debugViewHolder[0];
if (debugView == null) {
System.err.println("Debug view not found, cannot find object: " + objectName);
@@ -255,7 +257,7 @@ public void run() {
System.out.println("Retry attempt " + attempt + " to find object: " + objectName);
MagicWidgetFinder.pause(1000);
}
-
+
result = MagicWidgetFinder.find(objectName, debugView,
Option.factory().useContains(true).setThrowExceptionOnNotFound(false).widgetClass(TreeItem.class).build());
}
@@ -802,6 +804,14 @@ public static Object getAppInPackageExplorerTree(String appName) {
Object project = MagicWidgetFinder.find(appName, peView, Option.factory().useContains(true).widgetClass(TreeItem.class).build());
go(project);
+
+ // Add pause to ensure UI is fully ready after selection
+ // This helps prevent race conditions where TreeItem data isn't fully initialized
+ // particularly on Windows in headless CI environments where selection events
+ // can trigger cascading calls to getSelectedDashboardProject() before the
+ // selection is fully resolved, causing infinite loops
+ MagicWidgetFinder.pause(5000);
+
return project;
}