Tools/ChangeLog

 12016-09-07 Youenn Fablet <youenn@apple.com>
 2
 3 Some WPT testharness-based tests are flaky due to always-changing assertion failure messages
 4 https://bugs.webkit.org/show_bug.cgi?id=161693
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Adding a new boolean attribute called shouldLogTestharnessFailures to TestRunner interface.
 9 By default, this attribute is true but can be set with the --no-testharness-failure-log test option.
 10
 11 When set to false, testharnessreport.js will no longer report error messages in case of failing tests.
 12 This allows making some tests non flaky.
 13
 14 * DumpRenderTree/DumpRenderTree.h:
 15 * DumpRenderTree/DumpRenderTreeCommon.cpp:
 16 (parseInputLine):
 17 * DumpRenderTree/TestRunner.cpp:
 18 (getShouldLogTestharnessFailuresCallback):
 19 (TestRunner::staticValues):
 20 * DumpRenderTree/TestRunner.h:
 21 (TestRunner::setShouldLogTestharnessFailures):
 22 (TestRunner::shouldLogTestharnessFailures):
 23 * DumpRenderTree/mac/DumpRenderTree.mm:
 24 (runTest):
 25 * DumpRenderTree/win/DumpRenderTree.cpp:
 26 (runTest):
 27 * Scripts/webkitpy/layout_tests/controllers/manager.py:
 28 (Manager.__init__):
 29 (Manager._test_input_for_file):
 30 * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
 31 (SingleTestRunner.__init__):
 32 (SingleTestRunner._driver_input):
 33 * Scripts/webkitpy/layout_tests/models/test_input.py:
 34 (TestInput.__init__):
 35 (TestInput.__repr__):
 36 * Scripts/webkitpy/port/driver.py:
 37 (DriverInput.__init__):
 38 (Driver._command_from_driver_input):
 39 * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
 40 * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
 41 (WTR::InjectedBundle::didReceiveMessageToPage):
 42 (WTR::InjectedBundle::beginTesting):
 43 * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
 44 (WTR::InjectedBundle::shouldLogTestHarnessFailures):
 45 * WebKitTestRunner/InjectedBundle/TestRunner.h:
 46 (WTR::TestRunner::setShouldLogTestharnessFailures):
 47 (WTR::TestRunner::shouldLogTestharnessFailures):
 48 (WTR::TestRunner::timeout): Deleted.
 49 * WebKitTestRunner/TestController.cpp:
 50 (WTR::parseInputLine):
 51 (WTR::TestController::runTest):
 52 (WTR::TestCommand::TestCommand): Deleted.
 53 * WebKitTestRunner/TestInvocation.cpp:
 54 (WTR::TestInvocation::invoke):
 55 * WebKitTestRunner/TestInvocation.h:
 56 (WTR::TestInvocation::setShouldLogTestHarnessFailures):
 57 (WTR::TestInvocation::customTimeout): Deleted.
 58
1592016-09-06 Commit Queue <commit-queue@webkit.org>
260
361 Unreviewed, rolling out r205521, r205526, and r205532.

Tools/DumpRenderTree/DumpRenderTree.h

@@void dump();
6262void displayWebView();
6363
6464struct TestCommand {
65  TestCommand() : shouldDumpPixels(false), timeout(30000) { }
66 
6765 std::string pathOrURL;
68  bool shouldDumpPixels;
 66 bool shouldDumpPixels { false };
6967 std::string expectedPixelHash;
70  int timeout; // in ms
 68 int timeout { 30000 }; // in ms
 69 bool shouldLogTestharnessFailures { true };
7170};
7271
7372TestCommand parseInputLine(const std::string&);

Tools/DumpRenderTree/DumpRenderTreeCommon.cpp

@@TestCommand parseInputLine(const std::string& inputLine)
7777 result.shouldDumpPixels = true;
7878 if (tokenizer.hasNext())
7979 result.expectedPixelHash = tokenizer.next();
80  } else
 80 } else if (arg == std::string("--no-testharness-failure-log"))
 81 result.shouldLogTestharnessFailures = false;
 82 else
8183 die(inputLine);
8284 }
8385

Tools/DumpRenderTree/TestRunner.cpp

@@static JSValueRef getTimeoutCallback(JSContextRef context, JSObjectRef thisObjec
17731773 return JSValueMakeNumber(context, controller->timeout());
17741774}
17751775
 1776static JSValueRef getShouldLogTestharnessFailuresCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
 1777{
 1778 TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
 1779 return JSValueMakeBoolean(context, controller->shouldLogTestharnessFailures());
 1780}
 1781
17761782static JSValueRef getGlobalFlagCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
17771783{
17781784 TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));

