Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 (async function(testRunner) { | |
| 2 let {page, session, dp} = await testRunner.startBlank(''); | |
| 3 | |
| 4 function statementsExample() | |
|
chenwilliam
2017/06/30 20:23:27
should we standardize on whether to have inspected
| |
| 5 { | |
| 6 var self = arguments.callee; | |
| 7 | |
| 8 debugger; | |
| 9 | |
| 10 self.step = 1; | |
| 11 | |
| 12 self.step = 2; | |
| 13 | |
| 14 void [ | |
| 15 self.step = 3, | |
| 16 self.step = 4, | |
| 17 self.step = 5, | |
| 18 self.step = 6 | |
| 19 ]; | |
| 20 | |
| 21 self.step = 7; | |
| 22 } | |
| 23 | |
| 24 var scenarios = [ | |
| 25 // requested line number, expected control parameter 'step', expected line number | |
| 26 [ 8, 1, 8 ], | |
| 27 [ 8, 1, 8 ], | |
| 28 [ 12, 6, 17 ], | |
| 29 [ 13, 6, 17 ], | |
| 30 [ 17, 6, 17 ], | |
| 31 [ 17, 6, 17 ], | |
| 32 ]; | |
| 33 | |
| 34 dp.Debugger.enable(); | |
| 35 var functionResponse = await dp.Runtime.evaluate({expression: statementsExampl e.toString() + '; statementsExample'}); | |
| 36 var functionObjectId = functionResponse.result.result.objectId; | |
| 37 | |
| 38 var detailsResponse = await dp.Runtime.getProperties({objectId: functionObject Id}); | |
| 39 var scriptId; | |
| 40 for (var prop of detailsResponse.result.internalProperties) { | |
| 41 if (prop.name === '[[FunctionLocation]]') | |
| 42 scriptId = prop.value.value.scriptId; | |
| 43 } | |
| 44 | |
| 45 for (var scenario of scenarios) { | |
| 46 var lineNumber = scenario[0]; | |
| 47 var expectedResult = scenario[1]; | |
| 48 var expectedLineNumber = scenario[2]; | |
| 49 dp.Runtime.evaluate({expression: 'setTimeout(statementsExample, 0)' }); | |
| 50 await dp.Debugger.oncePaused(); | |
| 51 testRunner.log('Paused on debugger statement'); | |
| 52 | |
| 53 var continueToLocationResponse = await dp.Debugger.continueToLocation({locat ion: {scriptId, lineNumber, columnNumber: 0}}); | |
| 54 if (continueToLocationResponse.error) { | |
| 55 testRunner.log('Failed to execute continueToLocation ' + JSON.stringify(co ntinueToLocationResponse.error)); | |
| 56 testRunner.completeTest(); | |
| 57 return; | |
| 58 } | |
| 59 | |
| 60 var messageObject = await dp.Debugger.oncePaused(); | |
| 61 testRunner.log('Paused after continueToLocation'); | |
| 62 var actualLineNumber = messageObject.params.callFrames[0].location.lineNumbe r; | |
| 63 testRunner.log('Stopped on line ' + actualLineNumber + ', expected ' + expec tedLineNumber + ', requested ' + lineNumber + ', (0-based numbers).'); | |
| 64 | |
| 65 dp.Debugger.onPaused(handleDebuggerPausedUnexpected); | |
| 66 var resultValue = (await dp.Runtime.evaluate({expression: 'statementsExample .step' })).result.result.value; | |
| 67 testRunner.log(`Control parameter 'step' calculation result: ${resultValue}, expected: ${expectedResult}`); | |
| 68 testRunner.log(resultValue == expectedResult ? 'SUCCESS' : 'FAIL'); | |
| 69 dp.Debugger.resume(); | |
| 70 dp.Debugger.offPaused(handleDebuggerPausedUnexpected); | |
| 71 | |
| 72 function handleDebuggerPausedUnexpected() { | |
| 73 testRunner.log('Unexpected debugger pause'); | |
| 74 testRunner.completeTest(); | |
| 75 } | |
| 76 } | |
| 77 | |
| 78 testRunner.completeTest(); | |
| 79 }) | |
| OLD | NEW |