From 617e03446322fb1c4490bc8be9905979d96407dd Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Mon, 16 Dec 2024 16:57:13 +0200 Subject: [PATCH 01/10] add ui test --- .../com/checkmarx/intellij/ui/BaseUITest.java | 60 +++++++++---------- .../com/checkmarx/intellij/ui/TestAsca.java | 34 +++++++++++ 2 files changed, 64 insertions(+), 30 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java b/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java index 55096a71..536d9bdb 100644 --- a/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java +++ b/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java @@ -37,36 +37,36 @@ public abstract class BaseUITest { @BeforeAll public static void init() { - if (!initialized) { - log("Initializing the tests"); - log("Wait duration set for " + waitDuration.getSeconds()); - StepWorker.registerProcessor(new StepLogger()); - if (hasAnyComponent(FLAT_WELCOME_FRAME)) { - find(FROM_VCS_TAB).click(); - find(JTextFieldFixture.class, BORDERLESS_TEXT_FIELD, Duration.ofSeconds(10)).setText(Environment.REPO); - waitFor(() -> hasAnyComponent(CLONE_BUTTON) && find(JButtonFixture.class, CLONE_BUTTON).isEnabled()); - find(CLONE_BUTTON).click(); - trustClonedProject(); - try { - waitFor(() -> hasAnyComponent("//div[@class='ContentTabLabel']")); - } catch (WaitForConditionTimeoutException e) { - // if exception is thrown, sync was successful, so we can keep going - } - } - // Open Checkmarx One plugin - openCxToolWindow(); - - // Resize Checkmarx One plugin so that all toolbar icons are visible - resizeToolBar(); - - // Connect to AST - testASTConnection(true); - - initialized = true; - log("Initialization finished"); - } else { - log("Tests already initialized, skipping"); - } +// if (!initialized) { +// log("Initializing the tests"); +// log("Wait duration set for " + waitDuration.getSeconds()); +// StepWorker.registerProcessor(new StepLogger()); +// if (hasAnyComponent(FLAT_WELCOME_FRAME)) { +// find(FROM_VCS_TAB).click(); +// find(JTextFieldFixture.class, BORDERLESS_TEXT_FIELD, Duration.ofSeconds(10)).setText(Environment.REPO); +// waitFor(() -> hasAnyComponent(CLONE_BUTTON) && find(JButtonFixture.class, CLONE_BUTTON).isEnabled()); +// find(CLONE_BUTTON).click(); +// trustClonedProject(); +// try { +// waitFor(() -> hasAnyComponent("//div[@class='ContentTabLabel']")); +// } catch (WaitForConditionTimeoutException e) { +// // if exception is thrown, sync was successful, so we can keep going +// } +// } +// // Open Checkmarx One plugin +// openCxToolWindow(); +// +// // Resize Checkmarx One plugin so that all toolbar icons are visible +// resizeToolBar(); +// +// // Connect to AST +// testASTConnection(true); +// +// initialized = true; +// log("Initialization finished"); +// } else { +// log("Tests already initialized, skipping"); +// } } private static void resizeToolBar() { diff --git a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java index a802c386..22e78a9b 100644 --- a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java +++ b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java @@ -3,6 +3,7 @@ import com.automation.remarks.junit5.Video; import com.intellij.remoterobot.fixtures.JTreeFixture; import com.intellij.remoterobot.search.locators.Locators; +import com.intellij.remoterobot.utils.Keyboard; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -41,4 +42,37 @@ public void clickAscaCheckbox_ExitSetting_OpenSetting_ValidateAscaRunning_Succes validateAscaRunning(); click(OK_BTN); } + + @Test + @Video + public void testGetVul() throws InterruptedException { + clickAscaCheckbox(); + click(OK_BTN); + click("//div[contains(@tooltiptext.key, 'title.project')]"); + + enter("webgoat"); + enter("webgoat-lessons"); + enter("challenge"); + enter("src"); + enter("main"); + enter("java"); + enter("challenge5"); + enter("Assignment5"); + + click("//div[@text.key='toolwindow.stripe.Problems_View']"); + click("//div[@class='BaseLabel' and @text='Problems:']"); + enter("ASCA"); + enter("Unsafe SQL Query Construction"); + + waitFor(() -> hasAnyComponent("//div[contains(@mytext, 'Unsafe SQL Query Construction - Consider using prepared statements instead of concatenation when building SQL statement.')]")); + } + + protected static void enter(String value) { + Keyboard keyboard = new Keyboard(remoteRobot); + waitFor(() -> { + keyboard.enterText(value); + return hasAnyComponent(String.format(VISIBLE_TEXT, value)); + }); + keyboard.enter(); + } } \ No newline at end of file From c77fafe026a4841d56e0225bed5b37438622cbc7 Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 09:22:28 +0200 Subject: [PATCH 02/10] revert comment init --- .../com/checkmarx/intellij/ui/BaseUITest.java | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java b/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java index 536d9bdb..55096a71 100644 --- a/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java +++ b/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java @@ -37,36 +37,36 @@ public abstract class BaseUITest { @BeforeAll public static void init() { -// if (!initialized) { -// log("Initializing the tests"); -// log("Wait duration set for " + waitDuration.getSeconds()); -// StepWorker.registerProcessor(new StepLogger()); -// if (hasAnyComponent(FLAT_WELCOME_FRAME)) { -// find(FROM_VCS_TAB).click(); -// find(JTextFieldFixture.class, BORDERLESS_TEXT_FIELD, Duration.ofSeconds(10)).setText(Environment.REPO); -// waitFor(() -> hasAnyComponent(CLONE_BUTTON) && find(JButtonFixture.class, CLONE_BUTTON).isEnabled()); -// find(CLONE_BUTTON).click(); -// trustClonedProject(); -// try { -// waitFor(() -> hasAnyComponent("//div[@class='ContentTabLabel']")); -// } catch (WaitForConditionTimeoutException e) { -// // if exception is thrown, sync was successful, so we can keep going -// } -// } -// // Open Checkmarx One plugin -// openCxToolWindow(); -// -// // Resize Checkmarx One plugin so that all toolbar icons are visible -// resizeToolBar(); -// -// // Connect to AST -// testASTConnection(true); -// -// initialized = true; -// log("Initialization finished"); -// } else { -// log("Tests already initialized, skipping"); -// } + if (!initialized) { + log("Initializing the tests"); + log("Wait duration set for " + waitDuration.getSeconds()); + StepWorker.registerProcessor(new StepLogger()); + if (hasAnyComponent(FLAT_WELCOME_FRAME)) { + find(FROM_VCS_TAB).click(); + find(JTextFieldFixture.class, BORDERLESS_TEXT_FIELD, Duration.ofSeconds(10)).setText(Environment.REPO); + waitFor(() -> hasAnyComponent(CLONE_BUTTON) && find(JButtonFixture.class, CLONE_BUTTON).isEnabled()); + find(CLONE_BUTTON).click(); + trustClonedProject(); + try { + waitFor(() -> hasAnyComponent("//div[@class='ContentTabLabel']")); + } catch (WaitForConditionTimeoutException e) { + // if exception is thrown, sync was successful, so we can keep going + } + } + // Open Checkmarx One plugin + openCxToolWindow(); + + // Resize Checkmarx One plugin so that all toolbar icons are visible + resizeToolBar(); + + // Connect to AST + testASTConnection(true); + + initialized = true; + log("Initialization finished"); + } else { + log("Tests already initialized, skipping"); + } } private static void resizeToolBar() { From 3850033ae8763721991faf2196cbe7b60daf5371 Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 10:46:22 +0200 Subject: [PATCH 03/10] upgrade gradle and fix ui test --- build.gradle | 2 +- .../com/checkmarx/intellij/ui/TestAsca.java | 50 +++++++++++-------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/build.gradle b/build.gradle index ff2853ca..861a1b58 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ group 'com.checkmarx' version System.getenv('RELEASE_VERSION') ?: "dev" def javaWrapperVersion = System.getenv('JAVA_WRAPPER_VERSION') -def remoteRobotVersion = '0.11.16' +def remoteRobotVersion = '0.11.23' repositories { mavenCentral() diff --git a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java index 22e78a9b..c8d2036f 100644 --- a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java +++ b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java @@ -1,14 +1,22 @@ package com.checkmarx.intellij.ui; import com.automation.remarks.junit5.Video; +import com.intellij.remoterobot.fixtures.ComponentFixture; +import com.intellij.remoterobot.fixtures.EditorFixture; import com.intellij.remoterobot.fixtures.JTreeFixture; +import com.intellij.remoterobot.fixtures.dataExtractor.RemoteText; +import com.intellij.remoterobot.search.locators.Locator; import com.intellij.remoterobot.search.locators.Locators; import com.intellij.remoterobot.utils.Keyboard; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.time.Duration; +import java.util.List; + import static com.checkmarx.intellij.ui.utils.RemoteRobotUtils.*; import static com.checkmarx.intellij.ui.utils.Xpath.*; +import static com.intellij.remoterobot.search.locators.Locators.byXpath; public class TestAsca extends BaseUITest { @@ -43,30 +51,32 @@ public void clickAscaCheckbox_ExitSetting_OpenSetting_ValidateAscaRunning_Succes click(OK_BTN); } - @Test - @Video - public void testGetVul() throws InterruptedException { - clickAscaCheckbox(); - click(OK_BTN); - click("//div[contains(@tooltiptext.key, 'title.project')]"); +@Test +@Video +public void testGetVul() { + clickAscaCheckbox(); + click(OK_BTN); - enter("webgoat"); - enter("webgoat-lessons"); - enter("challenge"); - enter("src"); - enter("main"); - enter("java"); - enter("challenge5"); - enter("Assignment5"); - - click("//div[@text.key='toolwindow.stripe.Problems_View']"); - click("//div[@class='BaseLabel' and @text='Problems:']"); - enter("ASCA"); - enter("Unsafe SQL Query Construction"); + ComponentFixture stripeButton = find(ComponentFixture.class, "//div[contains(@tooltiptext.key, 'title.project')]", waitDuration); + try { + ComponentFixture stripeButton1 = find(ComponentFixture.class, "//div[@class='JBViewport'][.//div[@class='ProjectViewTree']]", Duration.ofSeconds(1)); + stripeButton1.click(stripeButton1.findAllText().get(0).getPoint()); + } catch (Exception e) { + stripeButton.click(); + } - waitFor(() -> hasAnyComponent("//div[contains(@mytext, 'Unsafe SQL Query Construction - Consider using prepared statements instead of concatenation when building SQL statement.')]")); + String[] path = {"webgoat-lessons", "challenge", "src", "main", "java", "challenge5", "Assignment5"}; + for (String step : path) { + enter(step); } + click("//div[@text.key='toolwindow.stripe.Problems_View']"); + click("//div[@class='BaseLabel' and @text='Problems:']"); + enter("Unsafe SQL Query Construction"); + + waitFor(() -> hasAnyComponent("//div[contains(@mytext, 'Unsafe SQL Query Construction - Consider using prepared statements instead of concatenation when building SQL statement.')]")); +} + protected static void enter(String value) { Keyboard keyboard = new Keyboard(remoteRobot); waitFor(() -> { From c26967867856c08ad4f87d6b16d889232e3301ee Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 12:07:40 +0200 Subject: [PATCH 04/10] fix ui test --- .../com/checkmarx/intellij/ui/TestAsca.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java index c8d2036f..eb5b56be 100644 --- a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java +++ b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java @@ -2,21 +2,15 @@ import com.automation.remarks.junit5.Video; import com.intellij.remoterobot.fixtures.ComponentFixture; -import com.intellij.remoterobot.fixtures.EditorFixture; -import com.intellij.remoterobot.fixtures.JTreeFixture; -import com.intellij.remoterobot.fixtures.dataExtractor.RemoteText; -import com.intellij.remoterobot.search.locators.Locator; -import com.intellij.remoterobot.search.locators.Locators; import com.intellij.remoterobot.utils.Keyboard; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.awt.*; import java.time.Duration; -import java.util.List; import static com.checkmarx.intellij.ui.utils.RemoteRobotUtils.*; import static com.checkmarx.intellij.ui.utils.Xpath.*; -import static com.intellij.remoterobot.search.locators.Locators.byXpath; public class TestAsca extends BaseUITest { @@ -54,27 +48,36 @@ public void clickAscaCheckbox_ExitSetting_OpenSetting_ValidateAscaRunning_Succes @Test @Video public void testGetVul() { - clickAscaCheckbox(); - click(OK_BTN); +//oat-lessons - ComponentFixture stripeButton = find(ComponentFixture.class, "//div[contains(@tooltiptext.key, 'title.project')]", waitDuration); + // Attempt to find and click the project side tab button + ComponentFixture projectSideTabButton = find(ComponentFixture.class, "//div[contains(@tooltiptext.key, 'title.project')]", waitDuration); try { - ComponentFixture stripeButton1 = find(ComponentFixture.class, "//div[@class='JBViewport'][.//div[@class='ProjectViewTree']]", Duration.ofSeconds(1)); - stripeButton1.click(stripeButton1.findAllText().get(0).getPoint()); + // We assume that project side tab is open, trying to click the project view tree + ComponentFixture projectViewTree = find(ComponentFixture.class, "//div[@class='JBViewport'][.//div[@class='ProjectViewTree']]", Duration.ofSeconds(1)); + Point webGoatRootDirectoryPoint = projectViewTree.findAllText().get(0).getPoint(); + projectViewTree.click(webGoatRootDirectoryPoint); } catch (Exception e) { - stripeButton.click(); + // If the project side tab button is not open, click the project side tab button + projectSideTabButton.click(); } + // Navigate through the project directory to the specific file path String[] path = {"webgoat-lessons", "challenge", "src", "main", "java", "challenge5", "Assignment5"}; for (String step : path) { enter(step); } - click("//div[@text.key='toolwindow.stripe.Problems_View']"); + // Open the Problems view and search for a specific problem + click("//div[contains(@text.key, 'toolwindow.stripe.Problems_View')]"); click("//div[@class='BaseLabel' and @text='Problems:']"); + enter("Unsafe SQL Query Construction"); + // Wait for the problem to be detected and displayed waitFor(() -> hasAnyComponent("//div[contains(@mytext, 'Unsafe SQL Query Construction - Consider using prepared statements instead of concatenation when building SQL statement.')]")); + + openCxToolWindow(); } protected static void enter(String value) { From 42379f035eea533159e001e07704d25522aa085a Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 12:50:39 +0200 Subject: [PATCH 05/10] fix ui test --- src/test/java/com/checkmarx/intellij/ui/BaseUITest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java b/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java index 55096a71..7a6567a0 100644 --- a/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java +++ b/src/test/java/com/checkmarx/intellij/ui/BaseUITest.java @@ -12,7 +12,6 @@ import com.intellij.remoterobot.utils.RepeatUtilsKt; import com.intellij.remoterobot.utils.WaitForConditionTimeoutException; import org.apache.commons.lang3.StringUtils; -import org.assertj.swing.fixture.JCheckBoxFixture; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Assertions; @@ -123,7 +122,7 @@ protected static void waitFor(Supplier condition) { } } - private static void openCxToolWindow() { + static void openCxToolWindow() { log("Opening Cx Tool Window"); waitFor(() -> hasAnyComponent("//div[@tooltiptext.key='NOTIFICATION_GROUP_NAME']")); if (!(hasAnyComponent(SETTINGS_ACTION) || hasAnyComponent(SETTINGS_BUTTON))) { From f86228629d03800f3ba5d2fac956d294e4dce9f9 Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 13:06:47 +0200 Subject: [PATCH 06/10] fix ui test --- .../com/checkmarx/intellij/ui/TestAsca.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java index eb5b56be..53c6be62 100644 --- a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java +++ b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java @@ -2,12 +2,14 @@ import com.automation.remarks.junit5.Video; import com.intellij.remoterobot.fixtures.ComponentFixture; +import com.intellij.remoterobot.fixtures.dataExtractor.RemoteText; import com.intellij.remoterobot.utils.Keyboard; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.awt.*; import java.time.Duration; +import java.util.List; import static com.checkmarx.intellij.ui.utils.RemoteRobotUtils.*; import static com.checkmarx.intellij.ui.utils.Xpath.*; @@ -48,7 +50,9 @@ public void clickAscaCheckbox_ExitSetting_OpenSetting_ValidateAscaRunning_Succes @Test @Video public void testGetVul() { -//oat-lessons + // Click the ASCA checkbox to enable ASCA + clickAscaCheckbox(); + click(OK_BTN); // Attempt to find and click the project side tab button ComponentFixture projectSideTabButton = find(ComponentFixture.class, "//div[contains(@tooltiptext.key, 'title.project')]", waitDuration); @@ -72,10 +76,24 @@ public void testGetVul() { click("//div[contains(@text.key, 'toolwindow.stripe.Problems_View')]"); click("//div[@class='BaseLabel' and @text='Problems:']"); - enter("Unsafe SQL Query Construction"); + ComponentFixture problems = find(ComponentFixture.class, "//div[@class='Tree']", waitDuration); - // Wait for the problem to be detected and displayed - waitFor(() -> hasAnyComponent("//div[contains(@mytext, 'Unsafe SQL Query Construction - Consider using prepared statements instead of concatenation when building SQL statement.')]")); + boolean foundAscaIssue = false; + + waitFor(() -> { + List textList = problems.findAllText(); + return textList.stream().anyMatch(t -> t.getText().contains("ASCA")); + }); + + // validate there is ASCA issue + List p = problems.findAllText(); + for (RemoteText text : p) { + if (text.getText().contains("ASCA")) { + foundAscaIssue = true; + break; + } + } + Assertions.assertTrue(foundAscaIssue); openCxToolWindow(); } From b85752762e0b4789d6212c5f267b9d16c2ac1349 Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 13:10:05 +0200 Subject: [PATCH 07/10] refactor --- src/test/java/com/checkmarx/intellij/ui/TestAsca.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java index 53c6be62..783b18d2 100644 --- a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java +++ b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java @@ -86,8 +86,7 @@ public void testGetVul() { }); // validate there is ASCA issue - List p = problems.findAllText(); - for (RemoteText text : p) { + for (RemoteText text : problems.findAllText()) { if (text.getText().contains("ASCA")) { foundAscaIssue = true; break; From 9687bf532619d7459a9e05602209f02787c96d09 Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 14:43:25 +0200 Subject: [PATCH 08/10] remove side effects --- .../com/checkmarx/intellij/ui/TestAsca.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java index 783b18d2..7793b8f3 100644 --- a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java +++ b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java @@ -45,11 +45,15 @@ public void clickAscaCheckbox_ExitSetting_OpenSetting_ValidateAscaRunning_Succes click(OK_BTN); validateAscaRunning(); click(OK_BTN); + + // Unclick the ASCA checkbox + click(ASCA_CHECKBOX); + click(OK_BTN); } @Test @Video -public void testGetVul() { +public void AscaCheckboxEnabled_EnteringFileWithVulnerabilities_AscaVulnerabilityExist() { // Click the ASCA checkbox to enable ASCA clickAscaCheckbox(); click(OK_BTN); @@ -78,23 +82,18 @@ public void testGetVul() { ComponentFixture problems = find(ComponentFixture.class, "//div[@class='Tree']", waitDuration); - boolean foundAscaIssue = false; - waitFor(() -> { List textList = problems.findAllText(); return textList.stream().anyMatch(t -> t.getText().contains("ASCA")); }); - // validate there is ASCA issue - for (RemoteText text : problems.findAllText()) { - if (text.getText().contains("ASCA")) { - foundAscaIssue = true; - break; - } - } - Assertions.assertTrue(foundAscaIssue); + Assertions.assertTrue(problems.findAllText().stream().anyMatch(t -> t.getText().contains("ASCA"))); openCxToolWindow(); + + // Unclick the ASCA checkbox + click(ASCA_CHECKBOX); + click(OK_BTN); } protected static void enter(String value) { From c1adfed19184f636ec144be8ab98704c32132c53 Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 15:30:58 +0200 Subject: [PATCH 09/10] fix ui test --- .../java/com/checkmarx/intellij/ui/TestAsca.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java index 7793b8f3..aace27b7 100644 --- a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java +++ b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java @@ -45,19 +45,11 @@ public void clickAscaCheckbox_ExitSetting_OpenSetting_ValidateAscaRunning_Succes click(OK_BTN); validateAscaRunning(); click(OK_BTN); - - // Unclick the ASCA checkbox - click(ASCA_CHECKBOX); - click(OK_BTN); } @Test @Video public void AscaCheckboxEnabled_EnteringFileWithVulnerabilities_AscaVulnerabilityExist() { - // Click the ASCA checkbox to enable ASCA - clickAscaCheckbox(); - click(OK_BTN); - // Attempt to find and click the project side tab button ComponentFixture projectSideTabButton = find(ComponentFixture.class, "//div[contains(@tooltiptext.key, 'title.project')]", waitDuration); try { @@ -90,10 +82,6 @@ public void AscaCheckboxEnabled_EnteringFileWithVulnerabilities_AscaVulnerabilit Assertions.assertTrue(problems.findAllText().stream().anyMatch(t -> t.getText().contains("ASCA"))); openCxToolWindow(); - - // Unclick the ASCA checkbox - click(ASCA_CHECKBOX); - click(OK_BTN); } protected static void enter(String value) { From 2e0a2039c08a2222cd572997e79365b3d20001b2 Mon Sep 17 00:00:00 2001 From: AlvoBen Date: Tue, 17 Dec 2024 15:32:23 +0200 Subject: [PATCH 10/10] refactor --- .../com/checkmarx/intellij/ui/TestAsca.java | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java index aace27b7..98dfad9c 100644 --- a/src/test/java/com/checkmarx/intellij/ui/TestAsca.java +++ b/src/test/java/com/checkmarx/intellij/ui/TestAsca.java @@ -16,7 +16,7 @@ public class TestAsca extends BaseUITest { - public void clickAscaCheckbox(){ + public void clickAscaCheckbox() { openSettings(); waitFor(() -> hasAnyComponent(ASCA_CHECKBOX)); click(ASCA_CHECKBOX); @@ -24,7 +24,7 @@ public void clickAscaCheckbox(){ Assertions.assertTrue(hasAnyComponent(ASCA_INSTALL_SUCCESS)); } - public void validateAscaRunning(){ + public void validateAscaRunning() { openSettings(); waitFor(() -> hasAnyComponent(ASCA_INSTALL_SUCCESS)); Assertions.assertTrue(hasAnyComponent(ASCA_INSTALL_SUCCESS)); @@ -47,42 +47,42 @@ public void clickAscaCheckbox_ExitSetting_OpenSetting_ValidateAscaRunning_Succes click(OK_BTN); } -@Test -@Video -public void AscaCheckboxEnabled_EnteringFileWithVulnerabilities_AscaVulnerabilityExist() { - // Attempt to find and click the project side tab button - ComponentFixture projectSideTabButton = find(ComponentFixture.class, "//div[contains(@tooltiptext.key, 'title.project')]", waitDuration); - try { - // We assume that project side tab is open, trying to click the project view tree - ComponentFixture projectViewTree = find(ComponentFixture.class, "//div[@class='JBViewport'][.//div[@class='ProjectViewTree']]", Duration.ofSeconds(1)); - Point webGoatRootDirectoryPoint = projectViewTree.findAllText().get(0).getPoint(); - projectViewTree.click(webGoatRootDirectoryPoint); - } catch (Exception e) { - // If the project side tab button is not open, click the project side tab button - projectSideTabButton.click(); - } - - // Navigate through the project directory to the specific file path - String[] path = {"webgoat-lessons", "challenge", "src", "main", "java", "challenge5", "Assignment5"}; - for (String step : path) { - enter(step); - } - - // Open the Problems view and search for a specific problem - click("//div[contains(@text.key, 'toolwindow.stripe.Problems_View')]"); - click("//div[@class='BaseLabel' and @text='Problems:']"); - - ComponentFixture problems = find(ComponentFixture.class, "//div[@class='Tree']", waitDuration); + @Test + @Video + public void AscaCheckboxEnabled_EnteringFileWithVulnerabilities_AscaVulnerabilityExist() { + // Attempt to find and click the project side tab button + ComponentFixture projectSideTabButton = find(ComponentFixture.class, "//div[contains(@tooltiptext.key, 'title.project')]", waitDuration); + try { + // We assume that project side tab is open, trying to click the project view tree + ComponentFixture projectViewTree = find(ComponentFixture.class, "//div[@class='JBViewport'][.//div[@class='ProjectViewTree']]", Duration.ofSeconds(1)); + Point webGoatRootDirectoryPoint = projectViewTree.findAllText().get(0).getPoint(); + projectViewTree.click(webGoatRootDirectoryPoint); + } catch (Exception e) { + // If the project side tab button is not open, click the project side tab button + projectSideTabButton.click(); + } + + // Navigate through the project directory to the specific file path + String[] path = {"webgoat-lessons", "challenge", "src", "main", "java", "challenge5", "Assignment5"}; + for (String step : path) { + enter(step); + } + + // Open the Problems view and search for a specific problem + click("//div[contains(@text.key, 'toolwindow.stripe.Problems_View')]"); + click("//div[@class='BaseLabel' and @text='Problems:']"); + + ComponentFixture problems = find(ComponentFixture.class, "//div[@class='Tree']", waitDuration); - waitFor(() -> { - List textList = problems.findAllText(); - return textList.stream().anyMatch(t -> t.getText().contains("ASCA")); - }); + waitFor(() -> { + List textList = problems.findAllText(); + return textList.stream().anyMatch(t -> t.getText().contains("ASCA")); + }); - Assertions.assertTrue(problems.findAllText().stream().anyMatch(t -> t.getText().contains("ASCA"))); + Assertions.assertTrue(problems.findAllText().stream().anyMatch(t -> t.getText().contains("ASCA"))); - openCxToolWindow(); -} + openCxToolWindow(); + } protected static void enter(String value) { Keyboard keyboard = new Keyboard(remoteRobot);