Bug 259699 - REGRESSION(262173@main): [ macOS WK2 ] media/media-source/media-source-duplicate-seeked.html is a flaky failure
Summary: REGRESSION(262173@main): [ macOS WK2 ] media/media-source/media-source-duplic...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Jean-Yves Avenard [:jya]
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2023-08-01 12:46 PDT by Ben Schwartz
Modified: 2023-08-17 18:35 PDT (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ben Schwartz 2023-08-01 12:46:07 PDT
media/media-source/media-source-duplicate-seeked.html

This test is a flaky failure on macOS WK2 (including gpuprocess).

HISTORY:

https://results.webkit.org/?suite=layout-tests&test=media%2Fmedia-source%2Fmedia-source-duplicate-seeked.html&platform=mac&flavor=wk2&recent=false

TEXT DIFF:

 RUN(video.currentTime = 1)
 EVENT(seeked)
 RUN(video.play())
-EVENT(ended)
+EVENT(seeked) TEST(false) FAIL
 END OF TEST

DIFF URL:

https://build.webkit.org/results/Apple-Ventura-Release-AppleSilicon-WK2-Tests/266464%40main%20(4230)/media/media-source/media-source-duplicate-seeked-pretty-diff.html

REPRODUCIBILITY:

I was able to reproduce this bug on macOS Ventura at ToT running the test as follows:

run-webkit-tests --iterations 100 --child-processes=5 --verbose media/media-source/media-source-duplicate-seeked.html

REGRESSION:

I was able to bisect a regression point using the flakiness dashboard. This test reproduced at 262173@main, but it did not reproduce at 262172@main. Changes at 262173@main appear to be directly related to this error, and is likely what caused the failure.
Comment 1 Radar WebKit Bug Importer 2023-08-01 12:46:18 PDT
<rdar://problem/113221970>
Comment 2 Ben Schwartz 2023-08-01 13:29:58 PDT
I have marked this test as a flaky failure while this issue is investigated. (Link: https://github.com/WebKit/WebKit/pull/16288)
Comment 3 EWS 2023-08-01 13:42:56 PDT
Test gardening commit 266489@main (3cd791a12459): <https://commits.webkit.org/266489@main>

Reviewed commits have been landed. Closing PR #16288 and removing active labels.
Comment 4 Jean-Yves Avenard [:jya] 2023-08-14 21:01:32 PDT
The test is non-deterministic/invalid.

It adds 1s of video element (using the MockSourceBuffer) and set the duration to 1s.
It then seeks `currentTime = 1` which is the end of the video and then calls play() again once the `seeked` event has fired.

However, per spec, if the playback has reached the end of the video and you call `play()`

https://html.spec.whatwg.org/multipage/media.html#internal-play-steps
"If the playback has ended and the direction of playback is forwards, seek to the earliest possible position of the media resource."

so we seek again.

The flow of the test is as follow:
1- Load 1s of data
2- set duration to 1s
3- call endOfStream
3- seek to 1s
4- seek completes -> `seeked` event is fired.
5- `ended` event is fired
5- call play(), we are at the end of the element, we seek to the start -> `seeked` event is fired,
6- playback continue and now reaches the end -> `ended` event is fired.

So we have the `ended` event fired twice, but the test expect `ended` to be fired before `seeked` which is only true if the listener of the first `ended` event hasn't run.

Not seeking to the end of the video at the start of the test, but slightly before would keep the aim of the test, but not caused `ended` event to be fired twice as we will only reach the end if the media is playing.
Comment 5 Jean-Yves Avenard [:jya] 2023-08-14 21:41:43 PDT
Pull request: https://github.com/WebKit/WebKit/pull/16696
Comment 6 EWS 2023-08-17 18:35:36 PDT
Committed 267024@main (95c4d7e41e12): <https://commits.webkit.org/267024@main>

Reviewed commits have been landed. Closing PR #16696 and removing active labels.