Bug 163823

Summary: REGRESSION(r207561): [GTK] Six media tests failing
Product: WebKit Reporter: Michael Catanzaro <mcatanzaro>
Component: MediaAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: bugs-noreply, jer.noble, mcatanzaro, pnormand
Priority: P2    
Version: Other   
Hardware: PC   
OS: Linux   

Description Michael Catanzaro 2016-10-21 17:32:24 PDT
Something between r207561-r207566 (inclusive) broke several media tests:

media/audio-playback-restriction-autoplay.html [ Failure ]
media/audio-playback-restriction-play-muted.html [ Failure ]
media/audio-playback-restriction-play.html [ Failure ]
media/context-menu-actions.html [ Failure ]

Maaaybe r207561 ("Modify testrunner to mute audio during tests")?

Updating expectations accordingly.
Comment 1 Michael Catanzaro 2016-10-21 17:33:44 PDT
--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/audio-playback-restriction-autoplay-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/audio-playback-restriction-autoplay-actual.txt
@@ -5,6 +5,6 @@
 RUN(video.src = findMediaFile('audio', 'content/test'))
 EVENT(canplaythrough)
 RUN(setTimeout(timeout, 100))
-EXPECTED (video.paused == 'true') OK
+EXPECTED (video.paused == 'true'), OBSERVED 'false' FAIL
 END OF TEST
 
--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/audio-playback-restriction-play-muted-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/audio-playback-restriction-play-muted-actual.txt
@@ -7,6 +7,6 @@
 RUN(video.play())
 EVENT(playing)
 RUN(video.muted = false)
-EVENT(pause)
+FAIL: did not end fast enough
 END OF TEST
 
--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/audio-playback-restriction-play-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/audio-playback-restriction-play-actual.txt
@@ -5,7 +5,7 @@
 RUN(video.src = findMediaFile('audio', 'content/test'))
 EVENT(canplaythrough)
 RUN(video.play())
-EXPECTED (video.paused == 'true') OK
+EXPECTED (video.paused == 'true'), OBSERVED 'false' FAIL
 Running with keyDown.
 RUN(video.play())
 EXPECTED (video.paused == 'false') OK

--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/context-menu-actions-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/context-menu-actions-actual.txt
@@ -5,9 +5,9 @@
 EVENT(play)
 EXPECTED (video.paused == 'false') OK
 Toggling play state
-EXPECTED (video.paused == 'true') OK
+EXPECTED (video.paused == 'true'), OBSERVED 'false' FAIL
 
-EXPECTED (video.muted == 'false') OK
+EXPECTED (video.muted == 'false'), OBSERVED 'true' FAIL
 Toggling mute state
 EXPECTED (video.muted == 'true') OK
Comment 2 Michael Catanzaro 2016-10-21 17:36:22 PDT
(In reply to comment #0)
> Something between r207561-r207566 (inclusive) broke several media tests:
> 
> media/audio-playback-restriction-autoplay.html [ Failure ]
> media/audio-playback-restriction-play-muted.html [ Failure ]
> media/audio-playback-restriction-play.html [ Failure ]
> media/context-menu-actions.html [ Failure ]
> 
> Maaaybe r207561 ("Modify testrunner to mute audio during tests")?
> 
> Updating expectations accordingly.

Whoops, I missed two more:

media/video-defaultmuted.html <---- smoking gun
media/video-volume-slider.html

--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/video-defaultmuted-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/video-defaultmuted-actual.txt
@@ -22,13 +22,13 @@
 
 *** Change 'muted' IDL attribute, content attribute should not change
 RUN(video.muted = false)
-EXPECTED (video.muted == 'false') OK
+EXPECTED (video.muted == 'false'), OBSERVED 'true' FAIL
 EXPECTED (video.defaultMuted == 'false') OK
 EXPECTED (video.hasAttribute('muted') == 'false') OK
 
 *** Remove 'muted' content attribute, it should have no effect on IDL attribute
 RUN(video.removeAttribute('muted'))
-EXPECTED (video.muted == 'false') OK
+EXPECTED (video.muted == 'false'), OBSERVED 'true' FAIL
 EXPECTED (video.defaultMuted == 'false') OK
 
 
@@ -45,19 +45,19 @@
 
 *** Change 'defaultMuted', IDL attribute should not change but content attribute should.
 RUN(video.defaultMuted = true)
-EXPECTED (video.muted == 'false') OK
+EXPECTED (video.muted == 'false'), OBSERVED 'true' FAIL
 EXPECTED (video.defaultMuted == 'true') OK
 EXPECTED (video.hasAttribute('muted') == 'true') OK
 
 *** Change 'muted' IDL attribute, content attribute should not change
 RUN(video.muted = false)
-EXPECTED (video.muted == 'false') OK
+EXPECTED (video.muted == 'false'), OBSERVED 'true' FAIL
 EXPECTED (video.defaultMuted == 'true') OK
 EXPECTED (video.hasAttribute('muted') == 'true') OK
 
 *** Add 'muted' content attribute, it should have no effect on IDL attribute
 RUN(video.setAttribute('muted', 'muted'))
-EXPECTED (video.muted == 'false') OK
+EXPECTED (video.muted == 'false'), OBSERVED 'true' FAIL
 EXPECTED (video.defaultMuted == 'true') OK



--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/video-volume-slider-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/media/video-volume-slider-actual.txt
@@ -37,4 +37,4 @@
     RenderSlider {INPUT} at (11,10) size 8x80 [color=#E6E6E659]
       RenderFlexibleBox {DIV} at (0,0) size 8x80 [border: (1px solid #E6E6E659)]
         RenderBlock {DIV} at (-2,-6) size 12x92
-          RenderBlock {DIV} at (0,24) size 12x12 [color=#FFFFFF]
+          RenderBlock {DIV} at (0,80) size 12x12 [color=#FFFFFF]
Comment 3 Philippe Normand 2018-01-11 02:51:13 PST
(In reply to Michael Catanzaro from comment #0)
> 
> Maaaybe r207561 ("Modify testrunner to mute audio during tests")?
> 

Indeed...
A workaround is to call internals.setPageMuted(""); at the beginning of each test.
Comment 4 Philippe Normand 2018-01-15 07:30:40 PST
Landed a fix in https://trac.webkit.org/r226948 but keeping this bug open because of media/video-volume-slider.html which still fails but for a different reason. I think that test fails because the volume notification is emitted before the volume slider shows up.