Closed Bug 1410610 Opened 7 years ago Closed 6 years ago

Intermittent /html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html | history.back() handles nested iframe timer correctly - assert_false: expected false got true

Categories

(Core :: DOM: Core & HTML, defect, P2)

defect

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: intermittent-bug-filer, Assigned: farre)

References

Details

(Keywords: intermittent-failure, Whiteboard: [stockwell unknown])

Component: web-platform-tests → DOM
Product: Testing → Core
Version: Version 3 → Trunk
There are 31 failures in the last 7 days.
They occur on linux64-qr (debug) and linux64-ccov (debug).
Recent failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=181042904&repo=autoland&lineNumber=13936
INFO - TEST-PASS | /html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html | history.back() handles top level page timer correctly 
[task 2018-05-31T02:53:38.760Z] 02:53:38     INFO - TEST-UNEXPECTED-FAIL | /html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html | history.back() handles nested iframe timer correctly - assert_false: expected false got true
[task 2018-05-31T02:53:38.760Z] 02:53:38     INFO - @http://web-platform.test:8000/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html:125:7
[task 2018-05-31T02:53:38.760Z] 02:53:38     INFO - promise callback*@http://web-platform.test:8000/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html:121:12
[task 2018-05-31T02:53:38.760Z] 02:53:38     INFO - promise callback*@http://web-platform.test:8000/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html:105:10
[task 2018-05-31T02:53:38.760Z] 02:53:38     INFO - Test.prototype.step@http://web-platform.test:8000/resources/testharness.js:1538:20
:overholt, can you have a look at this?
Flags: needinfo?(overholt)
Whiteboard: [stockwell needswork]
bkelly or farre might know what's up here.
Flags: needinfo?(overholt)
Flags: needinfo?(bkelly)
Flags: needinfo?(afarre)
Priority: -- → P2
Sorry, I don't think I will have time to look at this one.  Leaving to Andreas.
Flags: needinfo?(bkelly)
The logs point to testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html:125 which is:

121)     return navigate_by_name(win, 'bar').then(_ => {
122)       // Since the window has navigated the timer should not
123)       // fire.  We set a timer on our current test window
124)       // to verify the other timer is not received.
125)       assert_false(delayFired);
126)       return delay(window, DELAY * 2);
127)     }).then(_ => {

i.e. the very first assert_false(delay_fired). I can reproduce this by setting DELAY to 39 (which is a whopping 461 ms less than its actual value). If we pretend that starting the navigation takes a very long time (more than 500 ms) then I guess that suspending the nested frame could happen _after_ the timeout triggers. In that case the reason for the test being flaky is that we get a race between navigation and the timeout that we wish to check hasn't triggered, which I guess is fully possible since each frame runs its own TimeoutExecutor.

Ben, does this sound reasonable at all? Thought I'd ask before trying to set up a throttled test to actually repro with the long delay.
Flags: needinfo?(bkelly)
Assignee: nobody → afarre
Flags: needinfo?(afarre)
Wow.  I have no memory of writing this test...

Comment 25 seems plausible to me.  Maybe the best way to avoid the test is to make the window start its own timer right before performing the navigation.  You would need to make the timer post a message instead of directly setting a boolean, though.
Flags: needinfo?(bkelly)
no failures in the last 2+ weeks.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → INCOMPLETE
Component: DOM → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.