blob: 1f016a4af30c3d775ff49fb47473b14eb024edf9 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import type * as Protocol from '../../generated/protocol.js';
import {createTarget} from '../../testing/EnvironmentHelpers.js';
import {describeWithMockConnection, setMockConnectionResponseHandler} from '../../testing/MockConnection.js';
import * as Network from './network.js';
describe('userAgentGroups', () => {
it('Chrome UAs all have placeholder for major version patching', () => {
const {userAgentGroups} = Network.NetworkConfigView;
const chromeUAs = userAgentGroups.map(g => g.values).flat().filter(v => v.value.includes(' Chrome/'));
assert.isAtLeast(chromeUAs.length, 10);
// We should not add any new UAs without the %s that gets patched via `patchUserAgentWithChromeVersion`
assert.isTrue(chromeUAs.every(v => v.value.includes('Chrome/%s')));
});
});
describeWithMockConnection('NetworkConfigView', () => {
it('supports enabling data saver emulation', async () => {
createTarget();
const saveDataSpy = Promise.withResolvers<Protocol.Emulation.SetDataSaverOverrideRequest|undefined>();
setMockConnectionResponseHandler('Emulation.setDataSaverOverride', request => {
saveDataSpy.resolve(request);
const {promise, resolve} = Promise.withResolvers<Protocol.Emulation.SetDataSaverOverrideRequest|undefined>();
saveDataSpy.promise = promise;
saveDataSpy.resolve = resolve;
return {};
});
const networkConfigView = Network.NetworkConfigView.NetworkConfigView.instance();
const saveDataSelect = networkConfigView.contentElement.querySelector(
'select[aria-label="Override the value reported by navigator.connection.saveData on the page"]');
assert.exists(saveDataSelect);
assert.instanceOf(saveDataSelect, HTMLSelectElement);
const select = (index: number): Promise<Protocol.Emulation.SetDataSaverOverrideRequest|undefined> => {
const {promise} = saveDataSpy;
saveDataSelect.selectedIndex = index;
saveDataSelect.dispatchEvent(new Event('change'));
return promise;
};
assert.deepEqual(await select(1), {dataSaverEnabled: true});
assert.deepEqual(await select(2), {dataSaverEnabled: false});
assert.deepEqual(await select(0), {});
});
});