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

Kousuke Saruta updated SPARK-31756:
-----------------------------------
    Description: 
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 
JavaScriopt 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.

  was:
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 
JavaScriopt 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.


> 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
>
> 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 
> JavaScriopt 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