Skip to content

Commit 698dd44

Browse files
Merge pull request #222 from richard0202/intellij-20241
feat: Added support for IntelliJ 2024.1
2 parents fb70a16 + 1368767 commit 698dd44

File tree

8 files changed

+43
-9
lines changed

8 files changed

+43
-9
lines changed

src/main/java/com/redhat/devtools/intellij/commonuitest/fixtures/dialogs/FlatWelcomeFrame.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,9 @@ private JButtonFixture welcomeFrameLink(String label) {
241241
if (UtilsKt.hasAnyComponent(this, byXpath(XPathDefinitions.RECENT_PROJECT_PANEL_NEW))) {
242242
return button(byXpath(XPathDefinitions.jBOptionButton(label)), Duration.ofSeconds(2));
243243
}
244+
if (ideaVersion >= 20241 && label.equals("New Project")) {
245+
return button(byXpath(XPathDefinitions.CREATE_NEW_PROJECT), Duration.ofSeconds(2));
246+
}
244247
return button(byXpath(XPathDefinitions.nonOpaquePanel(label)), Duration.ofSeconds(2));
245248
}
246249

src/main/java/com/redhat/devtools/intellij/commonuitest/fixtures/dialogs/project/pages/NewProjectFirstPage.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,12 @@
4545
public class NewProjectFirstPage extends AbstractNewProjectFinalPage {
4646
private final RemoteRobot remoteRobot;
4747
private int projectSdkItemsCount = -1;
48+
private final int ideaVersion;
4849

4950
public NewProjectFirstPage(@NotNull RemoteRobot remoteRobot, @NotNull RemoteComponent remoteComponent) {
5051
super(remoteRobot, remoteComponent);
5152
this.remoteRobot = remoteRobot;
53+
this.ideaVersion = UITestRunner.getIdeaVersion().toInt();
5254
}
5355

5456
/**
@@ -76,7 +78,12 @@ public void setProjectName(String projectName) {
7678
* @param language project language
7779
*/
7880
public void setLanguage(String language) {
79-
findAll(JLabelFixture.class, byXpath(XPathDefinitions.SET_LANGUAGE)).get(0).findText(language).click();
81+
if (ideaVersion >= 20241) {
82+
JListFixture jListFixture = remoteRobot.find(JListFixture.class, byXpath(XPathDefinitions.JBLIST));
83+
jListFixture.clickItem(language, false);
84+
} else {
85+
findAll(JLabelFixture.class, byXpath(XPathDefinitions.SET_LANGUAGE)).get(0).findText(language).click();
86+
}
8087
}
8188

8289
/**
@@ -85,7 +92,23 @@ public void setLanguage(String language) {
8592
* @param buildSystem build system type
8693
*/
8794
public void setBuildSystem(String buildSystem) {
88-
find(JLabelFixture.class, byXpath(XPathDefinitions.SET_BUILD_SYSTEM)).findText(buildSystem).click();
95+
if (ideaVersion >= 20241) {
96+
find(JLabelFixture.class, byXpath(XPathDefinitions.SET_BUILD_SYSTEM_2024_1_AND_NEWER)).findText(buildSystem).click();
97+
} else {
98+
find(JLabelFixture.class, byXpath(XPathDefinitions.SET_BUILD_SYSTEM)).findText(buildSystem).click();
99+
}
100+
}
101+
102+
/**
103+
* Get the project SDK JdkComboBox
104+
*
105+
* @return JdkComboBox fixture
106+
*/
107+
public ComboBoxFixture getProjectJdkComboBox() {
108+
if (ideaVersion >= 20241) {
109+
return comboBox(byXpath(XPathDefinitions.JDK_COMBOBOX_PROJECT_WIZARD), Duration.ofSeconds(10));
110+
}
111+
return comboBox(byXpath(XPathDefinitions.JDK_COMBOBOX), Duration.ofSeconds(10));
89112
}
90113

91114
/**
@@ -95,7 +118,7 @@ public void setBuildSystem(String buildSystem) {
95118
*/
96119
public void setProjectSdkIfAvailable(String targetSdkName) {
97120
step("Select the '" + targetSdkName + "' as new project SDK", () -> {
98-
ComboBoxFixture projectJdkComboBox = comboBox(byXpath(XPathDefinitions.JDK_COMBOBOX), Duration.ofSeconds(10));
121+
ComboBoxFixture projectJdkComboBox = getProjectJdkComboBox();
99122
String currentlySelectedProjectSdk = TextUtils.listOfRemoteTextToString(projectJdkComboBox.findAllText());
100123
if (currentlySelectedProjectSdk.contains(targetSdkName)) {
101124
return;

src/main/java/com/redhat/devtools/intellij/commonuitest/fixtures/mainidewindow/menubar/MenuBar.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,10 @@ private JButtonFixture mainMenuItem(String label) {
7575
CommonContainerFixture cf;
7676
if (remoteRobot.isLinux()) {
7777
cf = remoteRobot.find(CommonContainerFixture.class, byXpath(XPathDefinitions.LINUX_MAIN_MENU), Duration.ofSeconds(10));
78+
} else if (remoteRobot.isWin() && ideaVersion.toInt() >= 20241) {
79+
cf = remoteRobot.find(CommonContainerFixture.class, byXpath(XPathDefinitions.WINDOWS_MAIN_MENU_2024_1_AND_NEWER), Duration.ofSeconds(10));
7880
} else if (remoteRobot.isWin() && ideaVersion.toInt() >= 20222) {
79-
cf = remoteRobot.find(CommonContainerFixture.class, byXpath(XPathDefinitions.WINDOWS_MAIN_MENU_2022_2_AND_NEWER), Duration.ofSeconds(10));
81+
cf = remoteRobot.find(CommonContainerFixture.class, byXpath(XPathDefinitions.WINDOWS_MAIN_MENU_2022_2_TO_2023_2), Duration.ofSeconds(10));
8082
} else if (remoteRobot.isWin() && ideaVersion.toInt() >= 20203) {
8183
cf = remoteRobot.find(CommonContainerFixture.class, byXpath(XPathDefinitions.WINDOWS_MAIN_MENU_2020_3_TO_2022_1), Duration.ofSeconds(10));
8284
} else {

src/main/java/com/redhat/devtools/intellij/commonuitest/utils/constants/XPathDefinitions.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public class XPathDefinitions {
2525
public static final String MAVEN_TOOL_WINDOW = "//div[@accessiblename='Maven Tool Window']";
2626
public static final String GRADLE_TOOL_WINDOW = "//div[@accessiblename='Gradle Tool Window']";
2727
public static final String LINUX_MAIN_MENU = "//div[@class='LinuxIdeMenuBar']";
28-
public static final String WINDOWS_MAIN_MENU_2022_2_AND_NEWER = "//div[@class='IdeMenuBar']";
28+
public static final String WINDOWS_MAIN_MENU_2024_1_AND_NEWER = "//div[@class='IdeJMenuBar']";
29+
public static final String WINDOWS_MAIN_MENU_2022_2_TO_2023_2 = "//div[@class='IdeMenuBar']";
2930
public static final String WINDOWS_MAIN_MENU_2020_3_TO_2022_1 = "//div[@class='MenuFrameHeader']";
3031
public static final String WINDOWS_MAIN_MENU_2020_2_AND_OLDER = "//div[@class='CustomHeaderMenuBar']";
3132
public static final String IDE_STATUS_BAR = "//div[@class='IdeStatusBarImpl']";
@@ -49,6 +50,7 @@ public class XPathDefinitions {
4950
public static final String ARTIFACTS_COORDINATES_DIALOG_PANEL = "//div[@class='DialogPanel']/*";
5051
public static final String HEAVY_WEIGHT_WINDOW = "//div[@class='HeavyWeightWindow']";
5152
public static final String JDK_COMBOBOX = "//div[@class='JdkComboBox']";
53+
public static final String JDK_COMBOBOX_PROJECT_WIZARD = "//div[@class='ProjectWizardJdkComboBox']"; // works for IntelliJ Idea 2024.1 and higher
5254
public static final String MY_DIALOG = "//div[@class='MyDialog']";
5355
public static final String TREE = "//div[@class='Tree']";
5456
public static final String TOOLTIP_TEXT_PROJECT = "//div[@tooltiptext='Project']";
@@ -78,9 +80,11 @@ public class XPathDefinitions {
7880
public static final String REMOVE_PROJECT_BUTTON = "//div[contains(@text.key, 'button.remove')]";
7981
public static final String SET_LANGUAGE = "//div[@class='SegmentedButtonComponent'][.//div[contains(@action.key, 'language.groovy')]]";
8082
public static final String SET_BUILD_SYSTEM = "//div[@class='SegmentedButtonComponent'][.//div[@action.key='buildsystem.type.intellij']]";
83+
public static final String SET_BUILD_SYSTEM_2024_1_AND_NEWER = "//div[@accessiblename='Build system:' and @class='SegmentedButtonComponent']"; // works for IntelliJ Idea 2024.1 and higher
8184
public static final String GET_SET_MODULE_NAME = "//div[@accessiblename='Module name:' and @accessiblename.key='label.project.wizard.new.project.module.name' and @class='JBTextField']";
8285
public static final String GET_SET_CONTENT_ROOT = "//div[@accessiblename='Content root:' and @accessiblename.key='label.project.wizard.new.project.content.root' and @class='ExtendableTextField']";
8386
public static final String GET_SET_MODULE_FILE_LOCATION = "//div[@accessiblename='Module file location:' and @accessiblename.key='label.project.wizard.new.project.module.file.location' and @class='ExtendableTextField']";
87+
public static final String CREATE_NEW_PROJECT = "//div[@defaulticon='createNewProjectTab.svg']"; // works for IntelliJ Idea 2024.1 and higher
8488

8589
private XPathDefinitions() {
8690
throw new UITestException("Utility class with static methods.");

src/main/java/com/redhat/devtools/intellij/commonuitest/utils/runner/IntelliJVersion.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ public enum IntelliJVersion {
2626
COMMUNITY_V_2022_3("IC-2022.3"),
2727
COMMUNITY_V_2023_1("IC-2023.1"),
2828
COMMUNITY_V_2023_2("IC-2023.2"),
29+
COMMUNITY_V_2024_1("IC-2024.1"),
2930
ULTIMATE_V_2020_2("IU-2020.2"),
3031
ULTIMATE_V_2020_3("IU-2020.3"),
3132
ULTIMATE_V_2021_1("IU-2021.1"),
3233
ULTIMATE_V_2021_2("IU-2021.2"),
33-
ULTIMATE_V_2023_2("IU-2023.2");
34+
ULTIMATE_V_2023_2("IU-2023.2"),
35+
ULTIMATE_V_2024_1("IU-2024.1");
3436

3537
private final String ideaVersionStringRepresentation;
3638
private final int ideaVersionIntRepresentation;

src/test-project/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ideaVersion=IC-2023.2
1+
ideaVersion=IC-2024.1

src/test-project/src/test/java/com/redhat/devtools/intellij/commonuitest/LibraryTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
@ExtendWith(ScreenshotAfterTestFailExtension.class)
3232
public class LibraryTestBase {
3333
protected static final Logger LOGGER = Logger.getLogger(LibraryTestBase.class.getName());
34-
private static final IntelliJVersion ideaVersion = IntelliJVersion.COMMUNITY_V_2023_2;
34+
private static final IntelliJVersion ideaVersion = IntelliJVersion.COMMUNITY_V_2024_1;
3535
protected static RemoteRobot remoteRobot;
3636
protected static int ideaVersionInt = ideaVersion.toInt();
3737
private static boolean intelliJHasStarted = false;

src/test-project/src/test/java/com/redhat/devtools/intellij/commonuitest/fixtures/test/dialogs/project_manipulation/NewProjectDialogTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ public void cancelButtonTest() {
334334
@Test
335335
public void setProjectSdkIfAvailableTest() {
336336
newProjectFirstPage.setProjectSdkIfAvailable("11");
337-
ComboBoxFixture projectJdkComboBox = newProjectFirstPage.find(ComboBoxFixture.class, byXpath(XPathDefinitions.JDK_COMBOBOX), Duration.ofSeconds(10));
337+
ComboBoxFixture projectJdkComboBox = newProjectFirstPage.getProjectJdkComboBox();
338338
String currentlySelectedProjectSdk = listOfRemoteTextToString(projectJdkComboBox.findAllText());
339339
assertTrue(currentlySelectedProjectSdk.contains("11"), "Selected project SDK should be Java 11 but is '" + currentlySelectedProjectSdk + "'");
340340
newProjectFirstPage.setProjectSdkIfAvailable("17");

0 commit comments

Comments
 (0)