Skip to content

Commit 1b178d2

Browse files
authored
fix: fix CodeWithMe on 2023.1 (#353)
* fix: fix CodeWithMe on 2023.1 Signed-off-by: Stephane Bouchet <sbouchet@redhat.com> * fix: fix CodeWithMe on 2023.1 and starting for other versions Signed-off-by: Stephane Bouchet <sbouchet@redhat.com> * fix: fix Main Menu Signed-off-by: Stephane Bouchet <sbouchet@redhat.com> * fix: fix Main Menu Signed-off-by: Stephane Bouchet <sbouchet@redhat.com> * fix: fix Main Menu Signed-off-by: Stephane Bouchet <sbouchet@redhat.com> * fix: fix Main Menu Signed-off-by: Stephane Bouchet <sbouchet@redhat.com> --------- Signed-off-by: Stephane Bouchet <sbouchet@redhat.com>
1 parent d6852d1 commit 1b178d2

File tree

30 files changed

+137
-135
lines changed

30 files changed

+137
-135
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
with:
5050
name: dependency-reports
5151
path: build/reports/dependency-verification/*
52-
if: always()
52+
if: failure()
5353

5454
run_on_linux:
5555
runs-on: ubuntu-latest

.github/workflows/validate.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
name: Validate
1+
name: Validate against IJ versions
2+
23
on:
3-
workflow_run:
4-
workflows: [Java CI with Gradle]
5-
types:
6-
- completed
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
79
jobs:
810
validate_versions:
911
runs-on: ubuntu-latest

src/main/java/com/redhat/devtools/intellij/commonuitest/UITestRunner.java

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333
import java.util.logging.Level;
3434
import java.util.logging.Logger;
3535

36+
import static com.intellij.remoterobot.search.locators.Locators.byXpath;
3637
import static com.intellij.remoterobot.stepsProcessing.StepWorkerKt.step;
3738
import static com.intellij.remoterobot.utils.RepeatUtilsKt.waitFor;
38-
import static com.intellij.remoterobot.search.locators.Locators.byXpath;
3939

4040
/**
4141
* Basic methods for starting and quiting the IntelliJ Idea IDE for UI tests
@@ -49,41 +49,39 @@ public class UITestRunner {
4949
private static final Logger LOGGER = Logger.getLogger(UITestRunner.class.getName());
5050
private static final String OS_NAME = System.getProperty("os.name").toLowerCase();
5151
private static final String USER_HOME = System.getProperty("user.home");
52-
private static RemoteRobot remoteRobot = null;
53-
private static Process ideProcess;
54-
private static IntelliJVersion ideaVersion;
5552
private static final String NEW_ITEM_PROPERTY = "New-ItemProperty";
5653
private static final String NAME_PARAM = "-Name";
5754
private static final String VALUE_PARAM = "-Value";
55+
private static RemoteRobot remoteRobot = null;
56+
private static Process ideProcess;
57+
private static IntelliJVersion ideaVersion;
5858

5959
private UITestRunner() {}
6060

6161
/**
6262
* Start the given version of IntelliJ Idea listening on the given port
6363
*
64-
* @param ideaVersion version of the IntelliJ Idea to start
65-
* @param port port number on which will the IntelliJ Idea be listening
64+
* @param ideaVersionUnderTest version of the IntelliJ Idea to start
65+
* @param port port number on which will the IntelliJ Idea be listening
6666
* @return instance of the RemoteRobot
6767
*/
68-
public static RemoteRobot runIde(IntelliJVersion ideaVersion, int port) {
68+
public static RemoteRobot runIde(IntelliJVersion ideaVersionUnderTest, int port) {
6969
StepWorker.registerProcessor(new StepLogger());
70+
ideaVersion = ideaVersionUnderTest;
71+
if (ideaVersionUnderTest.equals(IntelliJVersion.UNSUPPORTED)) {
72+
LOGGER.severe("Cannot run Idea. Version is unsupported");
73+
return null;
74+
}
7075

71-
return step("Start IntelliJ Idea ('" + ideaVersion.toString() + "') listening on port " + port, () -> {
76+
return step("Start IntelliJ Idea ('" + ideaVersion + "') listening on port " + port, () -> {
7277
System.setProperty("uitestlib.idea.version", Integer.toString(ideaVersion.toInt()));
73-
UITestRunner.ideaVersion = ideaVersion;
7478

7579
acceptAllTermsAndConditions();
7680

7781
String fileExtension = OS_NAME.contains("windows") ? ".bat" : "";
78-
String[] platformTypeVersion = generatePlatformTypeVersion();
79-
80-
ProcessBuilder pb;
82+
String platformVersion = generatePlatformVersion();
8183

82-
if (ideaVersion.toInt() < 20242) {
83-
pb = new ProcessBuilder("." + File.separator + "gradlew" + fileExtension, "runIdeForUiTests", "-PideaVersion=" + platformTypeVersion[1], "-Drobot-server.port=" + port);
84-
} else {
85-
pb = new ProcessBuilder("." + File.separator + "gradlew" + fileExtension, "runIdeForUiTests", "-Drobot-server.port=" + port, "-PplatformType=" + platformTypeVersion[0], "-PplatformVersion=" + platformTypeVersion[1]);
86-
}
84+
ProcessBuilder pb = new ProcessBuilder("." + File.separator + "gradlew" + fileExtension, "runIdeForUiTests", "-PideaVersion=" + platformVersion, "-Drobot-server.port=" + port);
8785
boolean isDebugOn = Boolean.parseBoolean(System.getProperty("intellij_debug", "false")); // For more info on intellij_debug please check README
8886
if (isDebugOn) {
8987
redirectProcessOutputs(pb);
@@ -154,7 +152,7 @@ public static RemoteRobot getRemoteRobot() {
154152
public static RemoteRobot getRemoteRobotConnection(int port) {
155153
return step("Create an instance of the RemoteRobot listening on port " + port, () -> {
156154
RemoteRobot remoteRobot = new RemoteRobot("http://127.0.0.1:" + port);
157-
SharedSteps.waitForComponentByXpath(remoteRobot,30, 200, byXpath(XPathDefinitions.FLAT_WELCOME_FRAME));
155+
SharedSteps.waitForComponentByXpath(remoteRobot, 30, 200, byXpath(XPathDefinitions.FLAT_WELCOME_FRAME));
158156
return remoteRobot;
159157
});
160158
}
@@ -311,15 +309,15 @@ private static void redirectProcessOutputs(ProcessBuilder pb) {
311309
}
312310

313311
/**
314-
* Generate platformType and platformVersion based on ideaVersion
312+
* Generate platformVersion based on complete ideaVersion
315313
*
316-
* @return platformTypeVersion string array
314+
* @return platformVersion
317315
*/
318-
private static String[] generatePlatformTypeVersion() {
316+
private static String generatePlatformVersion() {
319317
String[] platformTypeVersion = ideaVersion.toString().split("-", 2);
320318
if (2 > platformTypeVersion.length) {
321319
throw new UITestException("ideaVersion is not recognized.");
322320
}
323-
return platformTypeVersion;
321+
return platformTypeVersion[1];
324322
}
325323
}

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.intellij.remoterobot.fixtures.DefaultXpath;
1717
import com.intellij.remoterobot.fixtures.FixtureName;
1818
import com.intellij.remoterobot.utils.WaitForConditionTimeoutException;
19+
import com.redhat.devtools.intellij.commonuitest.UITestRunner;
1920
import com.redhat.devtools.intellij.commonuitest.utils.constants.ButtonLabels;
2021
import com.redhat.devtools.intellij.commonuitest.utils.constants.XPathDefinitions;
2122
import org.jetbrains.annotations.NotNull;
@@ -24,6 +25,8 @@
2425
import java.util.logging.Level;
2526
import java.util.logging.Logger;
2627

28+
import static com.intellij.remoterobot.search.locators.Locators.byXpath;
29+
2730
/**
2831
* Code With Me dialog fixture
2932
*
@@ -45,8 +48,13 @@ public CodeWithMeDialog(@NotNull RemoteRobot remoteRobot, @NotNull RemoteCompone
4548
*/
4649
public static void closeCodeWithMePopupIfItAppears(RemoteRobot remoteRobot) {
4750
CodeWithMeDialog codeWithMeDialog;
51+
int ideaVersionInt = UITestRunner.getIdeaVersionInt();
4852
try {
49-
codeWithMeDialog = remoteRobot.find(CodeWithMeDialog.class, Duration.ofSeconds(10));
53+
if (ideaVersionInt <= 20231) {
54+
codeWithMeDialog = remoteRobot.find(CodeWithMeDialog.class, byXpath("//div[@class='Wrapper']//div[@class='JPanel']"), Duration.ofSeconds(10));
55+
} else {
56+
codeWithMeDialog = remoteRobot.find(CodeWithMeDialog.class, Duration.ofSeconds(10));
57+
}
5058
} catch (WaitForConditionTimeoutException e) {
5159
LOGGER.log(Level.INFO, "Code With Me popup not found, nothing to close.");
5260
return;

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,16 @@ public void invokeCmd(String cmdToEnter) {
7070
invokeSearch(cmdToEnter, true);
7171
}
7272

73-
public void searchText(String searchString){
73+
public void searchText(String searchString) {
7474
invokeSearch(searchString, false);
7575
}
7676

77-
private void invokeSearch(String searchText, boolean invoke){
77+
private void invokeSearch(String searchText, boolean invoke) {
7878
JTextFieldFixture searchField = textField(JTextFieldFixture.Companion.byType(), Duration.ofSeconds(2));
7979
searchField.click();
8080
searchField.setText(searchText);
8181
waitFor(Duration.ofSeconds(30), Duration.ofSeconds(1), "the search dialog in the Search Everywhere popup to load in 30 seconds.", () -> didSearchFinish(searchText));
82-
if(invoke){
82+
if (invoke) {
8383
new Keyboard(remoteRobot).hotKey(KeyEvent.VK_ENTER);
8484
}
8585
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public String getProjectLocation() {
8888
*/
8989
public void setProjectLocation(String projectLocation) {
9090
if (ideaVersionInt >= 20221) {
91-
find(JTextFieldFixture.class, byXpath(XPathDefinitions.EXTENDABLE_TEXT_FIELD )).setText(projectLocation);
91+
find(JTextFieldFixture.class, byXpath(XPathDefinitions.EXTENDABLE_TEXT_FIELD)).setText(projectLocation);
9292
} else {
9393
textFields(JTextFieldFixture.Companion.byType()).get(1).setText(projectLocation);
9494
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ public void closeMoreSettings() {
7575
public String getModuleName() {
7676
if (ideaVersionInt >= 20242) {
7777
return find(JTextFieldFixture.class, byXpath(XPathDefinitions.GET_SET_MODULE_NAME_2024_2_AND_NEWER)).getText();
78-
}
79-
else if (ideaVersionInt >= 20221) {
78+
} else if (ideaVersionInt >= 20221) {
8079
return find(JTextFieldFixture.class, byXpath(XPathDefinitions.GET_SET_MODULE_NAME)).getText();
8180
} else {
8281
return textField("Module name:", true).getText();
@@ -91,8 +90,7 @@ else if (ideaVersionInt >= 20221) {
9190
public void setModuleName(String moduleName) {
9291
if (ideaVersionInt >= 20242) {
9392
find(JTextFieldFixture.class, byXpath(XPathDefinitions.GET_SET_MODULE_NAME_2024_2_AND_NEWER)).setText(moduleName);
94-
}
95-
else if (ideaVersionInt >= 20221) {
93+
} else if (ideaVersionInt >= 20221) {
9694
find(JTextFieldFixture.class, byXpath(XPathDefinitions.GET_SET_MODULE_NAME)).setText(moduleName);
9795
} else {
9896
textField("Module name:", true).setText(moduleName);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
@FixtureName(name = "New Project Dialog")
4848
public class NewProjectFirstPage extends AbstractNewProjectFinalPage {
4949
protected final RemoteRobot remoteRobot;
50-
private boolean isProjectSdkItemsLoaded = false;
5150
private final int ideaVersionInt = UITestRunner.getIdeaVersionInt();
51+
private boolean isProjectSdkItemsLoaded = false;
5252

5353
public NewProjectFirstPage(@NotNull RemoteRobot remoteRobot, @NotNull RemoteComponent remoteComponent) {
5454
super(remoteRobot, remoteComponent);

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

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@
1818
import com.intellij.remoterobot.fixtures.FixtureName;
1919
import com.intellij.remoterobot.utils.Keyboard;
2020
import com.intellij.remoterobot.utils.WaitForConditionTimeoutException;
21+
import com.redhat.devtools.intellij.commonuitest.UITestRunner;
2122
import com.redhat.devtools.intellij.commonuitest.fixtures.dialogs.FlatWelcomeFrame;
2223
import com.redhat.devtools.intellij.commonuitest.fixtures.dialogs.navigation.SearchEverywherePopup;
2324
import com.redhat.devtools.intellij.commonuitest.fixtures.mainidewindow.menubar.MenuBar;
2425
import com.redhat.devtools.intellij.commonuitest.utils.constants.XPathDefinitions;
26+
import com.redhat.devtools.intellij.commonuitest.utils.internalerror.IdeInternalErrorUtils;
2527
import org.jetbrains.annotations.NotNull;
2628

2729
import java.awt.event.KeyEvent;
2830
import java.time.Duration;
2931

30-
import com.redhat.devtools.intellij.commonuitest.utils.internalerror.IdeInternalErrorUtils;
31-
3232
import static com.intellij.remoterobot.search.locators.Locators.byXpath;
3333

3434
/**
@@ -52,14 +52,14 @@ public MainIdeWindow(@NotNull RemoteRobot remoteRobot, @NotNull RemoteComponent
5252
public void maximizeIdeWindow() {
5353
if (remoteRobot.isWin()) {
5454
runJs("""
55-
const width = component.getWidth();
56-
const height = component.getHeight();
57-
const horizontal_offset = width-72;
58-
robot.click(component, new Point(horizontal_offset, 14), MouseButton.LEFT_BUTTON, 1);
59-
const width_after = component.getWidth();
60-
const height_after = component.getHeight();
61-
const horizontal_offset_after = width_after-72;
62-
if (width > width_after || height > height_after) { robot.click(component, new Point(horizontal_offset_after, 14), MouseButton.LEFT_BUTTON, 1); }""");
55+
const width = component.getWidth();
56+
const height = component.getHeight();
57+
const horizontal_offset = width-72;
58+
robot.click(component, new Point(horizontal_offset, 14), MouseButton.LEFT_BUTTON, 1);
59+
const width_after = component.getWidth();
60+
const height_after = component.getHeight();
61+
const horizontal_offset_after = width_after-72;
62+
if (width > width_after || height > height_after) { robot.click(component, new Point(horizontal_offset_after, 14), MouseButton.LEFT_BUTTON, 1); }""");
6363

6464
} else {
6565
runJs("""
@@ -78,14 +78,14 @@ public void maximizeIdeWindow() {
7878
* Close the currently opened project
7979
*/
8080
public void closeProject() {
81-
if (remoteRobot.isMac()) {
81+
if (UITestRunner.getIdeaVersionInt() == 20233 && remoteRobot.isLinux()) {
8282
invokeCmdUsingSearchEverywherePopup("Close Project");
8383
} else {
8484
new MenuBar(remoteRobot).navigateTo("File", "Close Project");
8585
}
8686
IdeInternalErrorUtils.clearWindowsErrorsIfTheyAppear(remoteRobot);
8787
remoteRobot.find(FlatWelcomeFrame.class, Duration.ofSeconds(10)).runJs("const horizontal_offset = component.getWidth()/2;\n" +
88-
"robot.click(component, new Point(horizontal_offset, 10), MouseButton.LEFT_BUTTON, 1);");
88+
"robot.click(component, new Point(horizontal_offset, 10), MouseButton.LEFT_BUTTON, 1);");
8989
}
9090

9191
/**
@@ -94,13 +94,7 @@ public void closeProject() {
9494
* @param cmdToInvoke String representation of command which will be executed using the Search Everywhere popup
9595
*/
9696
public void invokeCmdUsingSearchEverywherePopup(String cmdToInvoke) {
97-
SearchEverywherePopup searchEverywherePopup = openSearchEverywherePopup();
98-
searchEverywherePopup.invokeCmd(cmdToInvoke);
99-
}
100-
101-
public void searchEverywhere(String searchString) {
102-
SearchEverywherePopup searchEverywherePopup = openSearchEverywherePopup();
103-
searchEverywherePopup.searchText(searchString);
97+
openSearchEverywherePopup().invokeCmd(cmdToInvoke);
10498
}
10599

106100
private SearchEverywherePopup openSearchEverywherePopup() {
@@ -121,4 +115,5 @@ private SearchEverywherePopup openSearchEverywherePopup() {
121115
return searchEverywherePopup;
122116
}
123117
}
118+
124119
}

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

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,16 @@
1313
import com.intellij.remoterobot.RemoteRobot;
1414
import com.intellij.remoterobot.fixtures.ActionButtonFixture;
1515
import com.intellij.remoterobot.fixtures.CommonContainerFixture;
16-
import com.intellij.remoterobot.fixtures.ComponentFixture;
1716
import com.intellij.remoterobot.fixtures.JButtonFixture;
1817
import com.intellij.remoterobot.fixtures.JPopupMenuFixture;
19-
import com.intellij.remoterobot.fixtures.dataExtractor.RemoteText;
2018
import com.intellij.remoterobot.utils.WaitForConditionTimeoutException;
2119
import com.redhat.devtools.intellij.commonuitest.UITestRunner;
22-
import com.redhat.devtools.intellij.commonuitest.fixtures.mainidewindow.MainIdeWindow;
2320
import com.redhat.devtools.intellij.commonuitest.utils.constants.XPathDefinitions;
24-
import com.redhat.devtools.intellij.commonuitest.utils.screenshot.ScreenshotUtils;
2521
import org.jetbrains.annotations.NotNull;
2622

2723
import java.time.Duration;
2824
import java.util.List;
29-
import java.util.Optional;
25+
import java.util.logging.Logger;
3026

3127
import static com.intellij.remoterobot.search.locators.Locators.byXpath;
3228
import static com.intellij.remoterobot.utils.RepeatUtilsKt.waitFor;
@@ -37,12 +33,12 @@
3733
* @author zcervink@redhat.com
3834
*/
3935
public class MenuBar {
36+
private static final Logger LOGGER = Logger.getLogger(MenuBar.class.getName());
4037
private final RemoteRobot remoteRobot;
4138
private final int ideaVersionInt = UITestRunner.getIdeaVersionInt();
4239

4340
public MenuBar(RemoteRobot remoteRobot) {
4441
this.remoteRobot = remoteRobot;
45-
checkVisibility();
4642
}
4743

4844
/**
@@ -58,6 +54,11 @@ public void navigateTo(String... path) {
5854
remoteRobot.find(ActionButtonFixture.class, byXpath(XPathDefinitions.MAIN_MENU)).click();
5955
}
6056

57+
if (!isVisible()) {
58+
LOGGER.severe("Main Menu is not visible.");
59+
return;
60+
}
61+
6162
JButtonFixture mainMenuFirstItem = mainMenuItem(path[0]);
6263
if (mainMenuFirstItem != null) {
6364
if (ideaVersionInt >= 20242) {
@@ -111,22 +112,13 @@ public CommonContainerFixture getMainMenu() {
111112
return cf;
112113
}
113114

114-
private void checkVisibility() {
115+
public boolean isVisible() {
115116
// check menu already visible
116117
try {
117118
getMainMenu();
119+
return true;
118120
} catch (WaitForConditionTimeoutException e) {
119-
// not visible
120-
MainIdeWindow mainIdeWindow = remoteRobot.find(MainIdeWindow.class, Duration.ofSeconds(5));
121-
mainIdeWindow.searchEverywhere("Appearance");
122-
ComponentFixture appearanceDialog = remoteRobot.find(ComponentFixture.class, byXpath("//div[@class='SearchEverywhereUI']"));
123-
List<RemoteText> items = appearanceDialog.findAllText();
124-
Optional<RemoteText> item = items.stream().filter(remoteText -> remoteText.getText().equals("View | Appearance: Main Menu")).findFirst();
125-
if (item.isPresent()) {
126-
item.get().click();
127-
} else {
128-
ScreenshotUtils.takeScreenshot(remoteRobot, "Can't find 'Appearance' Main menu item");
129-
}
121+
return false;
130122
}
131123
}
132124
}

src/main/java/com/redhat/devtools/intellij/commonuitest/fixtures/mainidewindow/toolwindowspane/AbstractToolWinPane.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ private boolean isPaneOpened(Class<? extends Fixture> fixtureClass) {
124124

125125
private void clickOnStripeButton(String label, boolean isPaneOpened) {
126126
waitFor(Duration.ofSeconds(30), Duration.ofSeconds(2),
127-
"The '" + label + "' stripe button is not available.",
128-
() -> isStripeButtonAvailable(label, isPaneOpened));
127+
"The '" + label + "' stripe button is not available.",
128+
() -> isStripeButtonAvailable(label, isPaneOpened));
129129

130130
if (ideaVersionInt >= 20242) {
131131
// For IntelliJ IDEA 2024.2 and newer
@@ -175,6 +175,6 @@ private boolean isStripeButtonAvailable(String label, boolean isPaneOpened) {
175175

176176
private boolean isRightToolbarButton(String label) {
177177
return label.equals(ButtonLabels.MAVEN_STRIPE_BUTTON_LABEL) ||
178-
label.equals(ButtonLabels.GRADLE_STRIPE_BUTTON_LABEL);
178+
label.equals(ButtonLabels.GRADLE_STRIPE_BUTTON_LABEL);
179179
}
180180
}

src/main/java/com/redhat/devtools/intellij/commonuitest/fixtures/mainidewindow/toolwindowspane/buildtoolpane/MavenBuildToolPane.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ public void buildProject(String goal, String projectName) {
7575
JTreeFixture tree = mavenTargetTree();
7676
// below workaround due to https://github.com/JetBrains/intellij-ui-test-robot/issues/459
7777
tree.doubleClickRowWithText(projectName, true); // expand root
78-
tree.doubleClickRowWithText("Lifecycle" ,true); // expand Lifecycle
79-
tree.doubleClickRowWithText(goal,true);
78+
tree.doubleClickRowWithText("Lifecycle", true); // expand Lifecycle
79+
tree.doubleClickRowWithText(goal, true);
8080
if (ideaVersionInt >= 20221) {
8181
remoteRobot.find(ToolWindowPane.class).find(BuildView.class).waitUntilBuildHasFinished();
8282
} else {

0 commit comments

Comments
 (0)