@@JSStaticValue* TestRunner::staticValues()
20412047{
20422048 static JSStaticValue staticValues[] = {
20432049 { "timeout", getTimeoutCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
 2050 { "shouldLogTestharnessFailures", getShouldLogTestharnessFailuresCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
20442051 { "globalFlag", getGlobalFlagCallback, setGlobalFlagCallback, kJSPropertyAttributeNone },
20452052 { "webHistoryItemCount", getWebHistoryItemCountCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
20462053 { "secureEventInputIsEnabled", getSecureEventInputIsEnabledCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },

Tools/DumpRenderTree/TestRunner.h

@@public:
368368 double timeout() { return m_timeout; }
369369
370370 unsigned imageCountInGeneralPasteboard() const;
371 
 371
372372 void callUIScriptCallback(unsigned callbackID, JSStringRef result);
373373
 374 void setShouldLogTestharnessFailures(bool inStderr) { m_shouldLogTestHarnessFailures = inStderr; }
 375 bool shouldLogTestharnessFailures() const { return m_shouldLogTestHarnessFailures; }
 376
374377private:
375378 TestRunner(const std::string& testURL, const std::string& expectedPixelHash);
376379

@@private:
435438 bool m_areLegacyWebNotificationPermissionRequestsIgnored;
436439 bool m_customFullScreenBehavior;
437440 bool m_hasPendingWebNotificationClick;
 441 bool m_shouldLogTestHarnessFailures { true };
438442
439443 double m_databaseDefaultQuota;
440444 double m_databaseMaxQuota;

Tools/DumpRenderTree/mac/DumpRenderTree.mm

@@static void runTest(const string& inputLine)
19881988 gTestRunner = TestRunner::create(testURL, command.expectedPixelHash);
19891989 gTestRunner->setAllowedHosts(allowedHosts);
19901990 gTestRunner->setCustomTimeout(command.timeout);
 1991 gTestRunner->setShouldLogTestharnessFailures(command.shouldLogTestharnessFailures);
19911992 topLoadingFrame = nil;
19921993#if !PLATFORM(IOS)
19931994 ASSERT(!draggingInfo); // the previous test should have called eventSender.mouseUp to drop!

Tools/DumpRenderTree/win/DumpRenderTree.cpp

@@static void runTest(const string& inputLine)
10821082
10831083 ::gTestRunner = TestRunner::create(testURL.data(), command.expectedPixelHash);
10841084 ::gTestRunner->setCustomTimeout(command.timeout);
 1085 ::gTestRunner->setTestharnessFailureLog(command.testharnessFailureLog);
 1086
10851087 topLoadingFrame = nullptr;
10861088 done = false;
10871089

Tools/Scripts/webkitpy/layout_tests/controllers/manager.py

@@class Manager(object):
8585 self._results_directory = self._port.results_directory()
8686 self._finder = LayoutTestFinder(self._port, self._options)
8787 self._runner = LayoutTestRunner(self._options, self._port, self._printer, self._results_directory, self._test_is_slow)
 88 self._tests_options = json.loads(self._filesystem.read_text_file(self._port.path_from_webkit_base(self.LAYOUT_TESTS_DIRECTORY, "tests-options.json")))
8889
8990 def _collect_tests(self, args):
9091 return self._finder.find_tests(self._options, args)

@@class Manager(object):
128129 def _test_input_for_file(self, test_file):
129130 return TestInput(test_file,
130131 self._options.slow_time_out_ms if self._test_is_slow(test_file) else self._options.time_out_ms,
131  self._is_http_test(test_file))
 132 self._is_http_test(test_file),
 133 options=[option for option in self._tests_options.get(test_file, []) if option.startswith("--")])
132134
133135 def _test_is_slow(self, test_file):
134136 return self._expectations.model().has_modifier(test_file, test_expectations.SLOW)

Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py

@@class SingleTestRunner(object):
5858 self._worker_name = worker_name
5959 self._test_name = test_input.test_name
6060 self._should_run_pixel_test = test_input.should_run_pixel_test
 61 self._test_input_options = test_input.options
6162 self._reference_files = test_input.reference_files
6263 self._stop_when_done = stop_when_done
6364 self._timeout = test_input.timeout

@@class SingleTestRunner(object):
8990 image_hash = None
9091 if self._should_fetch_expected_checksum():
9192 image_hash = self._port.expected_checksum(self._test_name)
92  return DriverInput(self._test_name, self._timeout, image_hash, self._should_run_pixel_test)
 93 return DriverInput(self._test_name, self._timeout, image_hash, self._should_run_pixel_test, test_options=self._test_input_options)
9394
9495 def run(self):
9596 if self._reference_files:

Tools/Scripts/webkitpy/layout_tests/models/test_input.py

3131class TestInput(object):
3232 """Groups information about a test for easy passing of data."""
3333
34  def __init__(self, test_name, timeout=None, needs_servers=None, reference_files=None, should_run_pixel_tests=None):
 34 def __init__(self, test_name, timeout=None, needs_servers=None, reference_files=None, should_run_pixel_tests=None, options=[]):
3535 # TestInput objects are normally constructed by the manager and passed
3636 # to the workers, but these some fields are set lazily in the workers where possible
3737 # because they require us to look at the filesystem and we want to be able to do that in parallel.

@@class TestInput(object):
4040 self.needs_servers = needs_servers
4141 self.reference_files = reference_files
4242 self.should_run_pixel_tests = should_run_pixel_tests
 43 self.options = options
4344
4445 def __repr__(self):
45  return "TestInput('%s', timeout=%s, needs_servers=%s, reference_files=%s, should_run_pixel_tests=%s)" % (self.test_name, self.timeout, self.needs_servers, self.reference_files, self.should_run_pixel_tests)
 46 return "TestInput('%s', timeout=%s, needs_servers=%s, reference_files=%s, should_run_pixel_tests=%s, options=%s)" % (self.test_name, self.timeout, self.needs_servers, self.reference_files, self.should_run_pixel_tests, ':'.join(self.options))

Tools/Scripts/webkitpy/port/driver.py

2828# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2929
3030import base64
31 import copy
3231import logging
3332import re
3433import shlex

@@import os
3837
3938from webkitpy.common.system import path
4039from webkitpy.common.system.profiler import ProfilerFactory
41 from webkitpy.layout_tests.servers.web_platform_test_server import WebPlatformTestServer
4240
4341
4442_log = logging.getLogger(__name__)
4543
4644
4745class DriverInput(object):
48  def __init__(self, test_name, timeout, image_hash, should_run_pixel_test, args=None):
 46 def __init__(self, test_name, timeout, image_hash, should_run_pixel_test, args=None, test_options=None):
4947 self.test_name = test_name
5048 self.timeout = timeout # in ms
5149 self.image_hash = image_hash
5250 self.should_run_pixel_test = should_run_pixel_test
5351 self.args = args or []
 52 self.test_options = test_options or []
5453
5554 def __repr__(self):
5655 return "DriverInput(test_name='{}', timeout={}, image_hash={}, should_run_pixel_test={}'".format(self.test_name, self.timeout, self.image_hash, self.should_run_pixel_test)

@@class Driver(object):
486485 command += "'--pixel-test"
487486 if driver_input.image_hash:
488487 command += "'" + driver_input.image_hash
 488 if driver_input.test_options:
 489 command += "'" + "'".join(driver_input.test_options)
489490 return command + "\n"
490491
491492 def _read_first_block(self, deadline, test_name):

Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl

@@interface TestRunner {
3333 void notifyDone();
3434 double preciseTime();
3535 readonly attribute double timeout;
 36 readonly attribute boolean shouldLogTestharnessFailures;
3637
3738 // Other dumping.
3839 void dumpBackForwardList();

Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp

@@void InjectedBundle::didReceiveMessageToPage(WKBundlePageRef page, WKStringRef m
155155 WKRetainPtr<WKStringRef> timeoutKey(AdoptWK, WKStringCreateWithUTF8CString("Timeout"));
156156 m_timeout = (int)WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, timeoutKey.get())));
157157
 158 WKRetainPtr<WKStringRef> shouldLogTestHarnessFailuresKey(AdoptWK, WKStringCreateWithUTF8CString("ShouldLogTestHarnessFailures"));
 159 m_shouldLogTestHarnessFailures = WKBooleanGetValue(static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, shouldLogTestHarnessFailuresKey.get())));
 160
158161 WKRetainPtr<WKStringRef> ackMessageName(AdoptWK, WKStringCreateWithUTF8CString("Ack"));
159162 WKRetainPtr<WKStringRef> ackMessageBody(AdoptWK, WKStringCreateWithUTF8CString("BeginTest"));
160163 WKBundlePagePostMessage(page, ackMessageName.get(), ackMessageBody.get());

@@void InjectedBundle::beginTesting(WKDictionaryRef settings)
332335 if (m_timeout > 0)
333336 m_testRunner->setCustomTimeout(m_timeout);
334337
 338 m_testRunner->setShouldLogTestharnessFailures(m_shouldLogTestHarnessFailures);
 339
335340 page()->prepare();
336341
337342 WKBundleClearAllDatabases(m_bundle);

Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h

@@public:
7777
7878 bool shouldDumpPixels() const { return m_dumpPixels; }
7979 bool useWaitToDumpWatchdogTimer() const { return m_useWaitToDumpWatchdogTimer; }
80 
 80 bool shouldLogTestHarnessFailures() const { return m_shouldLogTestHarnessFailures; };
 81
8182 void outputText(const String&);
8283 void postNewBeforeUnloadReturnValue(bool);
8384 void postAddChromeInputField();

@@private:
172173 bool m_useWorkQueue;
173174 int m_timeout;
174175 bool m_pixelResultIsPending { false };
 176 bool m_shouldLogTestHarnessFailures { true };
175177
176178 WKRetainPtr<WKDataRef> m_audioResult;
177179 WKRetainPtr<WKImageRef> m_pixelResult;

Tools/WebKitTestRunner/InjectedBundle/TestRunner.h

@@public:
7272 void notifyDone();
7373 double preciseTime();
7474 double timeout() { return m_timeout; }
 75 void setShouldLogTestharnessFailures(bool inStderr) { m_shouldLogTestHarnessFailures = inStderr; }
 76 bool shouldLogTestharnessFailures() const { return m_shouldLogTestHarnessFailures; }
7577
7678 // Other dumping.
7779 void dumpBackForwardList() { m_shouldDumpBackForwardListsForAllWindows = true; }

@@private:
385387 bool m_customFullScreenBehavior;
386388
387389 int m_timeout;
 390 bool m_shouldLogTestHarnessFailures { true };
388391
389392 double m_databaseDefaultQuota;
390393 double m_databaseMaxQuota;

Tools/WebKitTestRunner/TestController.cpp

@@void TestController::configureViewForTest(const TestInvocation& test)
997997}
998998
999999struct TestCommand {
1000  TestCommand() : shouldDumpPixels(false), timeout(0) { }
1001 
10021000 std::string pathOrURL;
1003  bool shouldDumpPixels;
 1001 bool shouldDumpPixels { false };
10041002 std::string expectedPixelHash;
1005  int timeout;
 1003 int timeout { 0 };
 1004 bool shouldLogTestHarnessFailures { true };
10061005};
10071006
10081007class CommandTokenizer {

@@TestCommand parseInputLine(const std::string& inputLine)
10751074 result.shouldDumpPixels = true;
10761075 if (tokenizer.hasNext())
10771076 result.expectedPixelHash = tokenizer.next();
1078  } else
 1077 } else if (arg == std::string("--no-testharness-failure-log"))
 1078 result.shouldLogTestHarnessFailures = false;
 1079 else
