-
Notifications
You must be signed in to change notification settings - Fork 133
SWTBot test case: Partition Table Editor #1012
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,243 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /******************************************************************************* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * Copyright 2021 Espressif Systems (Shanghai) PTE LTD. All rights reserved. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * Use is subject to license terms. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| *******************************************************************************/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| package com.espressif.idf.ui.test.executable.cases.project; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import static org.junit.Assert.assertTrue; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import java.io.IOException; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import org.junit.After; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import org.junit.BeforeClass; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import org.junit.FixMethodOrder; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import org.junit.Test; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import org.junit.runner.RunWith; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import org.junit.runners.MethodSorters; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.espressif.idf.ui.test.common.WorkBenchSWTBot; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.espressif.idf.ui.test.common.utility.TestWidgetWaitUtility; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.espressif.idf.ui.test.operations.EnvSetupOperations; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.espressif.idf.ui.test.operations.ProjectTestOperations; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * Test class to test the SBOM feature | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * @author Andrii Filippov | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @SuppressWarnings("restriction") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @RunWith(SWTBotJunit4ClassRunner.class) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @FixMethodOrder(MethodSorters.NAME_ASCENDING) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+32
to
+33
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Consider removing test dependencies. The use of Consider:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public class NewEspressifIDFProjectPartitionTableEditorTest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @BeforeClass | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public static void beforeTestClass() throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.loadEnv(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 40 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @After | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public void afterEachTest() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| try | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.cleanTestEnv(); // Make sure test environment is always cleaned up | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| catch (Exception e) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| System.err.println("Error during cleanup: " + e.getMessage()); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public void givenNewProjectCreatedNotBuiltWhenOpenEmptyPartitionTableEditorThenInformationPopUpMessage() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenNewEspressifIDFProjectIsSelected("EspressIf", "Espressif IDF Project"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenProjectNameIs("NewProjectPartitionTableEditor1Test"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenNewProjectIsSelected(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenOpenEmptyPartitionTableEditor(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.ThenInformationMessagePopUp(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 64 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public void givenNewProjectCreatedBuiltWhenOpenPartitionTableEditorThenBuiltInPartitionTableDisplayed() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenNewEspressifIDFProjectIsSelected("EspressIf", "Espressif IDF Project"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenProjectNameIs("NewProjectPartitionTableEditor2Test"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenNewProjectIsSelected(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenProjectIsBuiltUsingContextMenu(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenOpenPartitionTableEditor(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.ThenBuiltInPartitionTableDisplayed(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 76 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public void givenNewProjectCreatedBuiltWhenOpenPartitionTableEditorWhenAddRowThenCheckRowAdded() throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenNewEspressifIDFProjectIsSelected("EspressIf", "Espressif IDF Project"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenProjectNameIs("NewProjectPartitionTableEditor3Test"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenNewProjectIsSelected(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenProjectIsBuiltUsingContextMenu(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenOpenPartitionTableEditor(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenAddRowToPartitionTable(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.ThenCheckRowAdded(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 88 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public void givenNewProjectCreatedBuiltWhenOpenPartitionTableEditorWhenDeleteSelectedRowThenCheckRowDeleted() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenNewEspressifIDFProjectIsSelected("EspressIf", "Espressif IDF Project"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenProjectNameIs("NewProjectPartitionTableEditor4Test"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenNewProjectIsSelected(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenProjectIsBuiltUsingContextMenu(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenOpenPartitionTableEditor(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenDeleteRowFromPartitionTable(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.ThenCheckRowDeleted(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 101 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public void givenNewProjectCreatedBuiltWhenOpenPartitionTableEditorWhenDeleteSelectedRowWhenSaveAndQuitwhenReopenPartitionTableThenCheckChangesSaved() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenNewEspressifIDFProjectIsSelected("EspressIf", "Espressif IDF Project"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenProjectNameIs("NewProjectPartitionTableEditor5Test"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenNewProjectIsSelected(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenProjectIsBuiltUsingContextMenu(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenOpenPartitionTableEditor(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenDeleteRowFromPartitionTable(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenSaveAndQuit(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenOpenPartitionTableEditor(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.thenCheckChangesSaved(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 116 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| public void givenNewProjectCreatedBuiltWhenOpenPartitionTableEditorWhenDeleteSelectedRowWhenSaveAndCancelwhenReopenPartitionTableThenCheckChangesSaved() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenNewEspressifIDFProjectIsSelected("EspressIf", "Espressif IDF Project"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.givenProjectNameIs("NewProjectPartitionTableEditor6Test"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenNewProjectIsSelected(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenProjectIsBuiltUsingContextMenu(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenOpenPartitionTableEditor(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenDeleteRowFromPartitionTable(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenSavePartitionTable(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenCancel(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.whenOpenPartitionTableEditor(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.thenCheckChangesSaved(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 132 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static class Fixture | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static SWTWorkbenchBot bot; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static String category; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static String subCategory; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static String projectName; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void loadEnv() throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bot = WorkBenchSWTBot.getBot(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| EnvSetupOperations.setupEspressifEnv(bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bot.sleep(1000); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 146 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+141
to
+146
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Avoid using fixed delays like Using fixed delays can lead to flaky tests due to variable execution times. Instead, use explicit wait conditions provided by SWTBot to wait for specific UI elements or operations to complete. Apply this diff to replace private static void loadEnv() throws Exception
{
bot = WorkBenchSWTBot.getBot();
EnvSetupOperations.setupEspressifEnv(bot);
- bot.sleep(1000);
+ TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
}📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void givenNewEspressifIDFProjectIsSelected(String category, String subCategory) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.category = category; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.subCategory = subCategory; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void givenProjectNameIs(String projectName) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixture.projectName = projectName; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenNewProjectIsSelected() throws Exception | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ProjectTestOperations.setupProject(projectName, category, subCategory, bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check warning on line 162 in tests/com.espressif.idf.ui.test/src/com/espressif/idf/ui/test/executable/cases/project/NewEspressifIDFProjectPartitionTableEditorTest.java
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenProjectIsBuiltUsingContextMenu() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ProjectTestOperations.buildProjectUsingContextMenu(projectName, bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ProjectTestOperations.waitForProjectBuild(bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenOpenPartitionTableEditor() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ProjectTestOperations.launchCommandUsingContextMenu(projectName, bot, "Partition Table Editor"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TestWidgetWaitUtility.waitUntilDialogIsNotVisible(bot, "Partition Table Editor", 10000); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+171
to
+175
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add proper wait conditions for UI interactions. UI operations like opening editors and clicking buttons need proper wait conditions to prevent flaky tests. Apply these improvements: private static void whenOpenPartitionTableEditor() throws IOException
{
+ TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
ProjectTestOperations.launchCommandUsingContextMenu(projectName, bot, "Partition Table Editor");
TestWidgetWaitUtility.waitUntilDialogIsNotVisible(bot, "Partition Table Editor", 10000);
+ TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
}
private static void whenAddRowToPartitionTable() throws IOException
{
+ TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
bot.toolbarButton("Add Row").click();
+ TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
}Also applies to: 194-197 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenOpenEmptyPartitionTableEditor() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ProjectTestOperations.launchCommandUsingContextMenu(projectName, bot, "Partition Table Editor"); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TestWidgetWaitUtility.waitUntilDialogIsNotVisible(bot, "Information", 10000); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void ThenInformationMessagePopUp() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| assertTrue(ProjectTestOperations.checkShellContent(bot, "Information", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "Failed to get partition CSV file name from sdkconfig. Make sure your project is compiled and has sdkconfig.")); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+183
to
+187
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Follow Java naming conventions for method names Method names starting with uppercase letters don't follow Java naming conventions. Please update them to start with lowercase letters. -private static void ThenInformationMessagePopUp()
+private static void thenInformationMessagePopUp()
-private static void ThenBuiltInPartitionTableDisplayed()
+private static void thenBuiltInPartitionTableDisplayed()
-private static void ThenCheckRowAdded()
+private static void thenCheckRowAdded()
-private static void ThenCheckRowDeleted()
+private static void thenCheckRowDeleted()Also applies to: 181-184, 191-194, 201-204, 223-226 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void ThenBuiltInPartitionTableDisplayed() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| assertTrue(ProjectTestOperations.checkPartitionTableContent(bot)); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenAddRowToPartitionTable() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bot.toolbarButton("Add Row").click(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void ThenCheckRowAdded() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| assertTrue(ProjectTestOperations.comparePartitionTableRows(bot, 1)); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+194
to
+202
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add retry mechanism for UI interactions. UI interactions like clicking buttons and checking table contents can be flaky. Consider adding a retry mechanism with appropriate waits. private static void whenAddRowToPartitionTable() throws IOException
{
+ TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
bot.toolbarButton("Add Row").click();
+ TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
}
private static void ThenCheckRowAdded() throws IOException
{
+ // Retry up to 3 times with a short delay
+ for (int i = 0; i < 3; i++) {
+ if (ProjectTestOperations.comparePartitionTableRows(bot, 1)) {
+ return;
+ }
+ TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
+ }
assertTrue(ProjectTestOperations.comparePartitionTableRows(bot, 1));
}📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenDeleteRowFromPartitionTable() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ProjectTestOperations.deletePartitionTableRow(bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void ThenCheckRowDeleted() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| assertTrue(ProjectTestOperations.comparePartitionTableRows(bot, -1)); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenSaveAndQuit() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bot.button("Save and Quit").click(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bot.button("OK").click(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenSavePartitionTable() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bot.toolbarButton("Save").click(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bot.button("OK").click(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void whenCancel() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bot.button("Cancel").click(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void thenCheckChangesSaved() throws IOException | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| assertTrue(ProjectTestOperations.comparePartitionTableRows(bot, -1)); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| private static void cleanTestEnv() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ProjectTestOperations.closeAllProjects(bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ProjectTestOperations.deleteAllProjects(bot); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+236
to
+241
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle potential exceptions within the method. The private static void cleanTestEnv() {
try {
TestWidgetWaitUtility.waitForOperationsInProgressToFinishAsync(bot);
ProjectTestOperations.closeAllProjects(bot);
ProjectTestOperations.deleteAllProjects(bot);
} catch (Exception e) {
// Log the exception and proceed with cleanup
e.printStackTrace();
}
} |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update JavaDoc to reflect the correct purpose of the test class
The JavaDoc comment incorrectly states this is a test class for the "SBOM feature", but the class actually tests the Partition Table Editor functionality.
Apply this diff to correct the JavaDoc:
📝 Committable suggestion