[ 
https://issues.apache.org/jira/browse/SPARK-31756?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sean R. Owen resolved SPARK-31756.
----------------------------------
    Fix Version/s: 3.1.0
       Resolution: Fixed

Resolved by https://github.com/apache/spark/pull/28578

> Add real headless browser support for UI test
> ---------------------------------------------
>
>                 Key: SPARK-31756
>                 URL: https://issues.apache.org/jira/browse/SPARK-31756
>             Project: Spark
>          Issue Type: Improvement
>          Components: Web UI
>    Affects Versions: 3.1.0
>            Reporter: Kousuke Saruta
>            Assignee: Kousuke Saruta
>            Priority: Major
>             Fix For: 3.1.0
>
>
> In the current master, there are two problems for UI test.
> 1. Lots of tests especially JavaScript related ones are done manually.
> Appearance is better to be confirmed by our eyes but logic should be tested 
> by test cases ideally.
>  
> 2. Compared to the real web browsers, HtmlUnit doesn't seem to support 
> JavaScript enough.
> I added a JavaScript related test before for SPARK-31534 using HtmlUnit which 
> is simple library based headless browser for test.
> The test I added works somehow but some JavaScript related error is shown in 
> unit-tests.log.
> {code:java}
> ======= EXCEPTION START ========
> Exception 
> class=[net.sourceforge.htmlunit.corejs.javascript.JavaScriptException]
> com.gargoylesoftware.htmlunit.ScriptException: Error: TOOLTIP: Option 
> "sanitizeFn" provided type "window" but expected type "(null|function)". 
> (http://192.168.1.209:60724/static/jquery-3.4.1.min.js#2)
>         at 
> com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:904)
>         at 
> net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628)
>         at 
> net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515)
>         at 
> com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:835)
>         at 
> com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:807)
>         at 
> com.gargoylesoftware.htmlunit.InteractivePage.executeJavaScriptFunctionIfPossible(InteractivePage.java:216)
>         at 
> com.gargoylesoftware.htmlunit.javascript.background.JavaScriptFunctionJob.runJavaScript(JavaScriptFunctionJob.java:52)
>         at 
> com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutionJob.run(JavaScriptExecutionJob.java:102)
>         at 
> com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl.runSingleJob(JavaScriptJobManagerImpl.java:426)
>         at 
> com.gargoylesoftware.htmlunit.javascript.background.DefaultJavaScriptExecutor.run(DefaultJavaScriptExecutor.java:157)
>         at java.lang.Thread.run(Thread.java:748)
> Caused by: net.sourceforge.htmlunit.corejs.javascript.JavaScriptException: 
> Error: TOOLTIP: Option "sanitizeFn" provided type "window" but expected type 
> "(null|function)". (http://192.168.1.209:60724/static/jquery-3.4.1.min.js#2)
>         at 
> net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1009)
>         at 
> net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:800)
>         at 
> net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
>         at 
> net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:413)
>         at 
> com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:252)
>         at 
> net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3264)
>         at 
> com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$4.doRun(JavaScriptEngine.java:828)
>         at 
> com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:889)
>         ... 10 more
> JavaScriptException value = Error: TOOLTIP: Option "sanitizeFn" provided type 
> "window" but expected type "(null|function)".
> == CALLING JAVASCRIPT ==
>   function () {
>       throw e;
>   }
> ======= EXCEPTION END ========{code}
>  
> I tried to upgrade HtmlUnit to 2.40.0 but what is worse, the test become not 
> working even though it works on real browsers like Chrome, Safari and Firefox 
> without error.
> {code:java}
> [info] UISeleniumSuite:
> [info] - SPARK-31534: text for tooltip should be escaped *** FAILED *** (17 
> seconds, 745 milliseconds)
> [info]   The code passed to eventually never returned normally. Attempted 2 
> times over 12.910785232 seconds. Last failure message: 
> com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: Assignment to 
> undefined "regeneratorRuntime" in strict mode 
> (http://192.168.1.209:62132/static/vis-timeline-graph2d.min.js#52(Function)#1){code}
>  
>  To resolve those problems, it's better to support headless browser for UI 
> test.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to