10791080 die(inputLine);
10801081 }
10811082 return result;

@@bool TestController::runTest(const char* inputLine)
10961097 m_currentInvocation->setIsPixelTest(command.expectedPixelHash);
10971098 if (command.timeout > 0)
10981099 m_currentInvocation->setCustomTimeout(command.timeout);
 1100 m_currentInvocation->setShouldLogTestHarnessFailures(command.shouldLogTestHarnessFailures);
10991101
11001102 platformWillRunTest(*m_currentInvocation);
11011103

Tools/WebKitTestRunner/TestInvocation.cpp

@@void TestInvocation::invoke()
145145 WKRetainPtr<WKUInt64Ref> timeoutValue = adoptWK(WKUInt64Create(m_timeout));
146146 WKDictionarySetItem(beginTestMessageBody.get(), timeoutKey.get(), timeoutValue.get());
147147
 148 WKRetainPtr<WKStringRef> shouldLogTestHarnessFailuresKey = adoptWK(WKStringCreateWithUTF8CString("ShouldLogTestHarnessFailures"));
 149 WKRetainPtr<WKBooleanRef> shouldLogTestHarnessFailuresValue = adoptWK(WKBooleanCreate(m_shouldLogTestHarnessFailures));
 150 WKDictionarySetItem(beginTestMessageBody.get(), shouldLogTestHarnessFailuresKey.get(), shouldLogTestHarnessFailuresValue.get());
 151
