mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-18 04:25:15 +08:00
[test] Add and use a canonical helper to activate primary page
Bug: none Change-Id: I1fe2b1403ab85a85342e50d2801d86e5e64c8dce Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/5534703 Commit-Queue: Danil Somsikov <dsv@chromium.org> Commit-Queue: Wolfgang Beyer <wolfi@chromium.org> Reviewed-by: Wolfgang Beyer <wolfi@chromium.org> Auto-Submit: Danil Somsikov <dsv@chromium.org>
This commit is contained in:
committed by
Devtools-frontend LUCI CQ
parent
8223c7d6b3
commit
ebe01d5fff
@@ -5,6 +5,7 @@
|
||||
import * as Protocol from '../../generated/protocol.js';
|
||||
import {createTarget} from '../../testing/EnvironmentHelpers.js';
|
||||
import {describeWithMockConnection} from '../../testing/MockConnection.js';
|
||||
import {activate, getMainFrame, navigate} from '../../testing/ResourceTreeHelpers.js';
|
||||
import type * as Platform from '../platform/platform.js';
|
||||
|
||||
import * as SDK from './sdk.js';
|
||||
@@ -51,8 +52,8 @@ describeWithMockConnection('CSSModel', () => {
|
||||
});
|
||||
|
||||
describe('on primary page change', () => {
|
||||
let target: SDK.Target.Target;
|
||||
let cssModel: SDK.CSSModel.CSSModel|null;
|
||||
let resourceTreeModel: SDK.ResourceTreeModel.ResourceTreeModel|null;
|
||||
const header: Protocol.CSS.CSSStyleSheetHeader = {
|
||||
styleSheetId: 'stylesheet' as Protocol.CSS.StyleSheetId,
|
||||
frameId: 'frame' as Protocol.Page.FrameId,
|
||||
@@ -70,30 +71,21 @@ describeWithMockConnection('CSSModel', () => {
|
||||
endLine: 0,
|
||||
endColumn: 0,
|
||||
};
|
||||
const frame = {
|
||||
url: 'http://example.com/',
|
||||
resourceTreeModel: () => resourceTreeModel,
|
||||
backForwardCacheDetails: {explanations: []},
|
||||
} as unknown as SDK.ResourceTreeModel.ResourceTreeFrame;
|
||||
|
||||
beforeEach(() => {
|
||||
const target = createTarget();
|
||||
resourceTreeModel = target.model(SDK.ResourceTreeModel.ResourceTreeModel);
|
||||
target = createTarget();
|
||||
cssModel = target.model(SDK.CSSModel.CSSModel);
|
||||
});
|
||||
|
||||
it('resets on navigation', () => {
|
||||
assert.exists(cssModel);
|
||||
assert.exists(resourceTreeModel);
|
||||
|
||||
cssModel.styleSheetAdded(header);
|
||||
let styleSheetIds =
|
||||
cssModel.getStyleSheetIdsForURL('http://example.com/styles.css' as Platform.DevToolsPath.UrlString);
|
||||
assert.deepEqual(styleSheetIds, ['stylesheet']);
|
||||
|
||||
resourceTreeModel.dispatchEventToListeners(
|
||||
SDK.ResourceTreeModel.Events.PrimaryPageChanged,
|
||||
{frame, type: SDK.ResourceTreeModel.PrimaryPageChangeType.Navigation});
|
||||
navigate(getMainFrame(target));
|
||||
styleSheetIds =
|
||||
cssModel.getStyleSheetIdsForURL('http://example.com/styles.css' as Platform.DevToolsPath.UrlString);
|
||||
assert.deepEqual(styleSheetIds, []);
|
||||
@@ -101,16 +93,14 @@ describeWithMockConnection('CSSModel', () => {
|
||||
|
||||
it('does not reset on prerender activation', () => {
|
||||
assert.exists(cssModel);
|
||||
assert.exists(resourceTreeModel);
|
||||
|
||||
getMainFrame(target);
|
||||
cssModel.styleSheetAdded(header);
|
||||
let styleSheetIds =
|
||||
cssModel.getStyleSheetIdsForURL('http://example.com/styles.css' as Platform.DevToolsPath.UrlString);
|
||||
assert.deepEqual(styleSheetIds, ['stylesheet']);
|
||||
|
||||
resourceTreeModel.dispatchEventToListeners(
|
||||
SDK.ResourceTreeModel.Events.PrimaryPageChanged,
|
||||
{frame, type: SDK.ResourceTreeModel.PrimaryPageChangeType.Activation});
|
||||
activate(target);
|
||||
styleSheetIds =
|
||||
cssModel.getStyleSheetIdsForURL('http://example.com/styles.css' as Platform.DevToolsPath.UrlString);
|
||||
assert.deepEqual(styleSheetIds, ['stylesheet']);
|
||||
|
||||
@@ -6,7 +6,7 @@ import * as SDK from '../../core/sdk/sdk.js';
|
||||
import * as Protocol from '../../generated/protocol.js';
|
||||
import {createFakeSetting, createTarget} from '../../testing/EnvironmentHelpers.js';
|
||||
import {describeWithMockConnection, dispatchEvent} from '../../testing/MockConnection.js';
|
||||
import {getMainFrame, navigate} from '../../testing/ResourceTreeHelpers.js';
|
||||
import {activate, getMainFrame, navigate} from '../../testing/ResourceTreeHelpers.js';
|
||||
import {
|
||||
mkInspectorCspIssue,
|
||||
StubIssue,
|
||||
@@ -82,15 +82,8 @@ describeWithMockConnection('IssuesManager', () => {
|
||||
it('keeps issues of prerendered page upon activation', () => {
|
||||
const {issuesManager, prerenderTarget} = assertOutOfScopeIssuesAreFiltered();
|
||||
|
||||
const resourceTreeModel = prerenderTarget.model(SDK.ResourceTreeModel.ResourceTreeModel);
|
||||
assert.exists(resourceTreeModel);
|
||||
const frame = {url: 'http://example.com/', resourceTreeModel: () => resourceTreeModel} as
|
||||
SDK.ResourceTreeModel.ResourceTreeFrame;
|
||||
|
||||
SDK.TargetManager.TargetManager.instance().setScopeTarget(prerenderTarget);
|
||||
resourceTreeModel.dispatchEventToListeners(
|
||||
SDK.ResourceTreeModel.Events.PrimaryPageChanged,
|
||||
{frame, type: SDK.ResourceTreeModel.PrimaryPageChangeType.Activation});
|
||||
activate(prerenderTarget);
|
||||
assert.deepStrictEqual(Array.from(issuesManager.issues()).map(getBlockedUrl), ['url2']);
|
||||
});
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import * as SDK from '../../core/sdk/sdk.js';
|
||||
import * as Protocol from '../../generated/protocol.js';
|
||||
import {createTarget} from '../../testing/EnvironmentHelpers.js';
|
||||
import {describeWithMockConnection} from '../../testing/MockConnection.js';
|
||||
import {getMainFrame, LOADER_ID, navigate} from '../../testing/ResourceTreeHelpers.js';
|
||||
import {activate, getMainFrame, LOADER_ID, navigate} from '../../testing/ResourceTreeHelpers.js';
|
||||
import * as Logs from '../logs/logs.js';
|
||||
|
||||
function url(input: string): Platform.DevToolsPath.UrlString {
|
||||
@@ -316,7 +316,6 @@ describeWithMockConnection('NetworkLog', () => {
|
||||
describe('on primary page changed', () => {
|
||||
let networkLog: Logs.NetworkLog.NetworkLog;
|
||||
let target: SDK.Target.Target;
|
||||
let frame: SDK.ResourceTreeModel.ResourceTreeFrame;
|
||||
|
||||
beforeEach(() => {
|
||||
Common.Settings.Settings.instance().moduleSetting('network-log.preserve-log').set(false);
|
||||
@@ -333,13 +332,6 @@ describeWithMockConnection('NetworkLog', () => {
|
||||
Protocol.Network.RequestWillBeSentEvent;
|
||||
networkDispatcher.requestWillBeSent(requestWillBeSentEvent2);
|
||||
assert.strictEqual(networkLog.requests().length, 2);
|
||||
|
||||
frame = {
|
||||
url: 'http://example.com/',
|
||||
backForwardCacheDetails: {},
|
||||
unreachableUrl: () => Platform.DevToolsPath.EmptyUrlString,
|
||||
resourceTreeModel: () => target.model(SDK.ResourceTreeModel.ResourceTreeModel)!,
|
||||
} as SDK.ResourceTreeModel.ResourceTreeFrame;
|
||||
});
|
||||
|
||||
it('discards requests with mismatched loaderId on navigation', () => {
|
||||
@@ -348,9 +340,7 @@ describeWithMockConnection('NetworkLog', () => {
|
||||
});
|
||||
|
||||
it('does not discard requests on prerender activation', () => {
|
||||
target.model(SDK.ResourceTreeModel.ResourceTreeModel)!.dispatchEventToListeners(
|
||||
SDK.ResourceTreeModel.Events.PrimaryPageChanged,
|
||||
{frame, type: SDK.ResourceTreeModel.PrimaryPageChangeType.Activation});
|
||||
activate(target);
|
||||
assert.deepEqual(networkLog.requests().map(request => request.requestId()), ['mockId1', 'mockId2']);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -8,7 +8,7 @@ import * as Bindings from '../../models/bindings/bindings.js';
|
||||
import * as Workspace from '../../models/workspace/workspace.js';
|
||||
import {createTarget, registerNoopActions} from '../../testing/EnvironmentHelpers.js';
|
||||
import {describeWithMockConnection} from '../../testing/MockConnection.js';
|
||||
import {getMainFrame, navigate} from '../../testing/ResourceTreeHelpers.js';
|
||||
import {activate, getMainFrame, navigate} from '../../testing/ResourceTreeHelpers.js';
|
||||
import * as Coordinator from '../../ui/components/render_coordinator/render_coordinator.js';
|
||||
|
||||
import * as Coverage from './coverage.js';
|
||||
@@ -157,19 +157,7 @@ describeWithMockConnection('CoverageView', () => {
|
||||
|
||||
// Create 2nd target for the prerendered frame.
|
||||
const {startSpy: startSpy2, stopSpy: stopSpy2, target: target2} = setupTargetAndModels();
|
||||
let frame = {
|
||||
url: 'http://www.example.com/',
|
||||
displayName: () => 'frameName',
|
||||
parentFrame: () => null,
|
||||
resourceTreeModel: () => target2.model(SDK.ResourceTreeModel.ResourceTreeModel)!,
|
||||
backForwardCacheDetails: {restoredFromCache: false},
|
||||
id: 'myFrameId',
|
||||
childFrames: [],
|
||||
} as unknown as SDK.ResourceTreeModel.ResourceTreeFrame;
|
||||
const resourceTreeModel = target2.model(SDK.ResourceTreeModel.ResourceTreeModel)!;
|
||||
resourceTreeModel.dispatchEventToListeners(
|
||||
SDK.ResourceTreeModel.Events.PrimaryPageChanged,
|
||||
{frame, type: SDK.ResourceTreeModel.PrimaryPageChangeType.Activation});
|
||||
activate(target2);
|
||||
await coordinator.done({waitForWork: true});
|
||||
assert.isFalse(isShowingLandingPage(view));
|
||||
assert.isFalse(isShowingResults(view));
|
||||
@@ -180,13 +168,7 @@ describeWithMockConnection('CoverageView', () => {
|
||||
assert.isTrue(startSpy2.calledOnce);
|
||||
assert.isTrue(stopSpy2.notCalled);
|
||||
|
||||
frame = {
|
||||
...frame,
|
||||
url: 'http://www.example.com/page',
|
||||
} as unknown as SDK.ResourceTreeModel.ResourceTreeFrame;
|
||||
resourceTreeModel.dispatchEventToListeners(
|
||||
SDK.ResourceTreeModel.Events.PrimaryPageChanged,
|
||||
{frame, type: SDK.ResourceTreeModel.PrimaryPageChangeType.Navigation});
|
||||
navigate(getMainFrame(target2), {url: 'http://www.example.com/page'});
|
||||
assert.isFalse(isShowingLandingPage(view));
|
||||
assert.isTrue(isShowingResults(view));
|
||||
assert.isFalse(isShowingPrerenderPage(view));
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// found in the LICENSE file.
|
||||
import * as Common from '../../core/common/common.js';
|
||||
import * as Host from '../../core/host/host.js';
|
||||
import * as Platform from '../../core/platform/platform.js';
|
||||
import type * as Platform from '../../core/platform/platform.js';
|
||||
import * as Root from '../../core/root/root.js';
|
||||
import * as SDK from '../../core/sdk/sdk.js';
|
||||
import * as Protocol from '../../generated/protocol.js';
|
||||
@@ -17,6 +17,7 @@ import {
|
||||
import {createTarget} from '../../testing/EnvironmentHelpers.js';
|
||||
import {stubFileManager} from '../../testing/FileManagerHelpers.js';
|
||||
import {describeWithMockConnection, dispatchEvent} from '../../testing/MockConnection.js';
|
||||
import {activate} from '../../testing/ResourceTreeHelpers.js';
|
||||
import * as Coordinator from '../../ui/components/render_coordinator/render_coordinator.js';
|
||||
import * as UI from '../../ui/legacy/legacy.js';
|
||||
|
||||
@@ -335,21 +336,11 @@ describeWithMockConnection('NetworkLogView', () => {
|
||||
assert.deepEqual(
|
||||
rootNode.children.map(n => (n as Network.NetworkDataGridNode.NetworkNode).request()), [request1, request2]);
|
||||
|
||||
const resourceTreeModel = target.model(SDK.ResourceTreeModel.ResourceTreeModel);
|
||||
assert.exists(resourceTreeModel);
|
||||
const frame = {
|
||||
url: 'http://example.com/',
|
||||
unreachableUrl: () => Platform.DevToolsPath.EmptyUrlString,
|
||||
resourceTreeModel: () => resourceTreeModel,
|
||||
} as SDK.ResourceTreeModel.ResourceTreeFrame;
|
||||
resourceTreeModel.dispatchEventToListeners(
|
||||
SDK.ResourceTreeModel.Events.PrimaryPageChanged,
|
||||
{frame, type: SDK.ResourceTreeModel.PrimaryPageChangeType.Activation});
|
||||
activate(target);
|
||||
await coordinator.done();
|
||||
assert.deepEqual(
|
||||
rootNode.children.map(n => (n as Network.NetworkDataGridNode.NetworkNode).request()),
|
||||
[request1, request2, request3]);
|
||||
|
||||
networkLogView.detach();
|
||||
});
|
||||
|
||||
|
||||
@@ -87,3 +87,12 @@ export function navigate(
|
||||
const effectivePayload = getEffectivePayload(frame.id, FRAME, framePayload);
|
||||
frame.resourceTreeModel().frameNavigated(effectivePayload, type);
|
||||
}
|
||||
|
||||
export function activate(target: SDK.Target.Target): void {
|
||||
const resourceTreeModel = target.model(SDK.ResourceTreeModel.ResourceTreeModel)!;
|
||||
const frame = getMainFrame(target);
|
||||
sinon.stub(frame, 'isPrimaryFrame').returns(true);
|
||||
resourceTreeModel.dispatchEventToListeners(
|
||||
SDK.ResourceTreeModel.Events.PrimaryPageChanged,
|
||||
{frame, type: SDK.ResourceTreeModel.PrimaryPageChangeType.Activation});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user