From 46f9aa4df20185adc45cd9da21affe5c0304c14f Mon Sep 17 00:00:00 2001
From: Alex Plate <aleksei.plate@jetbrains.com>
Date: Fri, 14 Mar 2025 12:47:40 +0200
Subject: [PATCH] UI Tests: Handle different name of the project tree for the
 different version of IJ

---
 .../src/testFixtures/kotlin/ui/pages/IdeaFrame.kt    | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/tests/ui-fixtures/src/testFixtures/kotlin/ui/pages/IdeaFrame.kt b/tests/ui-fixtures/src/testFixtures/kotlin/ui/pages/IdeaFrame.kt
index 5f454a293..c23d0809e 100644
--- a/tests/ui-fixtures/src/testFixtures/kotlin/ui/pages/IdeaFrame.kt
+++ b/tests/ui-fixtures/src/testFixtures/kotlin/ui/pages/IdeaFrame.kt
@@ -16,6 +16,7 @@ import com.intellij.remoterobot.fixtures.FixtureName
 import com.intellij.remoterobot.fixtures.JTreeFixture
 import com.intellij.remoterobot.search.locators.byXpath
 import com.intellij.remoterobot.stepsProcessing.step
+import com.intellij.remoterobot.utils.WaitForConditionTimeoutException
 import com.intellij.remoterobot.utils.waitFor
 import java.time.Duration
 
@@ -30,8 +31,15 @@ class IdeaFrame(
   remoteComponent: RemoteComponent,
 ) : CommonContainerFixture(remoteRobot, remoteComponent) {
 
-  val projectViewTree
-    get() = find<JTreeFixture>(byXpath("MyProjectViewTree", "//div[@class='MyProjectViewTree']"), Duration.ofSeconds(30))
+  val projectViewTree: JTreeFixture
+    get() {
+      return try {
+        find<JTreeFixture>(byXpath("MyProjectViewTree", "//div[@class='MyProjectViewTree']"), Duration.ofSeconds(30))
+      } catch (_: WaitForConditionTimeoutException) {
+        // [VERSION UPDATE] 2025.1+ Leave only MyProjectViewTree.
+        find<JTreeFixture>(byXpath("ProjectViewTree", "//div[@class='ProjectViewTree']"), Duration.ofSeconds(30))
+      }
+    }
 
   val projectName
     get() = step("Get project name") { return@step callJs<String>("component.getProject().getName()") }