148152 WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), beginTestMessageBody.get());
149153
150154 bool shouldOpenExternalURLs = false;

Tools/WebKitTestRunner/TestInvocation.h

@@public:
5151
5252 void setCustomTimeout(int duration) { m_timeout = duration; }
5353 int customTimeout() const { return m_timeout; }
 54 void setShouldLogTestHarnessFailures(bool value) { m_shouldLogTestHarnessFailures = value; }
5455
5556 void invoke();
5657 void didReceiveMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody);

@@private:
99100 std::string m_expectedPixelHash;
100101
101102 int m_timeout { 0 };
 103 bool m_shouldLogTestHarnessFailures { false };
102104
103105 // Invocation state
104106 bool m_gotInitialResponse { false };

LayoutTests/ChangeLog

 12016-09-07 Youenn Fablet <youenn@apple.com>
 2
 3 Some WPT testharness-based tests are flaky due to always-changing assertion failure messages
 4 https://bugs.webkit.org/show_bug.cgi?id=161693
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * TestExpectations: Removing flakiness expectations for --no-testharness-failure-log activated tests.
 9 * resources/testharnessreport.js:
 10 (self.testRunner.add_completion_callback): Disabling error message in case of --no-testharness-failure-log.
 11 * tests-options.json: Activating --no-testharness-failure-log to some flaky tests.
 12
