Stephen,
- Yes. Each test has its own instance of the WebDriver. This is no different than if you would run the tests locally, each test requires an instance of the web driver (i.e. session) that drives the correspondent browser.
- Same as the above.
- Test cases have no idea about the executors, they only know the hub (i.e. Linux server). The hub gets the request for the RemoteWebDriver, if it has free executors, it will connect the requester with the VM (i.e. executor). If there are no machines available, then there are multiple ways that this is handled. At this time, if the call to remote driver will return "Hub busy please tray again later".
- A) A selenium java test cannot be imported anywhere because of many complications. For one, the test maybe using many dependent libraries and other logic inside of it. Or it could have been written in different languages like Python, C# etc. The main idea of Selenium Remote Driver is to exactly deal with this issue.
B) A Java test case is much more complicated to be represented in JSON free form, so makes no sense to do this.
C) This is not the intention of the Selenium Architecture of hub and JSON Wire Protocol.
Please take a look at https://www.lambdatest.com/blog/selenium-remotewebdriver/
Hope this helps
--Rex