After some more digging, I found that this is essentially what rules_webtesting is doing when you call java_web_test_suite:
The reason the test fails with a MalformedURLException is because the WEB_TEST_WEBDRIVER_SERVER is never set because instead of the java_test being run by the web_test, it is running independently. Accordingly, the Selenium server never starts, that environment variable is never set, and things fail.
I've been poking at the IntelliJ plugin and rules_webtesting without much progress. I tried to change rules_webtesting to do something like this, but I don't believe this is possible with Bazel:
I'm not familiar enough with the IntelliJ plugin to know if it is feasible to tell java_tests from java_web_test_suites to execute the web_test instead of the java_test.
I would love to get people's thoughts on whether this is possible, and if it is, then a potential path forward.
I noticed that rules_webtesting has some strange behavior when combined with https://github.com/bazelbuild/intellij
I created an simple example project, which imports to IntelliJ to make things easy to reproduce: https://github.com/lucidsoftware/rules_webtesting_intellij_example
Normally with IntelliJ + Bazel, when you create a
java_test
there are icons in the gutter of your test file, that enable you to run the test:When you create a
java_web_test_suite
, these same icons show up, but they don't do anyything:After some digging I found that it is because of the
manual
tag set by default inconstants.bzl
https://github.com/bazelbuild/rules_webtesting/blob/master/web/internal/constants.bzl#L16If you set some tags on your
java_web_test_suite
. For example,java_test_tags = ["foo"]
here https://github.com/lucidsoftware/rules_webtesting_intellij_example/blob/master/com/google/testing/web/BUILD.bazel#L26Then the test fails with a
MalformedURLException
:Thrown here: https://github.com/bazelbuild/rules_webtesting/blob/master/java/com/google/testing/web/WebTest.java#L60
After some more digging, I found that this is essentially what rules_webtesting is doing when you call
java_web_test_suite
:The reason the test fails with a
MalformedURLException
is because theWEB_TEST_WEBDRIVER_SERVER
is never set because instead of thejava_test
being run by theweb_test
, it is running independently. Accordingly, the Selenium server never starts, that environment variable is never set, and things fail.I've been poking at the IntelliJ plugin and rules_webtesting without much progress. I tried to change rules_webtesting to do something like this, but I don't believe this is possible with Bazel:
I'm not familiar enough with the IntelliJ plugin to know if it is feasible to tell
java_test
s fromjava_web_test_suite
s to execute theweb_test
instead of thejava_test
.I would love to get people's thoughts on whether this is possible, and if it is, then a potential path forward.