1132016-09-06 Ryan Haddad <ryanhaddad@apple.com>
214
315 Marking http/tests/security/cross-origin-plugin-allowed.html as flaky on mac-wk2 release.

LayoutTests/imported/w3c/ChangeLog

 12016-09-07 Youenn Fablet <youenn@apple.com>
 2
 3 Some WPT testharness-based tests are flaky due to always-changing assertion failure messages
 4 https://bugs.webkit.org/show_bug.cgi?id=161693
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt:
 9 * web-platform-tests/fetch/api/request/request-cache-expected.txt:
 10 * web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt:
 11
1122016-09-06 Chris Dumez <cdumez@apple.com>
213
314 Add support for input.minLength / textArea.minLength

LayoutTests/TestExpectations

@@imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-worker-twi
280280imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-bogus.htm [ Skip ]
281281imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-to-cors.htm [ Skip ]
282282imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-to-non-cors.htm [ Skip ]
283 # Failing assertion with dynamic message
284 imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm [ Failure ]
285 
286 imported/w3c/web-platform-tests/fetch/api/request/request-cache.html [ Skip ]
287283
288284webkit.org/b/161176 [ Debug ] imported/w3c/web-platform-tests/url/url-setters.html [ Skip ]
289285

@@imported/w3c/web-platform-tests/html/dom/elements/global-attributes/dir_auto-tex
471467imported/w3c/web-platform-tests/html/dom/elements/global-attributes/style-01.html [ ImageOnlyFailure ]
472468
473469imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html [ Failure Timeout ]
474 imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html [ Failure ]
475470
476471# Imported Mozilla SVG tests
477472webkit.org/b/5968 imported/mozilla/svg/linearGradient-basic-03.svg [ ImageOnlyFailure ]

LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt

11
2 FAIL domain assert_equals: expected (undefined) undefined but got (string) "localhost"
 2FAIL domain (Assertion failure log disabled)
33PASS URL
44PASS documentURI
55PASS referrer
66PASS title
77PASS contentType
8 FAIL readyState assert_equals: expected "complete" but got "interactive"
 8FAIL readyState (Assertion failure log disabled)
99PASS location
1010PASS defaultView
11 FAIL body assert_equals: expected (undefined) undefined but got (object) null
12 FAIL images assert_equals: expected (undefined) undefined but got (object) object "[object HTMLCollection]"
 11FAIL body (Assertion failure log disabled)
 12FAIL images (Assertion failure log disabled)
1313PASS doctype
14 FAIL forms assert_equals: expected (undefined) undefined but got (object) object "[object HTMLCollection]"
 14FAIL forms (Assertion failure log disabled)
1515PASS all
16 FAIL links assert_equals: expected (undefined) undefined but got (object) object "[object HTMLCollection]"
 16FAIL links (Assertion failure log disabled)
1717PASS cookie
1818PASS lastModified set to time of response if no HTTP header provided
19 FAIL lastModified set to related HTTP header if provided assert_equals: expected 1472199840000 but got 1472206350000
 19FAIL lastModified set to related HTTP header if provided (Assertion failure log disabled)
2020PASS cookie (after setting it)
2121PASS styleSheets
2222PASS implementation

LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-expected.txt

@@PASS RequestCache "default" mode checks the cache for previously cached content
55PASS RequestCache "default" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with date and fresh response
66PASS RequestCache "no-cache" mode revalidates stale responses found in the cache with Etag and stale response
77PASS RequestCache "no-cache" mode revalidates stale responses found in the cache with date and stale response
8 FAIL RequestCache "no-cache" mode revalidates fresh responses found in the cache with Etag and fresh response assert_equals: expected 2 but got 1
9 FAIL RequestCache "no-cache" mode revalidates fresh responses found in the cache with date and fresh response assert_equals: expected 2 but got 1
10 FAIL RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with Etag and stale response assert_equals: expected 1 but got 2
11 FAIL RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with date and stale response assert_equals: expected 1 but got 2
 8FAIL RequestCache "no-cache" mode revalidates fresh responses found in the cache with Etag and fresh response (Assertion failure log disabled)
 9FAIL RequestCache "no-cache" mode revalidates fresh responses found in the cache with date and fresh response (Assertion failure log disabled)
 10FAIL RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with Etag and stale response (Assertion failure log disabled)
 11FAIL RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with date and stale response (Assertion failure log disabled)
