This is an automated email from the ASF dual-hosted git repository.

dongjoon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new fa23d276e7e4 [SPARK-47020][CORE][TESTS] Fix 
`RealBrowserUISeleniumSuite`
fa23d276e7e4 is described below

commit fa23d276e7e4ed94bf11d71f2e1daa22fe2238e5
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Fri Feb 9 19:23:17 2024 -0800

    [SPARK-47020][CORE][TESTS] Fix `RealBrowserUISeleniumSuite`
    
    ### What changes were proposed in this pull request?
    
    This PR aims to fix `RealBrowserUISeleniumSuite` which has been broken 
after SPARK-45274.
    
    - #43053
    
    ### Why are the changes needed?
    
    To recover `RealBrowserUISeleniumSuite` according to the latest HTML 
structure.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Manual
    ```
    $ build/sbt -Dguava.version=32.1.2-jre \
    -Dspark.test.webdriver.chrome.driver=/opt/homebrew/bin/chromedriver \
    -Dtest.default.exclude.tags="" -Phive -Phive-thriftserver \
    "core/testOnly org.apache.spark.ui.ChromeUISeleniumSuite"
    ```
    
    **BEFORE**
    ```
    [info] ChromeUISeleniumSuite:
    [info] - SPARK-31534: text for tooltip should be escaped *** FAILED *** (12 
seconds, 752 milliseconds)
    [info] - SPARK-31882: Link URL for Stage DAGs should not depend on paged 
table. (2 seconds, 363 milliseconds)
    [info] - SPARK-31886: Color barrier execution mode RDD correctly *** FAILED 
*** (12 seconds, 143 milliseconds)
    [info] - Search text for paged tables should not be saved (3 seconds, 47 
milliseconds)
    [info] Run completed in 32 seconds, 54 milliseconds.
    [info] Total number of tests run: 4
    [info] Suites: completed 1, aborted 0
    [info] Tests: succeeded 2, failed 2, canceled 0, ignored 0, pending 0
    [info] *** 2 TESTS FAILED ***
    [error] Failed tests:
    [error]         org.apache.spark.ui.ChromeUISeleniumSuite
    [error] (core / Test / testOnly) sbt.TestsFailedException: Tests 
unsuccessful
    [error] Total time: 42 s, completed Feb 9, 2024, 5:32:52 PM
    ```
    
    **AFTER**
    ```
    [info] ChromeUISeleniumSuite:
    [info] - SPARK-31534: text for tooltip should be escaped (3 seconds, 135 
milliseconds)
    [info] - SPARK-31882: Link URL for Stage DAGs should not depend on paged 
table. (2 seconds, 395 milliseconds)
    [info] - SPARK-31886: Color barrier execution mode RDD correctly (2 
seconds, 144 milliseconds)
    [info] - Search text for paged tables should not be saved (2 seconds, 958 
milliseconds)
    [info] Run completed in 12 seconds, 377 milliseconds.
    [info] Total number of tests run: 4
    [info] Suites: completed 1, aborted 0
    [info] Tests: succeeded 4, failed 0, canceled 0, ignored 0, pending 0
    [info] All tests passed.
    [success] Total time: 22 s, completed Feb 9, 2024, 5:34:24 PM
    ```
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    No.
    
    Closes #45078 from dongjoon-hyun/SPARK-47020.
    
    Authored-by: Dongjoon Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 .../spark/ui/RealBrowserUISeleniumSuite.scala      | 32 ++++++++++------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git 
a/core/src/test/scala/org/apache/spark/ui/RealBrowserUISeleniumSuite.scala 
b/core/src/test/scala/org/apache/spark/ui/RealBrowserUISeleniumSuite.scala
index b0f1fcab63be..709ee98be1e3 100644
--- a/core/src/test/scala/org/apache/spark/ui/RealBrowserUISeleniumSuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/RealBrowserUISeleniumSuite.scala
@@ -73,8 +73,8 @@ abstract class RealBrowserUISeleniumSuite(val driverProp: 
String)
 
         // Open DAG Viz.
         webDriver.findElement(By.id("job-dag-viz")).click()
-        val nodeDesc = webDriver.findElement(By.cssSelector("g[class='node_0 
node']"))
-        nodeDesc.getAttribute("name") should include ("collect at 
&lt;console&gt;:25")
+        val nodeDesc = webDriver.findElement(By.cssSelector("g[id='node_0']"))
+        nodeDesc.getAttribute("innerHTML") should include ("collect at 
&lt;console&gt;:25")
       }
     }
   }
@@ -109,22 +109,20 @@ abstract class RealBrowserUISeleniumSuite(val driverProp: 
String)
         goToUi(sc, "/jobs/job/?id=0")
         webDriver.findElement(By.id("job-dag-viz")).click()
 
-        val stage0 = webDriver.findElement(By.cssSelector("g[id='graph_0']"))
-        val stage1 = webDriver.findElement(By.cssSelector("g[id='graph_1']"))
+        val stage0 = 
webDriver.findElement(By.cssSelector("g[id='graph_stage_0']"))
+          .findElement(By.xpath(".."))
+        val stage1 = 
webDriver.findElement(By.cssSelector("g[id='graph_stage_1']"))
+          .findElement(By.xpath(".."))
         val barrieredOps = 
webDriver.findElements(By.className("barrier-rdd")).iterator()
-
-        while (barrieredOps.hasNext) {
-          val barrieredOpId = barrieredOps.next().getAttribute("innerHTML")
-          val foundInStage0 =
-            stage0.findElements(
-              By.cssSelector("g.barrier.cluster.cluster_" + barrieredOpId))
-          assert(foundInStage0.size === 1)
-
-          val foundInStage1 =
-            stage1.findElements(
-              By.cssSelector("g.barrier.cluster.cluster_" + barrieredOpId))
-          assert(foundInStage1.size === 0)
-        }
+        val id1 = barrieredOps.next().getAttribute("innerHTML")
+        val id2 = barrieredOps.next().getAttribute("innerHTML")
+        assert(!barrieredOps.hasNext())
+
+        val prefix = "g[class='cluster barrier']#cluster_"
+        assert(stage0.findElements(By.cssSelector(s"${prefix}$id1")).size === 
1)
+        assert(stage0.findElements(By.cssSelector(s"${prefix}$id2")).size === 
1)
+        assert(stage1.findElements(By.cssSelector(s"${prefix}$id1")).size === 
0)
+        assert(stage1.findElements(By.cssSelector(s"${prefix}$id2")).size === 
1)
       }
     }
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to