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 |