Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(767)

Unified Diff: third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js

Issue 2742623002: DevTools: improve test infrastructure w/ devtools driving the test (Closed)
Patch Set: fixup Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js
diff --git a/third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js b/third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js
new file mode 100644
index 0000000000000000000000000000000000000000..11ab7fe924c2e5b6ba587323897253b684f93012
--- /dev/null
+++ b/third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js
@@ -0,0 +1,112 @@
+// Copyright 2017 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.
+
+// Export all public members onto TestRunner namespace so test writers have a simpler API
+
+/**
+ * @param {!SDK.Target} target
+ */
+IntegrationTestRunner._setupTestHelpers = function(target) {
+ TestRunner.CSSAgent = target.cssAgent();
+ TestRunner.DeviceOrientationAgent = target.deviceOrientationAgent();
+ TestRunner.DOMAgent = target.domAgent();
+ TestRunner.DOMDebuggerAgent = target.domdebuggerAgent();
+ TestRunner.DebuggerAgent = target.debuggerAgent();
+ TestRunner.EmulationAgent = target.emulationAgent();
+ TestRunner.HeapProfilerAgent = target.heapProfilerAgent();
+ TestRunner.InspectorAgent = target.inspectorAgent();
+ TestRunner.NetworkAgent = target.networkAgent();
+ TestRunner.PageAgent = target.pageAgent();
+ TestRunner.ProfilerAgent = target.profilerAgent();
+ TestRunner.RuntimeAgent = target.runtimeAgent();
+ TestRunner.TargetAgent = target.targetAgent();
+
+ TestRunner.consoleModel = target.consoleModel;
+ TestRunner.networkManager = SDK.NetworkManager.fromTarget(target);
+ TestRunner.securityOriginManager = SDK.SecurityOriginManager.fromTarget(target);
+ TestRunner.resourceTreeModel = SDK.ResourceTreeModel.fromTarget(target);
+ TestRunner.networkLog = SDK.NetworkLog.fromTarget(target);
+ TestRunner.debuggerModel = SDK.DebuggerModel.fromTarget(target);
+ TestRunner.runtimeModel = target.runtimeModel;
+ TestRunner.domModel = SDK.DOMModel.fromTarget(target);
+ TestRunner.cssModel = target.model(SDK.CSSModel);
+ TestRunner.powerProfiler = target.powerProfiler;
+ TestRunner.cpuProfilerModel = target.model(SDK.CPUProfilerModel);
+ TestRunner.heapProfilerModel = target.heapProfilerModel;
+ TestRunner.animationModel = target.animationModel;
+ TestRunner.serviceWorkerCacheModel = target.serviceWorkerCacheModel;
+ TestRunner.serviceWorkerManager = target.model(SDK.ServiceWorkerManager);
+ TestRunner.tracingManager = target.model(SDK.TracingManager);
+ TestRunner.mainTarget = target;
+};
+
+/**
+ * @param {string} code
+ * @param {!Function} callback
+ */
+TestRunner.evaluateInPage = function(code, callback) {
+ callback = TestRunner.safeWrap(callback);
+
+ /**
+ * @param {?Protocol.Error} error
+ * @param {!SDK.RemoteObject=} result
+ * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails
+ */
+ function mycallback(error, result, exceptionDetails) {
+ if (!error)
+ callback(TestRunner.runtimeModel.createRemoteObject(result), exceptionDetails);
+ }
+ TestRunner.RuntimeAgent.evaluate(code, 'console', false, mycallback);
+};
+
+/**
+ * @param {string} code
+ * @return {!Promise<!SDK.RemoteObject>}
+ */
+TestRunner.evaluateInPagePromise = function(code) {
+ return new Promise(success => TestRunner.evaluateInPage(code, success));
+};
+
+/**
+ * @param {!Function} callback
+ */
+TestRunner.deprecatedRunAfterPendingDispatches = function(callback) {
+ var barrier = new CallbackBarrier();
+ var targets = SDK.targetManager.targets();
+ for (var i = 0; i < targets.length; ++i)
+ targets[i]._deprecatedRunAfterPendingDispatches(barrier.createCallback());
+ barrier.callWhenDone(TestRunner.safeWrap(callback));
+};
+
+(function() {
+ /** @type {boolean} */
+ IntegrationTestRunner._startedTest = false;
+
+ /**
+ * @implements {SDK.TargetManager.Observer}
+ */
+ class TestObserver {
+ /**
+ * @param {!SDK.Target} target
+ * @override
+ */
+ targetAdded(target) {
+ if (IntegrationTestRunner._startedTest)
+ return;
+ IntegrationTestRunner._startedTest = true;
+ self.runtime.loadModulePromise('integration_test_runner').then(() => {
+ IntegrationTestRunner._setupTestHelpers(target);
+ TestRunner.start();
+ });
+ }
+
+ /**
+ * @param {!SDK.Target} target
+ * @override
+ */
+ targetRemoved(target) {
+ }
+ }
+ SDK.targetManager.observeTargets(new TestObserver());
+})();

Powered by Google App Engine
This is Rietveld 408576698