1212PASS RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Etag and fresh response
1313PASS RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for fresh responses with date and fresh response
1414PASS RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Etag and stale response

@@PASS RequestCache "force-cache" stores the response in the cache if it goes to t
2323PASS RequestCache "force-cache" stores the response in the cache if it goes to the network with date and stale response
2424PASS RequestCache "force-cache" stores the response in the cache if it goes to the network with Etag and fresh response
2525PASS RequestCache "force-cache" stores the response in the cache if it goes to the network with date and fresh response
26 FAIL RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with Etag and stale response promise_test: Unhandled rejection with value: object "TypeError: Type error"
27 FAIL RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with date and stale response promise_test: Unhandled rejection with value: object "TypeError: Type error"
28 FAIL RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Etag and fresh response promise_test: Unhandled rejection with value: object "TypeError: Type error"
29 FAIL RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with date and fresh response promise_test: Unhandled rejection with value: object "TypeError: Type error"
 26FAIL RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with Etag and stale response (Assertion failure log disabled)
 27FAIL RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with date and stale response (Assertion failure log disabled)
 28FAIL RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Etag and fresh response (Assertion failure log disabled)
 29FAIL RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with date and fresh response (Assertion failure log disabled)
3030PASS RequestCache "only-if-cached" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Etag and fresh response
3131PASS RequestCache "only-if-cached" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with date and fresh response
32 FAIL RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Etag and fresh response promise_test: Unhandled rejection with value: object "TypeError: Type error"
33 FAIL RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with date and fresh response promise_test: Unhandled rejection with value: object "TypeError: Type error"
34 FAIL RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Etag and stale response promise_test: Unhandled rejection with value: object "TypeError: Type error"
35 FAIL RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with date and stale response promise_test: Unhandled rejection with value: object "TypeError: Type error"
 32FAIL RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Etag and fresh response (Assertion failure log disabled)
 33FAIL RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with date and fresh response (Assertion failure log disabled)
 34FAIL RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Etag and stale response (Assertion failure log disabled)
 35FAIL RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with date and stale response (Assertion failure log disabled)
3636PASS RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Etag and fresh response
3737PASS RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with date and fresh response
3838PASS RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Etag and stale response
3939PASS RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with date and stale response
40 FAIL RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale response assert_equals: expected (undefined) undefined but got (string) "\"0.11339741344180754\""
41 FAIL RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response assert_equals: expected (undefined) undefined but got (string) "Fri, 26 Aug 2016 08:23:55 GMT"
42 FAIL RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh response assert_equals: expected 2 but got 1
43 FAIL RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response assert_equals: expected 2 but got 1
44 FAIL RequestCache "no-store" mode does not store the response in the cache with Etag and stale response assert_equals: expected (undefined) undefined but got (string) "\"0.08040045229791004\""
45 FAIL RequestCache "no-store" mode does not store the response in the cache with date and stale response assert_equals: expected (undefined) undefined but got (string) "Fri, 26 Aug 2016 08:23:55 GMT"
46 FAIL RequestCache "no-store" mode does not store the response in the cache with Etag and fresh response assert_equals: expected 2 but got 1
47 FAIL RequestCache "no-store" mode does not store the response in the cache with date and fresh response assert_equals: expected 2 but got 1
 40FAIL RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale response (Assertion failure log disabled)
 41FAIL RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response (Assertion failure log disabled)
 42FAIL RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh response (Assertion failure log disabled)
 43FAIL RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response (Assertion failure log disabled)
 44FAIL RequestCache "no-store" mode does not store the response in the cache with Etag and stale response (Assertion failure log disabled)
 45FAIL RequestCache "no-store" mode does not store the response in the cache with date and stale response (Assertion failure log disabled)
 46FAIL RequestCache "no-store" mode does not store the response in the cache with Etag and fresh response (Assertion failure log disabled)
 47FAIL RequestCache "no-store" mode does not store the response in the cache with date and fresh response (Assertion failure log disabled)
4848PASS RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and stale response
4949PASS RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with date and stale response
5050PASS RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and fresh response
5151PASS RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with date and fresh response
5252PASS RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and stale response
5353PASS RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with date and stale response
54 FAIL RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and fresh response assert_equals: expected 2 but got 1
 54FAIL RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and fresh response (Assertion failure log disabled)
5555PASS RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with date and fresh response
5656PASS RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Etag and stale response
5757PASS RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and stale response

