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

Unified Diff: third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-await-promise.js

Issue 2954093003: [DevTools] Migrate inspector-protocol/runtime tests to new harness (Closed)
Patch Set: fail: Created 3 years, 6 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/LayoutTests/inspector-protocol/runtime/runtime-await-promise.js
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-await-promise.js b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-await-promise.js
new file mode 100644
index 0000000000000000000000000000000000000000..56e102ec4c397e297a5ca5d593ef431591c46327
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-await-promise.js
@@ -0,0 +1,91 @@
+(async function(testRunner) {
+ let {page, session, dp} = await testRunner.startBlank('Tests that Runtime.awaitPromise works.');
+
+ function dumpResult(result) {
+ if (result.exceptionDetails) {
+ if (result.exceptionDetails.stackTrace && result.exceptionDetails.stackTrace.parent) {
+ for (var frame of result.exceptionDetails.stackTrace.parent.callFrames) {
+ frame.scriptId = 0;
+ frame.url = '';
+ }
+ }
+ result.exceptionDetails.exceptionId = 0;
+ if (result.exceptionDetails.exception)
+ result.exceptionDetails.exception.objectId = 0;
+ }
+ testRunner.logObject(result);
+ }
+
+ await session.evaluate(`
+ var resolveCallback;
+ var rejectCallback;
+ function createPromise() {
+ return new Promise((resolve, reject) => { resolveCallback = resolve; rejectCallback = reject });
+ }
+
+ function resolvePromise() {
+ resolveCallback(239);
+ resolveCallback = undefined;
+ rejectCallback = undefined;
+ }
+
+ function rejectPromise() {
+ rejectCallback(239);
+ resolveCallback = undefined;
+ rejectCallback = undefined;
+ }
+
+ function runGC() {
+ if (window.gc)
+ window.gc();
+ }
+ `);
+
+ await dp.Debugger.enable();
+ await dp.Debugger.setAsyncCallStackDepth({ maxDepth: 128 });
+
+ await testRunner.runTestSuite([
+ async function testResolvedPromise() {
+ var result = await dp.Runtime.evaluate({ expression: 'Promise.resolve(239)'});
+ result = await dp.Runtime.awaitPromise({ promiseObjectId: result.result.result.objectId, returnByValue: false, generatePreview: true });
+ dumpResult(result.result);
+ },
+
+ async function testRejectedPromise() {
+ var result = await dp.Runtime.evaluate({ expression: 'Promise.reject({ a : 1 })'});
+ result = await dp.Runtime.awaitPromise({ promiseObjectId: result.result.result.objectId, returnByValue: true, generatePreview: false });
+ dumpResult(result.result);
+ },
+
+ async function testRejectedPromiseWithStack() {
+ var result = await dp.Runtime.evaluate({ expression: 'createPromise()'});
+ var promise = dp.Runtime.awaitPromise({ promiseObjectId: result.result.result.objectId });
+ dp.Runtime.evaluate({ expression: 'rejectPromise()' });
+ result = await promise;
+ dumpResult(result.result);
+ },
+
+ async function testPendingPromise() {
+ var result = await dp.Runtime.evaluate({ expression: 'createPromise()'});
+ var promise = dp.Runtime.awaitPromise({ promiseObjectId: result.result.result.objectId });
+ dp.Runtime.evaluate({ expression: 'resolvePromise()' });
+ result = await promise;
+ dumpResult(result.result);
+ },
+
+ async function testResolvedWithoutArgsPromise() {
+ var result = await dp.Runtime.evaluate({ expression: 'Promise.resolve()'});
+ result = await dp.Runtime.awaitPromise({ promiseObjectId: result.result.result.objectId, returnByValue: true, generatePreview: false });
+ dumpResult(result.result);
+ },
+
+ async function testGarbageCollectedPromise() {
+ var result = await dp.Runtime.evaluate({ expression: 'new Promise(() => undefined)'});
+ var objectId = result.result.result.objectId;
+ var promise = dp.Runtime.awaitPromise({ promiseObjectId: objectId });
+ dp.Runtime.releaseObject({ objectId: objectId}).then(() => dp.Runtime.evaluate({ expression: 'runGC()' }));
+ result = await promise;
+ testRunner.logObject(result.error);
+ }
+ ]);
+})

Powered by Google App Engine
This is Rietveld 408576698