Skip to content

Commit d148451

Browse files
authored
Merge pull request #477 from TESTARtool/dependabot/gradle/io.github.bonigarcia-webdrivermanager-6.3.4
Bump io.github.bonigarcia:webdrivermanager from 6.3.3 to 6.3.4
2 parents 2255914 + 2061f16 commit d148451

8 files changed

Lines changed: 87 additions & 8 deletions

File tree

CHANGELOG

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
#TESTAR v2.8.7 (6-Apr-2026)
2+
- Bump io.github.bonigarcia:webdrivermanager from 6.3.3 to 6.3.4
3+
- Fix parse llm selected ESC action
4+
- Add WdDriver configurable user data and profile
5+
6+
17
#TESTAR v2.8.6 (24-Mar-2026)
28
- Remove linux AtSpi subproject
39
- Remove unused Tags

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.8.6
1+
2.8.7

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ subprojects {
3535
// https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java
3636
implementation group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.41.0'
3737
// https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager
38-
implementation group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '6.3.3'
38+
implementation group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '6.3.4'
3939
// https://mvnrepository.com/artifact/io.appium/java-client
4040
implementation group: 'io.appium', name: 'java-client', version: '10.1.0'
4141
// https://mvnrepository.com/artifact/com.orientechnologies/orientdb-graphdb

testar/src/org/testar/action/priorization/llm/LlmParseActionResponse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.logging.log4j.Level;
3737
import org.apache.logging.log4j.LogManager;
3838
import org.apache.logging.log4j.Logger;
39+
import org.testar.monkey.Util;
3940
import org.testar.monkey.alayer.Action;
4041
import org.testar.monkey.alayer.Color;
4142
import org.testar.monkey.alayer.FillPattern;
@@ -189,7 +190,7 @@ private boolean updateTextAction(Action action, Action innerAction, String input
189190
String widgetDesc = action.get(Tags.OriginWidget).get(Tags.Desc, "<no description>");
190191
action.set(Tags.Desc, innerAction.getClass().getSimpleName() + " '" + inputText + "' into '" + widgetDesc + "'");
191192

192-
if(action.get(Tags.Visualizer) instanceof TextVisualizer) {
193+
if(action.get(Tags.Visualizer, Util.NullVisualizer) instanceof TextVisualizer) {
193194
TextVisualizer textVisualizer = (TextVisualizer) action.get(Tags.Visualizer);
194195
Pen newPen = Pen.newPen().setColor(Color.Red).setFillPattern(FillPattern.Solid).setStrokeWidth(50).build();
195196
action.set(Tags.Visualizer, textVisualizer.withText(inputText, newPen));

testar/src/org/testar/monkey/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565

6666
public class Main {
6767

68-
public static final String TESTAR_VERSION = "v2.8.6 (24-Mar-2026)";
68+
public static final String TESTAR_VERSION = "v2.8.7 (6-Apr-2026)";
6969

7070
//public static final String TESTAR_DIR_PROPERTY = "DIRNAME"; //Use the OS environment to obtain TESTAR directory
7171
public static final String SETTINGS_FILE = "test.settings";

testar/test/org/testar/action/priorization/llm/TestLlmParseActionResponse.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.testar.action.priorization.llm;
22

3+
import static org.junit.Assert.assertEquals;
4+
35
import java.util.HashSet;
46
import java.util.Set;
57

@@ -12,6 +14,8 @@
1214
import org.testar.monkey.alayer.actions.CompoundAction;
1315
import org.testar.monkey.alayer.actions.StdActionCompiler;
1416
import org.testar.monkey.alayer.actions.Type;
17+
import org.testar.monkey.alayer.actions.WdCloseTabAction;
18+
import org.testar.monkey.alayer.actions.WdHistoryBackAction;
1519
import org.testar.monkey.alayer.actions.WdRemoteScrollTypeAction;
1620
import org.testar.monkey.alayer.actions.WdRemoteTypeAction;
1721
import org.testar.monkey.alayer.actions.WdSelectListAction;
@@ -222,6 +226,42 @@ public void test_llm_selects_android_type_action() {
222226
Assert.isTrue(innerText.equals("testar"));
223227
}
224228

229+
@Test
230+
public void test_parsing_hit_escape_action() {
231+
String llmResponse = "```json{\"actionId\":\"AID_HitEsc\",\"input\":\"\"}```";
232+
Set<Action> derivedActions = createDefaultDerivedActions(createState());
233+
234+
LlmParseActionResponse llmParseResponse = new LlmParseActionResponse();
235+
LlmParseActionResult llmParseResult = llmParseResponse.parseLlmResponse(derivedActions, llmResponse);
236+
237+
assertEquals(LlmParseActionResult.ParseResult.SUCCESS, llmParseResult.getParseResult());
238+
assertEquals("AID_HitEsc", llmParseResult.getActionToExecute().get(Tags.AbstractID));
239+
}
240+
241+
@Test
242+
public void test_parsing_wd_navigate_back_action() {
243+
String llmResponse = "```json{\"actionId\":\"AID_NavBack\",\"input\":\"\"}```";
244+
Set<Action> derivedActions = createDefaultDerivedActions(createState());
245+
246+
LlmParseActionResponse llmParseResponse = new LlmParseActionResponse();
247+
LlmParseActionResult llmParseResult = llmParseResponse.parseLlmResponse(derivedActions, llmResponse);
248+
249+
assertEquals(LlmParseActionResult.ParseResult.SUCCESS, llmParseResult.getParseResult());
250+
assertEquals("AID_NavBack", llmParseResult.getActionToExecute().get(Tags.AbstractID));
251+
}
252+
253+
@Test
254+
public void test_parsing_wd_close_tab_action() {
255+
String llmResponse = "```json{\"actionId\":\"AID_CloseTab\",\"input\":\"\"}```";
256+
Set<Action> derivedActions = createDefaultDerivedActions(createState());
257+
258+
LlmParseActionResponse llmParseResponse = new LlmParseActionResponse();
259+
LlmParseActionResult llmParseResult = llmParseResponse.parseLlmResponse(derivedActions, llmResponse);
260+
261+
assertEquals(LlmParseActionResult.ParseResult.SUCCESS, llmParseResult.getParseResult());
262+
assertEquals("AID_CloseTab", llmParseResult.getActionToExecute().get(Tags.AbstractID));
263+
}
264+
225265
private static StateStub createState() {
226266
StateStub createdState = new StateStub();
227267
createdState.set(WdTags.WebTitle, "Page Title | State");
@@ -241,6 +281,9 @@ private static Set<Action> createDefaultDerivedActions(StateStub state) {
241281
derivedActions.add(createSelectAction(state, "combobox_widget_desc", "combobox_widget_web_id",
242282
"CID_combobox_widget", "AID_combobox_widget", "CID_select", "AID_select", "Saab"));
243283
derivedActions.add(createAndroidTypeAction(state));
284+
derivedActions.add(createHitEscAction(state, "CID_HitEsc", "AID_HitEsc"));
285+
derivedActions.add(createWdHistoryBackAction(state, "CID_NavBack", "AID_NavBack"));
286+
derivedActions.add(createWdCloseTabAction(state, "CID_CloseTab", "AID_CloseTab"));
244287
return derivedActions;
245288
}
246289

@@ -321,4 +364,25 @@ private static Action createAndroidTypeAction(StateStub parentState) {
321364
return action;
322365
}
323366

367+
private static Action createHitEscAction(StateStub parentState, String actionConcreteId, String actionAbstractId) {
368+
Action action = ac.hitESC(parentState);
369+
action.set(Tags.ConcreteID, actionConcreteId);
370+
action.set(Tags.AbstractID, actionAbstractId);
371+
return action;
372+
}
373+
374+
private static Action createWdHistoryBackAction(StateStub parentState, String actionConcreteId, String actionAbstractId) {
375+
Action action = new WdHistoryBackAction(parentState);
376+
action.set(Tags.ConcreteID, actionConcreteId);
377+
action.set(Tags.AbstractID, actionAbstractId);
378+
return action;
379+
}
380+
381+
private static Action createWdCloseTabAction(StateStub parentState, String actionConcreteId, String actionAbstractId) {
382+
Action action = new WdCloseTabAction(parentState);
383+
action.set(Tags.ConcreteID, actionConcreteId);
384+
action.set(Tags.AbstractID, actionAbstractId);
385+
return action;
386+
}
387+
324388
}

webdriver/src/org/testar/monkey/alayer/webdriver/WdDriver.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
2-
* Copyright (c) 2018 - 2025 Open Universiteit - www.ou.nl
3-
* Copyright (c) 2019 - 2025 Universitat Politecnica de Valencia - www.upv.es
2+
* Copyright (c) 2018 - 2026 Open Universiteit - www.ou.nl
3+
* Copyright (c) 2019 - 2026 Universitat Politecnica de Valencia - www.upv.es
44
*
55
* Redistribution and use in source and binary forms, with or without
66
* modification, are permitted provided that the following conditions are met:
@@ -74,6 +74,8 @@ public class WdDriver extends SUTBase {
7474
public static boolean disableSecurity = false;
7575
public static boolean remoteDebugging = false;
7676
public static boolean disableGPU = true;
77+
public static String userDataDir = "";
78+
public static String profileDirectory = "";
7779

7880
private final Keyboard kbd = AWTKeyboard.build();
7981
private final Mouse mouse = WdMouse.build();

webdriver/src/org/testar/webdriver/manager/WdChromeManager.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
2-
* Copyright (c) 2025 Universitat Politecnica de Valencia - www.upv.es
3-
* Copyright (c) 2025 Open Universiteit - www.ou.nl
2+
* Copyright (c) 2025 - 2026 Universitat Politecnica de Valencia - www.upv.es
3+
* Copyright (c) 2025 - 2026 Open Universiteit - www.ou.nl
44
*
55
* Redistribution and use in source and binary forms, with or without
66
* modification, are permitted provided that the following conditions are met:
@@ -103,6 +103,12 @@ public RemoteWebDriver createWebDriver(String chromeForTestingPath, String exten
103103
if(WdDriver.disableGPU) {
104104
options.addArguments("--disable-gpu");
105105
}
106+
if(WdDriver.userDataDir != null && !WdDriver.userDataDir.isEmpty()) {
107+
options.addArguments("--user-data-dir=" + WdDriver.userDataDir);
108+
}
109+
if(WdDriver.profileDirectory != null && !WdDriver.profileDirectory.isEmpty()) {
110+
options.addArguments("--profile-directory=" + WdDriver.profileDirectory);
111+
}
106112

107113
Map<String, Object> prefs = new HashMap<>();
108114
prefs.put("profile.default_content_setting_values.notifications", 1);

0 commit comments

Comments
 (0)