diff --git a/karate-core/README.md b/karate-core/README.md index 16ceb91e8..cd7e58c6a 100644 --- a/karate-core/README.md +++ b/karate-core/README.md @@ -404,9 +404,9 @@ The [`configure driver`](#configure-driver) options are fine for testing on "`lo ```java public interface Target { - Map start(com.intuit.karate.Logger logger); + Map start(com.intuit.karate.core.ScenarioRuntime sr); - Map stop(com.intuit.karate.Logger logger); + Map stop(com.intuit.karate.core.ScenarioRuntime sr); } ``` @@ -415,7 +415,7 @@ public interface Target { * `stop()`: Karate will call this method at the end of every top-level `Scenario` (that has not been `call`-ed by another `Scenario`). -If you use the provided `Logger` instance in your `Target` code, any logging you perform will nicely appear in-line with test-steps in the HTML report, which is great for troubleshooting or debugging tests. +If you use the provided `ScenarioRuntime.logger` instance in your `Target` code, any logging you perform will nicely appear in-line with test-steps in the HTML report, which is great for troubleshooting or debugging tests. Combined with Docker, headless Chrome and Karate's [parallel-execution capabilities](https://github.com/intuit/karate#parallel-execution) - this simple `start()` and `stop()` lifecycle can effectively run web UI automation tests in parallel on a single node. diff --git a/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java b/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java index 3a034eabf..54ae908b6 100644 --- a/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java +++ b/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java @@ -854,7 +854,7 @@ public void driver(String exp) { if (v.isMap()) { options.putAll(v.getValue()); } - setDriver(DriverOptions.start(options, logger, runtime.getLogAppender())); + setDriver(DriverOptions.start(options, runtime)); } if (v.isString()) { driver.setUrl(v.getAsString()); @@ -934,7 +934,7 @@ public void stop(StepResult lastStepResult) { } if (options.target != null) { logger.debug("custom target configured, attempting stop()"); - Map map = options.target.stop(logger); + Map map = options.target.stop(runtime); String video = (String) map.get("video"); embedVideo(video); } else { diff --git a/karate-core/src/main/java/com/intuit/karate/core/ScenarioRuntime.java b/karate-core/src/main/java/com/intuit/karate/core/ScenarioRuntime.java index b8da7d827..621ebf97e 100644 --- a/karate-core/src/main/java/com/intuit/karate/core/ScenarioRuntime.java +++ b/karate-core/src/main/java/com/intuit/karate/core/ScenarioRuntime.java @@ -29,6 +29,7 @@ import com.intuit.karate.Logger; import com.intuit.karate.RuntimeHook; import com.intuit.karate.ScenarioActions; +import com.intuit.karate.Suite; import com.intuit.karate.debug.DebugThread; import com.intuit.karate.http.ResourceType; import com.intuit.karate.shell.StringLogAppender; diff --git a/karate-core/src/main/java/com/intuit/karate/driver/DockerTarget.java b/karate-core/src/main/java/com/intuit/karate/driver/DockerTarget.java index 9c07346bc..c691b0b16 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/DockerTarget.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/DockerTarget.java @@ -26,6 +26,7 @@ import com.intuit.karate.FileUtils; import com.intuit.karate.Logger; import com.intuit.karate.StringUtils; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.shell.Command; import java.io.File; import java.util.Collections; @@ -91,12 +92,12 @@ public Function getCommand() { } @Override - public Map start(Logger logger) { + public Map start(ScenarioRuntime sr) { if (command == null) { throw new RuntimeException("docker target command (function) not set"); } if (imageId != null && pull) { - logger.debug("attempting to pull docker image: {}", imageId); + sr.logger.debug("attempting to pull docker image: {}", imageId); Command.execLine(null, "docker pull " + imageId); } int port = Command.getFreePort(0); @@ -111,26 +112,29 @@ public Map start(Logger logger) { Command.waitForHttp("http://127.0.0.1:" + port + "/json"); return map; } + + @Override - public Map stop(Logger logger) { + public Map stop(ScenarioRuntime sr) { Command.execLine(null, "docker stop " + containerId); if (!karateChrome) { // no video Command.execLine(null, "docker rm " + containerId); return Collections.EMPTY_MAP; } String shortName = containerId.contains("_") ? containerId : StringUtils.truncate(containerId, 12, false); - String dirName = "karate-chrome_" + shortName; - String resultsDir = Command.getBuildDir() + File.separator + dirName; + String dirName = "karate-chrome_" + shortName; + String buildDir = sr.featureRuntime.suite.buildDir; + String resultsDir = buildDir + File.separator + dirName; Command.execLine(null, "docker cp " + containerId + ":/tmp " + resultsDir); Command.execLine(null, "docker rm " + containerId); String video = resultsDir + File.separator + "karate.mp4"; File file = new File(video); if (!file.exists()) { - logger.warn("video file missing: {}", file); + sr.logger.warn("video file missing: {}", file); return Collections.EMPTY_MAP; } - File copy = new File(Command.getBuildDir() + File.separator + dirName + ".mp4"); + File copy = new File(buildDir + File.separator + dirName + ".mp4"); FileUtils.copy(file, copy); return Collections.singletonMap("video", "../" + copy.getName()); } diff --git a/karate-core/src/main/java/com/intuit/karate/driver/Driver.java b/karate-core/src/main/java/com/intuit/karate/driver/Driver.java index de330a7a1..697060d85 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/Driver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/Driver.java @@ -23,8 +23,6 @@ */ package com.intuit.karate.driver; -import com.intuit.karate.LogAppender; -import com.intuit.karate.Logger; import com.intuit.karate.core.AutoDef; import com.intuit.karate.core.Plugin; import com.intuit.karate.core.Config; @@ -52,10 +50,9 @@ public static Driver start(String browserType) { } public static Driver start(Map options) { - Logger logger = new Logger(); ScenarioRuntime runtime = FeatureRuntime.forTempUse().scenarios.next(); ScenarioEngine.set(runtime.engine); - return DriverOptions.start(options, logger, LogAppender.NO_OP); + return DriverOptions.start(options, runtime); } @AutoDef diff --git a/karate-core/src/main/java/com/intuit/karate/driver/DriverOptions.java b/karate-core/src/main/java/com/intuit/karate/driver/DriverOptions.java index 73052fb20..8f624afff 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/DriverOptions.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/DriverOptions.java @@ -42,6 +42,7 @@ import com.intuit.karate.driver.playwright.PlaywrightDriver; import com.intuit.karate.core.Config; import com.intuit.karate.core.ScenarioEngine; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.shell.Command; import java.io.File; @@ -134,9 +135,9 @@ private T get(String key, T defaultValue) { return temp == null ? defaultValue : temp; } - public DriverOptions(Map options, LogAppender appender, int defaultPort, String defaultExecutable) { + public DriverOptions(Map options, ScenarioRuntime sr, int defaultPort, String defaultExecutable) { this.options = options; - this.appender = appender; + this.appender = sr.logAppender; logger = new Logger(getClass()); logger.setAppender(appender); timeout = get("timeout", Config.DEFAULT_TIMEOUT); @@ -271,56 +272,56 @@ public Command startProcess(Consumer listener) { return command; } - public static Driver start(Map options, Logger logger, LogAppender appender) { // TODO unify logger + public static Driver start(Map options, ScenarioRuntime sr) { // TODO unify logger Target target = (Target) options.get("target"); if (target != null) { - logger.debug("custom target configured, calling start()"); - Map map = target.start(logger); - logger.trace("custom target returned options: {}", map); + sr.logger.debug("custom target configured, calling start()"); + Map map = target.start(sr); + sr.logger.trace("custom target returned options: {}", map); options.putAll(map); } String type = (String) options.get("type"); if (type == null) { - logger.warn("type was null, defaulting to 'chrome'"); + sr.logger.warn("type was null, defaulting to 'chrome'"); type = "chrome"; options.put("type", type); } try { // to make troubleshooting errors easier switch (type) { case "chrome": - return Chrome.start(options, appender); + return Chrome.start(options, sr); case "msedge": - return EdgeChromium.start(options, appender); + return EdgeChromium.start(options, sr); case "chromedriver": - return ChromeWebDriver.start(options, appender); + return ChromeWebDriver.start(options, sr); case "geckodriver": - return GeckoWebDriver.start(options, appender); + return GeckoWebDriver.start(options, sr); case "safaridriver": - return SafariWebDriver.start(options, appender); + return SafariWebDriver.start(options, sr); case "msedgedriver": - return MsEdgeDriver.start(options, appender); + return MsEdgeDriver.start(options, sr); case "mswebdriver": - return MsWebDriver.start(options, appender); + return MsWebDriver.start(options, sr); case "iedriver": - return IeWebDriver.start(options, appender); + return IeWebDriver.start(options, sr); case "winappdriver": - return WinAppDriver.start(options, appender); + return WinAppDriver.start(options, sr); case "android": - return AndroidDriver.start(options, appender); + return AndroidDriver.start(options, sr); case "ios": - return IosDriver.start(options, appender); + return IosDriver.start(options, sr); case "playwright": - return PlaywrightDriver.start(options, appender); + return PlaywrightDriver.start(options, sr); default: - logger.warn("unknown driver type: {}, defaulting to 'chrome'", type); + sr.logger.warn("unknown driver type: {}, defaulting to 'chrome'", type); options.put("type", "chrome"); - return Chrome.start(options, appender); + return Chrome.start(options, sr); } } catch (Exception e) { String message = "driver config / start failed: " + e.getMessage() + ", options: " + options; - logger.error(message, e); + sr.logger.error(message, e); if (target != null) { - target.stop(logger); + target.stop(sr); } throw new RuntimeException(message, e); } diff --git a/karate-core/src/main/java/com/intuit/karate/driver/Target.java b/karate-core/src/main/java/com/intuit/karate/driver/Target.java index a09806fa1..fd13fa0f8 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/Target.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/Target.java @@ -23,7 +23,7 @@ */ package com.intuit.karate.driver; -import com.intuit.karate.Logger; +import com.intuit.karate.core.ScenarioRuntime; import java.util.Map; /** @@ -32,8 +32,8 @@ */ public interface Target { - Map start(Logger logger); + Map start(ScenarioRuntime sr); - Map stop(Logger logger); + Map stop(ScenarioRuntime sr); } diff --git a/karate-core/src/main/java/com/intuit/karate/driver/appium/AndroidDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/appium/AndroidDriver.java index 54e86719e..0b2f3afa0 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/appium/AndroidDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/appium/AndroidDriver.java @@ -1,7 +1,7 @@ package com.intuit.karate.driver.appium; import com.intuit.karate.FileUtils; -import com.intuit.karate.LogAppender; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverOptions; import java.util.Map; @@ -14,8 +14,8 @@ protected AndroidDriver(DriverOptions options) { super(options); } - public static AndroidDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 4723, FileUtils.isOsWindows() ? "cmd.exe" : "appium"); + public static AndroidDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 4723, FileUtils.isOsWindows() ? "cmd.exe" : "appium"); // additional commands needed to start appium on windows if (FileUtils.isOsWindows()){ options.arg("/C"); diff --git a/karate-core/src/main/java/com/intuit/karate/driver/appium/IosDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/appium/IosDriver.java index f4d20fb17..49612f322 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/appium/IosDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/appium/IosDriver.java @@ -1,6 +1,6 @@ package com.intuit.karate.driver.appium; -import com.intuit.karate.LogAppender; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverOptions; import java.util.Map; @@ -13,8 +13,8 @@ public IosDriver(DriverOptions options) { super(options); } - public static IosDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 4723, "appium"); + public static IosDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 4723, "appium"); options.arg("--port=" + options.port); return new IosDriver(options); } diff --git a/karate-core/src/main/java/com/intuit/karate/driver/chrome/Chrome.java b/karate-core/src/main/java/com/intuit/karate/driver/chrome/Chrome.java index a33011961..c9aa04461 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/chrome/Chrome.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/chrome/Chrome.java @@ -25,7 +25,7 @@ import com.intuit.karate.FileUtils; import com.intuit.karate.Http; -import com.intuit.karate.LogAppender; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.shell.Command; import com.intuit.karate.driver.DevToolsDriver; import com.intuit.karate.driver.DriverOptions; @@ -49,8 +49,8 @@ public Chrome(DriverOptions options, Command command, String webSocketUrl) { super(options, command, webSocketUrl); } - public static Chrome start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 9222, + public static Chrome start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 9222, FileUtils.isOsWindows() ? DEFAULT_PATH_WIN : FileUtils.isOsMacOsX() ? DEFAULT_PATH_MAC : DEFAULT_PATH_LINUX); options.arg("--remote-debugging-port=" + options.port); options.arg("--no-first-run"); diff --git a/karate-core/src/main/java/com/intuit/karate/driver/chrome/ChromeWebDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/chrome/ChromeWebDriver.java index 5507b37c3..da19d8a59 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/chrome/ChromeWebDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/chrome/ChromeWebDriver.java @@ -24,7 +24,7 @@ package com.intuit.karate.driver.chrome; import com.intuit.karate.FileUtils; -import com.intuit.karate.LogAppender; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverOptions; import com.intuit.karate.driver.WebDriver; import com.intuit.karate.http.Response; @@ -40,8 +40,8 @@ public ChromeWebDriver(DriverOptions options) { super(options); } - public static ChromeWebDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 9515, "chromedriver"); + public static ChromeWebDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 9515, "chromedriver"); options.arg("--port=" + options.port); if (options.userDataDir != null) { options.arg("--user-data-dir=" + options.userDataDir); diff --git a/karate-core/src/main/java/com/intuit/karate/driver/firefox/GeckoWebDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/firefox/GeckoWebDriver.java index ec69e275e..4a2874346 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/firefox/GeckoWebDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/firefox/GeckoWebDriver.java @@ -24,8 +24,8 @@ package com.intuit.karate.driver.firefox; import com.intuit.karate.FileUtils; -import com.intuit.karate.LogAppender; import com.intuit.karate.Json; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverOptions; import com.intuit.karate.driver.WebDriver; import java.util.Map; @@ -40,8 +40,8 @@ public GeckoWebDriver(DriverOptions options) { super(options); } - public static GeckoWebDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 4444, "geckodriver"); + public static GeckoWebDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 4444, "geckodriver"); options.arg("--port=" + options.port); return new GeckoWebDriver(options); } diff --git a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/EdgeChromium.java b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/EdgeChromium.java index 5bd5036e7..4969d59a4 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/EdgeChromium.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/EdgeChromium.java @@ -25,7 +25,7 @@ import com.intuit.karate.FileUtils; import com.intuit.karate.Http; -import com.intuit.karate.LogAppender; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DevToolsDriver; import com.intuit.karate.driver.DriverOptions; import com.intuit.karate.http.Response; @@ -50,11 +50,11 @@ public EdgeChromium(DriverOptions options, Command command, String webSocketUrl) super(options, command, webSocketUrl); } - public static EdgeChromium start(Map map, LogAppender appender) { + public static EdgeChromium start(Map map, ScenarioRuntime sr) { if (!FileUtils.isOsWindows() && !FileUtils.isOsMacOsX()) { throw new UnsupportedOperationException("edge browser is not yet available on linux!"); } - DriverOptions options = new DriverOptions(map, appender, 9222, + DriverOptions options = new DriverOptions(map, sr, 9222, FileUtils.isOsWindows() ? DEFAULT_PATH_WIN : FileUtils.isOsMacOsX() ? DEFAULT_PATH_MAC : DEFAULT_PATH_LINUX); options.arg("--remote-debugging-port=" + options.port); options.arg("--no-first-run"); diff --git a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/IeWebDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/IeWebDriver.java index 445f8d768..55e4d0cfd 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/IeWebDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/IeWebDriver.java @@ -23,7 +23,7 @@ */ package com.intuit.karate.driver.microsoft; -import com.intuit.karate.LogAppender; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverOptions; import com.intuit.karate.driver.WebDriver; import java.util.Map; @@ -38,8 +38,8 @@ public IeWebDriver(DriverOptions options) { super(options); } - public static IeWebDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 5555, "IEDriverServer"); + public static IeWebDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 5555, "IEDriverServer"); options.arg("port=" + options.port); return new IeWebDriver(options); } diff --git a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/MsEdgeDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/MsEdgeDriver.java index 08b78d52f..b0ecf1fe0 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/MsEdgeDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/MsEdgeDriver.java @@ -23,7 +23,7 @@ */ package com.intuit.karate.driver.microsoft; -import com.intuit.karate.LogAppender; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverOptions; import com.intuit.karate.driver.WebDriver; import java.util.Map; @@ -38,8 +38,8 @@ public MsEdgeDriver(DriverOptions options) { super(options); } - public static MsEdgeDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 9515, "msedgedriver"); + public static MsEdgeDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 9515, "msedgedriver"); options.arg("--port=" + options.port); return new MsEdgeDriver(options); } diff --git a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/MsWebDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/MsWebDriver.java index 7ed2a3540..674c54661 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/MsWebDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/MsWebDriver.java @@ -23,8 +23,8 @@ */ package com.intuit.karate.driver.microsoft; -import com.intuit.karate.LogAppender; import com.intuit.karate.Json; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverOptions; import com.intuit.karate.driver.WebDriver; import java.util.Map; @@ -39,8 +39,8 @@ public MsWebDriver(DriverOptions options) { super(options); } - public static MsWebDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 17556, "MicrosoftWebDriver"); + public static MsWebDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 17556, "MicrosoftWebDriver"); options.arg("--port=" + options.port); return new MsWebDriver(options); } diff --git a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/WinAppDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/WinAppDriver.java index e431a3d18..e2e7317b7 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/microsoft/WinAppDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/microsoft/WinAppDriver.java @@ -23,8 +23,8 @@ */ package com.intuit.karate.driver.microsoft; -import com.intuit.karate.LogAppender; import com.intuit.karate.Json; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverElement; import com.intuit.karate.driver.DriverOptions; import com.intuit.karate.driver.Element; @@ -41,8 +41,8 @@ public WinAppDriver(DriverOptions options) { super(options); } - public static WinAppDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 4727, + public static WinAppDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 4727, "C:/Program Files (x86)/Windows Application Driver/WinAppDriver"); options.arg(options.port + ""); return new WinAppDriver(options); diff --git a/karate-core/src/main/java/com/intuit/karate/driver/playwright/PlaywrightDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/playwright/PlaywrightDriver.java index 1a4aee362..dbb7d36a0 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/playwright/PlaywrightDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/playwright/PlaywrightDriver.java @@ -23,11 +23,11 @@ */ package com.intuit.karate.driver.playwright; -import com.intuit.karate.LogAppender; import com.intuit.karate.Logger; import com.intuit.karate.StringUtils; import com.intuit.karate.Json; import com.intuit.karate.JsonUtils; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.Driver; import com.intuit.karate.driver.DriverElement; @@ -101,8 +101,8 @@ public void waitSync() { client.waitSync(); } - public static PlaywrightDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 4444, "playwright"); + public static PlaywrightDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 4444, "playwright"); String playwrightUrl; Command command; if (options.start) { diff --git a/karate-core/src/main/java/com/intuit/karate/driver/safari/SafariWebDriver.java b/karate-core/src/main/java/com/intuit/karate/driver/safari/SafariWebDriver.java index 650cc2587..76acbb8cb 100644 --- a/karate-core/src/main/java/com/intuit/karate/driver/safari/SafariWebDriver.java +++ b/karate-core/src/main/java/com/intuit/karate/driver/safari/SafariWebDriver.java @@ -24,8 +24,8 @@ package com.intuit.karate.driver.safari; import com.intuit.karate.FileUtils; -import com.intuit.karate.LogAppender; import com.intuit.karate.JsonUtils; +import com.intuit.karate.core.ScenarioRuntime; import com.intuit.karate.driver.DriverOptions; import com.intuit.karate.driver.WebDriver; import java.util.Map; @@ -40,8 +40,8 @@ public SafariWebDriver(DriverOptions options) { super(options); } - public static SafariWebDriver start(Map map, LogAppender appender) { - DriverOptions options = new DriverOptions(map, appender, 5555, "safaridriver"); + public static SafariWebDriver start(Map map, ScenarioRuntime sr) { + DriverOptions options = new DriverOptions(map, sr, 5555, "safaridriver"); options.arg("--port=" + options.port); return new SafariWebDriver(options); } diff --git a/karate-core/src/main/java/com/intuit/karate/shell/Command.java b/karate-core/src/main/java/com/intuit/karate/shell/Command.java index 7b90770da..c3d204661 100644 --- a/karate-core/src/main/java/com/intuit/karate/shell/Command.java +++ b/karate-core/src/main/java/com/intuit/karate/shell/Command.java @@ -136,10 +136,6 @@ public static String execLine(File workingDir, String command) { return exec(false, workingDir, tokenize(command)); } - public static String getBuildDir() { - return FileUtils.getBuildDir(); - } - public static String[] prefixShellArgs(String[] args) { List list = new ArrayList(); switch (FileUtils.getOsType()) { diff --git a/karate-core/src/test/java/com/intuit/karate/driver/DriverOptionsTest.java b/karate-core/src/test/java/com/intuit/karate/driver/DriverOptionsTest.java index 8f03c7d02..7d4350d29 100644 --- a/karate-core/src/test/java/com/intuit/karate/driver/DriverOptionsTest.java +++ b/karate-core/src/test/java/com/intuit/karate/driver/DriverOptionsTest.java @@ -1,5 +1,6 @@ package com.intuit.karate.driver; +import com.intuit.karate.TestUtils; import java.util.Collections; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; @@ -31,7 +32,7 @@ void testPreProcess() { @Test void testRetry() { - DriverOptions options = new DriverOptions(Collections.EMPTY_MAP, null, 0, null); + DriverOptions options = new DriverOptions(Collections.EMPTY_MAP, TestUtils.runtime(), 0, null); options.retry(() -> 1, x -> x < 5, "not 5", false); }