Here is my test code:
Scenario("1", async (I, pages, api, common, date) => {
I.wait(2)
session("customer", browserstack_desktop_configuration, async () => {
I.wait(3)
})
})
Scenario("2", async (I, pages, api, common, date) => {
I.wait(2)
session("customer", browserstack_desktop_configuration, async () => {
I.wait(3)
})
});
browserstack_desktop_configuration and browserstack_desktop_configuration is global configurations, they have different host and port, like:
browserstack_desktop_configuration: {
host:”a”,
port:8080
},
browserstack_desktop_configuration:{
host:”b”,
port:80
}
During scenario 1 execution, it using browserstack_desktop_configuration correctly, and start internal ‘customer’ session with browserstack_desktop_configuration configuration correctly. The tracky is, Before scenario 2 execution, the webdriver configuration change to :
{hostname:”a”,
host:”b”,
port:80
}, underline webdriverio is using hostname and port to start remote browser, so it throws below error message:
Can't connect to WebDriver.
Error: Failed to create session.
Unable to connect to "http://a:80/wd/hub", make sure browser driver is running on that address.
If you use services like chromedriver see initialiseServices logs above or in wdio.log file as the service might had problems to start the driver.
Please make sure Selenium Server (ChromeDriver or PhantomJS) is running and accessible
I tried to find why the host a still keeping but since there are promise call chain and not able to find which code keep previous host when scenario 2 is executing.
I had to using internal API to update configuration before every test start
Harvey Lin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.