chrome-devtools-frontend
Version:
Chrome DevTools UI
56 lines (48 loc) • 2.3 kB
text/typescript
// Copyright 2022 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 Common from '../../core/common/common.js';
import * as SDK from '../../core/sdk/sdk.js';
import * as Protocol from '../../generated/protocol.js';
import {renderElementIntoDOM} from '../../testing/DOMHelpers.js';
import {createTarget} from '../../testing/EnvironmentHelpers.js';
import {expectCall} from '../../testing/ExpectStubCall.js';
import {describeWithMockConnection} from '../../testing/MockConnection.js';
import * as Emulation from './emulation.js';
describeWithMockConnection('MediaQueryInspector', () => {
let target: SDK.Target.Target;
let throttler: Common.Throttler.Throttler;
let inspector: Emulation.MediaQueryInspector.MediaQueryInspector;
beforeEach(() => {
const tabTarget = createTarget({type: SDK.Target.Type.TAB});
createTarget({parentTarget: tabTarget, subtype: 'prerender'});
target = createTarget({parentTarget: tabTarget});
throttler = new Common.Throttler.Throttler(0);
});
afterEach(() => {
inspector.detach();
});
it('redners media queries', async () => {
inspector = new Emulation.MediaQueryInspector.MediaQueryInspector(
() => 42,
(_: number) => {},
throttler,
);
renderElementIntoDOM(inspector);
assert.lengthOf(inspector.contentElement.querySelectorAll('.media-inspector-marker'), 0);
const cssModel = target.model(SDK.CSSModel.CSSModel);
assert.exists(cssModel);
const CSS_MEDIA = {
text: 'foo',
source: Protocol.CSS.CSSMediaSource.MediaRule,
mediaList: [{expressions: [{value: 42, computedLength: 42, unit: 'UNIT', feature: 'max-width'}], active: true}],
} as unknown as Protocol.CSS.CSSMedia;
sinon.stub(cssModel, 'getMediaQueries').resolves([new SDK.CSSMedia.CSSMedia(cssModel, CSS_MEDIA)]);
const workScheduled = expectCall(sinon.stub(throttler, 'schedule'));
cssModel.dispatchEventToListeners(
SDK.CSSModel.Events.StyleSheetAdded, {} as SDK.CSSStyleSheetHeader.CSSStyleSheetHeader);
const [work] = await workScheduled;
await work();
assert.lengthOf(inspector.contentElement.querySelectorAll('.media-inspector-marker'), 1);
});
});