@@PASS RequestCache "default" mode with an If-None-Match header is treated similar
5959PASS RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and fresh response
6060PASS RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Etag and stale response
6161PASS RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and stale response
62 FAIL RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Etag and fresh response assert_equals: expected 2 but got 1
63 FAIL RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and fresh response assert_equals: expected 2 but got 1
 62FAIL RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Etag and fresh response (Assertion failure log disabled)
 63FAIL RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and fresh response (Assertion failure log disabled)
6464PASS RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and stale response
6565PASS RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and stale response
6666PASS RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and fresh response
6767PASS RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and fresh response
6868PASS RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and stale response
6969PASS RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and stale response
70 FAIL RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and fresh response assert_equals: expected 2 but got 1
71 FAIL RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and fresh response assert_equals: expected 2 but got 1
 70FAIL RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and fresh response (Assertion failure log disabled)
 71FAIL RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and fresh response (Assertion failure log disabled)
7272PASS RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and stale response
7373PASS RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and stale response
7474PASS RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and fresh response
7575PASS RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and fresh response
7676PASS RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and stale response
7777PASS RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and stale response
78 FAIL RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and fresh response assert_equals: expected 2 but got 1
79 FAIL RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and fresh response assert_equals: expected 2 but got 1
 78FAIL RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and fresh response (Assertion failure log disabled)
 79FAIL RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and fresh response (Assertion failure log disabled)
8080PASS RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and stale response
8181PASS RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and stale response
8282PASS RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and fresh response
8383PASS RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and fresh response
8484PASS RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and stale response
8585PASS RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and stale response
86 FAIL RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and fresh response assert_equals: expected 2 but got 1
87 FAIL RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and fresh response assert_equals: expected 2 but got 1
 86FAIL RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and fresh response (Assertion failure log disabled)
 87FAIL RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and fresh response (Assertion failure log disabled)
8888PASS Responses with the "Cache-Control: no-store" header are not stored in the cache with Etag and stale response
8989PASS Responses with the "Cache-Control: no-store" header are not stored in the cache with date and stale response
9090PASS Responses with the "Cache-Control: no-store" header are not stored in the cache with Etag and fresh response
9191PASS Responses with the "Cache-Control: no-store" header are not stored in the cache with date and fresh response
92 FAIL RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale response assert_equals: expected (undefined) undefined but got (string) "\"0.8827320119852241\""
93 FAIL RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response assert_equals: expected (undefined) undefined but got (string) "Fri, 26 Aug 2016 08:23:55 GMT"
94 FAIL RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh response assert_equals: expected 2 but got 1
95 FAIL RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response assert_equals: expected 2 but got 1
 92FAIL RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale response (Assertion failure log disabled)
 93FAIL RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response (Assertion failure log disabled)
 94FAIL RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh response (Assertion failure log disabled)
 95FAIL RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response (Assertion failure log disabled)
9696PASS RequestCache "reload" mode does store the response in the cache with Etag and stale response
9797PASS RequestCache "reload" mode does store the response in the cache with date and stale response
9898PASS RequestCache "reload" mode does store the response in the cache with Etag and fresh response
9999PASS RequestCache "reload" mode does store the response in the cache with date and fresh response
100 FAIL RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Etag and stale response assert_equals: expected (undefined) undefined but got (string) "\"0.48179460674978747\""
101 FAIL RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with date and stale response assert_equals: expected (undefined) undefined but got (string) "Fri, 26 Aug 2016 08:23:55 GMT"
102 FAIL RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Etag and fresh response assert_equals: expected 2 but got 1
103 FAIL RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with date and fresh response assert_equals: expected 2 but got 1
 100FAIL RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Etag and stale response (Assertion failure log disabled)
 101FAIL RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with date and stale response (Assertion failure log disabled)
 102FAIL RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Etag and fresh response (Assertion failure log disabled)
 103FAIL RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with date and fresh response (Assertion failure log disabled)
104104

LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt

@@Harness Error (TIMEOUT), message = null
33
44PASS img (no src), onload, narrow
55PASS img (no src), resize to wide
6 FAIL img (empty src), onload, narrow assert_equals: expected "" but got "http://localhost:8800/html/semantics/embedded-content/the-img-element/environment-changes/iframed.sub.html?id=9b392575-3b6d-4b94-8e72-d78b37de9b04"
 6FAIL img (empty src), onload, narrow (Assertion failure log disabled)
77PASS img (empty src), resize to wide
88PASS img (src only) broken image, onload, narrow
99PASS img (src only) broken image, resize to wide

@@PASS picture: source (max-width:500px) valid image, img broken image, resize to
2222PASS picture: source (max-width:500px) valid image, img valid image, onload, narrow
2323PASS picture: source (max-width:500px) valid image, img valid image, resize to wide
2424PASS picture: same URL in source (max-width:500px) and img, onload, narrow
25 FAIL picture: same URL in source (max-width:500px) and img, resize to wide assert_unreached: Got unexpected load event Reached unreachable code
 25FAIL picture: same URL in source (max-width:500px) and img, resize to wide (Assertion failure log disabled)
