chrome-devtools-frontend
Version:
Chrome DevTools UI
131 lines (116 loc) • 5.58 kB
text/typescript
// Copyright 2021 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.
import * as SDK from '../../core/sdk/sdk.js';
import * as Protocol from '../../generated/protocol.js';
import {describeWithLocale} from '../../testing/EnvironmentHelpers.js';
import * as Resources from './application.js';
import View = Resources.ServiceWorkerUpdateCycleView;
describeWithLocale('ServiceWorkerUpdateCycleView', () => {
let versionId = 0;
const registrationId = 'fake-sw-id' as Protocol.ServiceWorker.RegistrationID;
it('calculates update cycle ranges', () => {
const payload: Protocol.ServiceWorker.ServiceWorkerRegistration = {registrationId, scopeURL: '', isDeleted: false};
const registration: SDK.ServiceWorkerManager.ServiceWorkerRegistration =
new SDK.ServiceWorkerManager.ServiceWorkerRegistration(payload);
let view = new View.ServiceWorkerUpdateCycleView(registration);
let ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 0, 'A nascent registration has no ranges to display.');
versionId++;
let versionPayload: Protocol.ServiceWorker.ServiceWorkerVersion = {
registrationId,
versionId: versionId.toString(),
scriptURL: '',
status: Protocol.ServiceWorker.ServiceWorkerVersionStatus.New,
runningStatus: Protocol.ServiceWorker.ServiceWorkerVersionRunningStatus.Starting,
};
registration.updateVersion(versionPayload);
view = new View.ServiceWorkerUpdateCycleView(registration);
ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 0, 'A new registration has no ranges to display.');
versionId++;
versionPayload = {
registrationId,
versionId: versionId.toString(),
scriptURL: '',
status: Protocol.ServiceWorker.ServiceWorkerVersionStatus.Installing,
runningStatus: Protocol.ServiceWorker.ServiceWorkerVersionRunningStatus.Running,
};
registration.updateVersion(versionPayload);
view = new View.ServiceWorkerUpdateCycleView(registration);
ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 1, 'An installing registration has a range to display.');
versionId++;
versionPayload = {
registrationId,
versionId: versionId.toString(),
scriptURL: '',
status: Protocol.ServiceWorker.ServiceWorkerVersionStatus.Installing,
runningStatus: Protocol.ServiceWorker.ServiceWorkerVersionRunningStatus.Running,
};
registration.updateVersion(versionPayload);
view = new View.ServiceWorkerUpdateCycleView(registration);
ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 1, 'An installing registration (reported multiple times) has a range to display.');
versionId++;
versionPayload = {
registrationId,
versionId: versionId.toString(),
scriptURL: '',
status: Protocol.ServiceWorker.ServiceWorkerVersionStatus.Installed,
runningStatus: Protocol.ServiceWorker.ServiceWorkerVersionRunningStatus.Running,
};
registration.updateVersion(versionPayload);
view = new View.ServiceWorkerUpdateCycleView(registration);
ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 1, 'An installed registration has a range to display. ');
versionId++;
versionPayload = {
registrationId,
versionId: versionId.toString(),
scriptURL: '',
status: Protocol.ServiceWorker.ServiceWorkerVersionStatus.Activating,
runningStatus: Protocol.ServiceWorker.ServiceWorkerVersionRunningStatus.Running,
};
registration.updateVersion(versionPayload);
view = new View.ServiceWorkerUpdateCycleView(registration);
ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 3, 'An activating registration has ranges to display.');
versionId++;
versionPayload = {
registrationId,
versionId: versionId.toString(),
scriptURL: '',
status: Protocol.ServiceWorker.ServiceWorkerVersionStatus.Activating,
runningStatus: Protocol.ServiceWorker.ServiceWorkerVersionRunningStatus.Running,
};
registration.updateVersion(versionPayload);
view = new View.ServiceWorkerUpdateCycleView(registration);
ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 3, 'An activating registration has ranges to display.');
versionId++;
versionPayload = {
registrationId,
versionId: versionId.toString(),
scriptURL: '',
status: Protocol.ServiceWorker.ServiceWorkerVersionStatus.Activated,
runningStatus: Protocol.ServiceWorker.ServiceWorkerVersionRunningStatus.Running,
};
registration.updateVersion(versionPayload);
view = new View.ServiceWorkerUpdateCycleView(registration);
ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 3, 'An activated registration has ranges to display.');
versionId++;
versionPayload = {
registrationId,
versionId: versionId.toString(),
scriptURL: '',
status: Protocol.ServiceWorker.ServiceWorkerVersionStatus.Redundant,
runningStatus: Protocol.ServiceWorker.ServiceWorkerVersionRunningStatus.Stopped,
};
registration.updateVersion(versionPayload);
view = new View.ServiceWorkerUpdateCycleView(registration);
ranges = view.calculateServiceWorkerUpdateRanges();
assert.lengthOf(ranges, 3, 'A redundent registration has ranges to display.');
});
});