commit
415b8c9398
@ -0,0 +1,25 @@ |
||||
const EventEmitter = require('events') |
||||
|
||||
class debugTransaction extends EventEmitter { |
||||
command (index = 0) { |
||||
this.api.perform((done) => { |
||||
checkStyle(this.api, index, () => { |
||||
done() |
||||
this.emit('complete') |
||||
}) |
||||
}) |
||||
return this |
||||
} |
||||
} |
||||
|
||||
function checkStyle (browser, index, callback) { |
||||
browser.pause(2000).execute(function (index) { |
||||
const debugBtn = document.querySelectorAll('*[data-shared="txLoggerDebugButton"]')[index] |
||||
|
||||
debugBtn.click() |
||||
}, [index], function () { |
||||
callback() |
||||
}) |
||||
} |
||||
|
||||
module.exports = debugTransaction |
@ -0,0 +1,115 @@ |
||||
'use strict' |
||||
var init = require('../helpers/init') |
||||
var sauce = require('./sauce') |
||||
|
||||
module.exports = { |
||||
|
||||
before: function (browser, done) { |
||||
init(browser, done) |
||||
}, |
||||
|
||||
'@sources': function () { |
||||
return sources |
||||
}, |
||||
|
||||
'Should launch debugger': function (browser) { |
||||
browser.addFile('blah.sol', sources[0]['browser/blah.sol']) |
||||
.clickLaunchIcon('udapp') |
||||
.waitForElementPresent('*[title="Deploy - transact (not payable)"]') |
||||
.click('*[title="Deploy - transact (not payable)"]') |
||||
.debugTransaction(0) |
||||
.assert.containsText('*[data-id="sidePanelSwapitTitle"]', 'DEBUGGER') |
||||
}, |
||||
|
||||
'Should debug failing transaction': function (browser) { |
||||
browser.waitForElementVisible('*[data-id="verticalIconsKindudapp"]') |
||||
.clickLaunchIcon('udapp') |
||||
.waitForElementPresent('*[data-id="universalDappUiTitleExpander"]') |
||||
.click('*[data-id="universalDappUiTitleExpander"]') |
||||
.scrollAndClick('*[title="string name, uint256 goal"]') |
||||
.setValue('*[title="string name, uint256 goal"]', '"toast", 999') |
||||
.click('*[data-id="createProject - transact (not payable)"]') |
||||
.debugTransaction(1) |
||||
.pause(2000) |
||||
.scrollAndClick('*[data-id="solidityLocals"]') |
||||
.assert.containsText('*[data-id="solidityLocals"]', 'toast') |
||||
.assert.containsText('*[data-id="solidityLocals"]', '999') |
||||
}, |
||||
|
||||
'Should debug transaction using slider': function (browser) { |
||||
browser.waitForElementVisible('*[data-id="verticalIconsKindudapp"]') |
||||
.waitForElementVisible('*[data-id="slider"]') |
||||
.click('*[data-id="slider"]') |
||||
.setValue('*[data-id="slider"]', 50) |
||||
.pause(2000) |
||||
.assert.containsText('*[data-id="solidityLocals"]', 'no locals') |
||||
.assert.containsText('*[data-id="stepdetail"]', 'vm trace step: 92') |
||||
}, |
||||
|
||||
'Should step back and forward transaction': function (browser) { |
||||
browser.waitForElementVisible('*[data-id="verticalIconsKindudapp"]') |
||||
.waitForElementPresent('*[data-id="buttonNavigatorIntoBack"]') |
||||
.scrollAndClick('*[data-id="buttonNavigatorIntoBack"]') |
||||
.pause(2000) |
||||
.assert.containsText('*[data-id="stepdetail"]', 'vm trace step: 91') |
||||
.assert.containsText('*[data-id="stepdetail"]', 'execution step: 91') |
||||
.click('*[data-id="buttonNavigatorIntoForward"]') |
||||
.pause(2000) |
||||
.assert.containsText('*[data-id="stepdetail"]', 'vm trace step: 92') |
||||
.assert.containsText('*[data-id="stepdetail"]', 'execution step: 92') |
||||
}, |
||||
|
||||
'Should jump through breakpoints': function (browser) { |
||||
browser.waitForElementVisible('*[data-id="editorInput"]') |
||||
.click('.ace_gutter-cell:nth-of-type(10)') |
||||
.click('.ace_gutter-cell:nth-of-type(20)') |
||||
.waitForElementVisible('*[data-id="buttonNavigatorJumpPreviousBreakpoint"]') |
||||
.click('*[data-id="buttonNavigatorJumpPreviousBreakpoint"]') |
||||
.pause(2000) |
||||
.assert.containsText('*[data-id="stepdetail"]', 'vm trace step: 0') |
||||
.assert.containsText('*[data-id="stepdetail"]', 'execution step: 0') |
||||
.click('*[data-id="buttonNavigatorJumpNextBreakpoint"]') |
||||
.pause(2000) |
||||
.assert.containsText('*[data-id="stepdetail"]', 'vm trace step: 140') |
||||
.assert.containsText('*[data-id="stepdetail"]', 'execution step: 140') |
||||
.end() |
||||
}, |
||||
|
||||
tearDown: sauce |
||||
} |
||||
|
||||
var sources = [ |
||||
{ |
||||
'browser/blah.sol': { |
||||
content: ` |
||||
pragma solidity >=0.4.22 <0.6.0; |
||||
|
||||
contract Kickstarter { |
||||
|
||||
enum State { Started, Completed } |
||||
|
||||
struct Project { |
||||
address owner; |
||||
string name; |
||||
uint goal; |
||||
State state; |
||||
}
|
||||
|
||||
Project[] public projects;
|
||||
|
||||
constructor() public { |
||||
|
||||
}
|
||||
|
||||
function createProject(string memory name, uint goal) public { |
||||
Project storage project = projects[projects.length]; |
||||
project.name = name; |
||||
project.owner = msg.sender; |
||||
project.state = State.Started; |
||||
project.goal = goal; |
||||
} |
||||
} |
||||
` |
||||
} |
||||
} |
||||
] |
Loading…
Reference in new issue