blob: c4488c80ec5ac94e2475d857602f08c7193df78c [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
'use strict';
TestRunner.addResult(`Tests that serviceworker timings are displayed correctly.\n`);
await TestRunner.loadModule('application_test_runner');
await TestRunner.loadModule('network_test_runner');
await TestRunner.showPanel('network');
await TestRunner.reloadPagePromise();
// Reload page
function setRequestValues(request) {
request.setRequestHeaders([{name: 'Request', value: 'request-value'}]);
request.setRequestHeadersText('GET http://example.com/inspector-test.js HTTP/1.1\r\nRequest: headers-text');
request.responseHeaders = [{name: 'Response', value: 'response-value'}];
request.responseHeadersText = 'HTTP/1.1 200 OK\r\nResponse: headers-text';
request.requestMethod = 'GET';
request.mimeType = 'text/html';
request.statusCode = 200;
request.statusText = 'OK';
request.setPriority('VeryHigh');
// sample timing values used here are copied from a real request
request.setIssueTime(559396.428899);
request.endTime = 559396.439805;
request.fetchedViaServiceWorker = true;
request.timing = {
'connectEnd': -1,
'connectStart': -1,
'dnsEnd': -1,
'dnsStart': -1,
'proxyEnd': -1,
'proxyStart': -1,
'pushEnd': 0,
'pushStart': 0,
'receiveHeadersEnd': 6.718,
'requestTime': 559396.428899,
'sendEnd': 0.003,
'sendStart': 0.003,
'sslEnd': -1,
'sslStart': -1,
'workerFetchStart': 0.484,
'workerReady': 0.484,
'workerRespondWithSettled': 5.959,
'workerStart': 0.003,
};
}
const fakeInitiator = {
type: 'parser',
url: 'http://example.com/inspector-test.js',
lineNumber: 117
};
var testRequest = new SDK.NetworkRequest(
'testRequest', 'http://example.com/inspector-test.js', 'http://example.com/fake-document-url', 1, 1, fakeInitiator);
setRequestValues(testRequest);
const calculator = UI.panels.network._calculator;
const tableElement = Network.RequestTimingView.createTimingTable(testRequest, calculator);
for (const element of tableElement.getElementsByTagName('td')) {
const content = element.textContent;
// Exclude timings that depend on runtime calculations
if (!content.includes('Queued at') && !content.includes('Started at')) {
TestRunner.addResult(element.textContent);
}
}
TestRunner.completeTest();
})();