healenium / healenium

Self-healing library for Selenium Web-based tests
https://healenium.io/
Apache License 2.0
85 stars 19 forks source link

[BUG]: Healenium proxy not connecting to Selenium Hub. "WebdriverError: null" when starting Protractor JS test over HLM-Proxy port 8085 #15

Closed corneldutta closed 1 year ago

corneldutta commented 1 year ago

Describe the bug

I am trying to integrate Healenium with Protractor JS framework, using Selenium-grid docker images of Healenium. On bringing up all docker containers using this docker compose file - https://github.com/corneldutta/Protractor-Healenium-POC/blob/master/healenium/docker-compose.yml, HLM-Proxy (running on Port 8085) is not redirecting to Selenium Hub (running on Port 4444).

Hence when running protractor script with seleniumAddress: 'http://localhost:8085', getting E/launcher - WebDriverError: null error, and tests are not executing.

Attached log file of Healenium proxy in debug level, while bringing up docker images. healenium-proxy-selenium-grid.log

Framework Github Repo - https://github.com/corneldutta/Protractor-Healenium-POC

Screenshot of error on running Protractor script -

image

How to reproduce the issue

Steps to reproduce - 
1. Clone the repo - https://github.com/corneldutta/Protractor-Healenium-POC.git
2. cd healenium
3. docker compose up -d
4. cd .. 
5. npm install
6. protractor conf.js

Logs appeared during using Healenium

2023-05-25 13:06:22.018 DEBUG 1 - [8085-exec-1] healenium                        : [Request Handler] Selenium Request URI: /session 
2023-05-25 13:06:22.049 ERROR 1 - [8085-exec-1] healenium                        : [Request Handler] Error during handle Proxy Request. Message: null, Exception: {} java.lang.NullPointerException: null\n     at com.epam.healenium.healenium_proxy.mapper.JsonMapper.isMobile(JsonMapper.java:95)\n  at com.epam.healenium.healenium_proxy.mapper.JsonMapper.isAppium(JsonMapper.java:63)\n  at com.epam.healenium.healenium_proxy.service.SessionContextService.initSessionContext(SessionContextService.java:53)\n     at com.epam.healenium.healenium_proxy.request.post.override.HealeniumCreateSessionPostRequest.execute(HealeniumCreateSessionPostRequest.java:40)\n  at com.epam.healenium.healenium_proxy.request.post.HealeniumPostRequest.execute(HealeniumPostRequest.java:46)\n     at com.epam.healenium.healenium_proxy.handler.HealeniumProxyHttpHandler.handleRequest(HealeniumProxyHttpHandler.java:37)\n  at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:52)\n    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)\n    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n     at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)\n   at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n    at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)\n   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n  at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n  at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\n    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)\n    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)\n     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\n  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n   at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)\n    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732)\n    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n  at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n     at java.lang.Thread.run(Thread.java:748)\n

Expected behavior

When hitting HLM-Proxy on http://localhost:8085 on local browser, should redirect to Selenium Hub.

Actual behavior

When hitting http://localhost:8085, getting error message - <!doctype html><html lang="en"><head><meta charset="utf-8"/><link href="/ui/favicon.svg" rel="icon" type="image/svg"><meta content="width=device-width,initial-scale=1" name="viewport"/><link href="/ui/logo192.png" rel="apple-touch-icon"/><link href="/ui/manifest.json" rel="manifest"/><title>Selenium Grid</title><script defer="defer" src="/ui/static/js/main.a5ba60b4.js"></script><link href="/ui/static/css/main.ce2bf04a.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

Healenium Web version

hlm-proxy:1.3.2

Healenium Backend version

hlm-backend:3.3.2

Selenium version

3.6.0

Platform

Node version v16.17.1

Additional context

No response

Alex-Reif commented 1 year ago

Hi @corneldutta , Protractor is deprecated and will reach end-of-life in August 2023. So we recommend use Healenium with up-to-date tools.