2626PASS img (no src), onload, wide
2727PASS img (no src), resize to narrow
28 FAIL img (empty src), onload, wide assert_equals: expected "" but got "http://localhost:8800/html/semantics/embedded-content/the-img-element/environment-changes/iframed.sub.html?id=6582f991-29b6-4383-a304-b36748b784d5"
 28FAIL img (empty src), onload, wide (Assertion failure log disabled)
2929PASS img (empty src), resize to narrow
3030PASS img (src only) broken image, onload, wide
3131PASS img (src only) broken image, resize to narrow

@@PASS img (srcset 1 cand) broken image, onload, wide
3535PASS img (srcset 1 cand) broken image, resize to narrow
3636PASS img (srcset 1 cand) valid image, onload, wide
3737PASS img (srcset 1 cand) valid image, resize to narrow
38 FAIL picture: source (max-width:500px) broken image, img broken image, onload, wide assert_equals: expected "http://localhost:8800/images/broken.png?71-6582f991-29b6-4383-a304-b36748b784d5" but got "http://localhost:8800/images/broken.png?70-6582f991-29b6-4383-a304-b36748b784d5"
 38FAIL picture: source (max-width:500px) broken image, img broken image, onload, wide (Assertion failure log disabled)
3939TIMEOUT picture: source (max-width:500px) broken image, img broken image, resize to narrow Test timed out
40 FAIL picture: source (max-width:500px) broken image, img valid image, onload, wide assert_equals: expected "http://localhost:8800/images/green-2x2.png?81-6582f991-29b6-4383-a304-b36748b784d5" but got "http://localhost:8800/images/broken.png?80-6582f991-29b6-4383-a304-b36748b784d5"
 40FAIL picture: source (max-width:500px) broken image, img valid image, onload, wide (Assertion failure log disabled)
4141TIMEOUT picture: source (max-width:500px) broken image, img valid image, resize to narrow Test timed out
42 FAIL picture: source (max-width:500px) valid image, img broken image, onload, wide assert_equals: expected "http://localhost:8800/images/broken.png?91-6582f991-29b6-4383-a304-b36748b784d5" but got "http://localhost:8800/images/green-1x1.png?90-6582f991-29b6-4383-a304-b36748b784d5"
 42FAIL picture: source (max-width:500px) valid image, img broken image, onload, wide (Assertion failure log disabled)
4343TIMEOUT picture: source (max-width:500px) valid image, img broken image, resize to narrow Test timed out
44 FAIL picture: source (max-width:500px) valid image, img valid image, onload, wide assert_equals: expected "http://localhost:8800/images/green-2x2.png?101-6582f991-29b6-4383-a304-b36748b784d5" but got "http://localhost:8800/images/green-1x1.png?100-6582f991-29b6-4383-a304-b36748b784d5"
 44FAIL picture: source (max-width:500px) valid image, img valid image, onload, wide (Assertion failure log disabled)
4545TIMEOUT picture: source (max-width:500px) valid image, img valid image, resize to narrow Test timed out
4646PASS picture: same URL in source (max-width:500px) and img, onload, wide
4747PASS picture: same URL in source (max-width:500px) and img, resize to narrow

LayoutTests/resources/testharnessreport.js

@@if (self.testRunner) {
6767 if (stackIndex > 0)
6868 message = message.substr(0, stackIndex);
6969 }
 70 if (window.testRunner && !testRunner.shouldLogTestharnessFailures && tests[i].status == 1)
 71 message = " (Assertion failure log disabled)"
7072 resultStr += convertResult(tests[i].status) + " " + (tests[i].name != null ? tests[i].name : "") + " " + message + "\n";
7173 }
7274

LayoutTests/tests-options.json

22 "imported/w3c/web-platform-tests/XMLHttpRequest/progress-events-response-data-gzip.htm": [
33 "slow"
44 ],
5  "imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-bogus.htm": [
 5 "imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm": [
 6 "--no-testharness-failure-log"
 7 ],
 8 "imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-bogus.htm": [
69 "slow"
710 ],
811 "imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-timeout-aborted.html": [

114117 "slow"
115118 ],
116119 "imported/w3c/web-platform-tests/fetch/api/request/request-cache.html": [
117  "slow"
 120 "slow",
 121 "--no-testharness-failure-log"
118122 ],
119123 "imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html": [
120124 "slow"

181185 ],
182186 "imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection.html": [
183187 "slow"
 188 ],
 189 "imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html": [
 190 "--no-testharness-failure-log"
184191 ]
185192}