Closed sbrunk closed 3 years ago
FTR: The testing framework in question is Scalatest.
@sbrunk what browser (which Selenium Capabilities) is this occurring with?
From the top of my head, I have two theories why this might be happening:
Status
. If this is the case, it is most likely in a case where something in the test fails (because these codepaths are much less well tested).Thanks for the pointers @gzm0. The browser is Chrome 87 using the following settings:
jsEnv in Test := {
val debugging = false // set to true to help debugging
System.setProperty("webdriver.chrome.driver", "target/chromedriver")
new org.scalajs.jsenv.selenium.SeleniumJSEnv(
{
val options = new org.openqa.selenium.chrome.ChromeOptions()
val args = Seq(
"auto-open-devtools-for-tabs", // devtools needs to be open to capture network requests
"no-sandbox",
"allow-file-access-from-files" // change the origin header from 'null' to 'file'
) ++ (if (debugging) Seq.empty else Seq("headless"))
options.addArguments(args: _*)
val capabilities =
org.openqa.selenium.remote.DesiredCapabilities.chrome()
capabilities.setCapability(
org.openqa.selenium.chrome.ChromeOptions.CAPABILITY,
options
)
capabilities
},
org.scalajs.jsenv.selenium.SeleniumJSEnv
.Config()
.withKeepAlive(debugging)
)
}
/cc @adamw
Just to be certain: Does his problem still happen if you remove all the arguments to the chrome driver?
Potentially related: scala-js/scala-js-env-selenium/issues/105
@gzm0 yes, setting
jsEnv in Test := {
new org.scalajs.jsenv.selenium.SeleniumJSEnv(new org.openqa.selenium.chrome.ChromeOptions())
}
still exhibits the same behavior. I'll try to set it up with Firefox for comparison.
e.g. replace bad surrogate pairs with placeholder characters
It seems that our serialization only passes through ASCII characters. So this shouldn't be a problem. Now, maybe null bytes are a problem for certain drivers.
The tests pass without issues with Firefox/geckodriver using the default settings:
jsEnv := new org.scalajs.jsenv.selenium.SeleniumJSEnv(new org.openqa.selenium.firefox.FirefoxOptions())
So the issue seems to be chrome related indeed.
@sbrunk I'm fine with using firefox instead of chrome, if that would solve the problem, as long as the binaries are automatically downloaded and works on macos/linux :)
I am transferring this to scala-js-env-selenium.
Given what I have just found out about #105 (chrome doesn't handle messages containing 0x7F
), this is very likely a dupe.
@sbrunk this should be fixed with chrome 89 (no update to scala-js-env-selenium is required).
@gzm0 thanks for the update. I'll try to confirm that the tapir tests affected by this pass on chrome as soon as chromedriver 89 is available.
@sbrunk I think chromedriver 89 is now available? if you could verify this with tapir, it would be great :)
@adamw I just checked and I can confirm that the error does not occur anymore with Chrome 89. So I guess this issue can be closed. Thanks @gzm0 for getting to the root cause.
We're seeing
JSEnvRPC$RunTerminatedException
failures in a few tests while running them via scala-js-env-selenium. It seems to be caused by the following exception:I haven't been able to minimize the issue yet, but it's reproducable by checking out the branch to https://github.com/softwaremill/tapir/pull/860 and then running
sbt sttpClientJS/test
(it only occurs when running one of these four tests).Versions: Scala: 2.13.4, Scala.js: 1.3.1, sbt: 1.4.4
Full stack trace: