You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
9.2 KiB
208 lines
9.2 KiB
'use strict'
|
|
var init = require('../helpers/init')
|
|
var sauce = require('./sauce')
|
|
|
|
const passphrase = process.env.account_passphrase
|
|
const password = process.env.account_password
|
|
|
|
module.exports = {
|
|
|
|
before: function (browser, done) {
|
|
init(browser, done)
|
|
},
|
|
|
|
'@sources': function () {
|
|
return sources
|
|
},
|
|
|
|
'Should load run and deploy tab': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="remixIdeSidePanel"]')
|
|
.clickLaunchIcon('udapp')
|
|
.waitForElementPresent('*[data-id="sidePanelSwapitTitle"]')
|
|
.assert.containsText('*[data-id="sidePanelSwapitTitle"]', 'DEPLOY & RUN TRANSACTIONS')
|
|
},
|
|
|
|
'Should sign message using account key': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="settingsRemixRunSignMsg"]')
|
|
.click('*[data-id="settingsRemixRunSignMsg"]')
|
|
.waitForElementPresent('*[data-id="modalDialogContainer"]')
|
|
.click('*[data-id="modalDialogCustomPromptText"]')
|
|
.setValue('*[data-id="modalDialogCustomPromptText"]', 'Remix is cool!')
|
|
.assert.elementNotPresent('*[data-id="settingsRemixRunSignMsgHash"]')
|
|
.assert.elementNotPresent('*[data-id="settingsRemixRunSignMsgSignature"]')
|
|
.modalFooterOKClick()
|
|
.waitForElementPresent('*[data-id="modalDialogContainer"]', 12000)
|
|
.assert.elementPresent('*[data-id="settingsRemixRunSignMsgHash"]')
|
|
.assert.elementPresent('*[data-id="settingsRemixRunSignMsgSignature"]')
|
|
.modalFooterOKClick()
|
|
},
|
|
|
|
'Should deploy contract on JavascriptVM': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="remixIdeSidePanel"]')
|
|
.clickLaunchIcon('fileExplorers')
|
|
.addFile('Greet.sol', sources[0]['browser/Greet.sol'])
|
|
.clickLaunchIcon('udapp')
|
|
.selectAccount('0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c')
|
|
.waitForElementPresent('*[data-id="Deploy - transact (not payable)"]')
|
|
.click('*[data-id="Deploy - transact (not payable)"]')
|
|
.pause(5000)
|
|
.testFunction('0xe9b627a180f90a24feb6850f29e4121ea312f315f61756c31468ffbda2955a64', {
|
|
status: '0x1 Transaction mined and execution succeed',
|
|
'transaction hash': '0xe9b627a180f90a24feb6850f29e4121ea312f315f61756c31468ffbda2955a64'
|
|
})
|
|
},
|
|
|
|
'Should run low level interaction (fallback function)': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="remixIdeSidePanel"]')
|
|
.waitForElementPresent('*[data-id="universalDappUiTitleExpander"]')
|
|
.click('*[data-id="universalDappUiTitleExpander"]')
|
|
.waitForElementPresent('*[data-id="pluginManagerSettingsDeployAndRunLLTxSendTransaction"]')
|
|
.click('*[data-id="pluginManagerSettingsDeployAndRunLLTxSendTransaction"]')
|
|
.pause(5000)
|
|
.testFunction('0xfe718871ee0b4d03cdcac0e12e5b164efaf7e23ba952c07db76e62692867019b', {
|
|
status: '0x1 Transaction mined and execution succeed',
|
|
'transaction hash': '0xfe718871ee0b4d03cdcac0e12e5b164efaf7e23ba952c07db76e62692867019b'
|
|
})
|
|
},
|
|
|
|
'Should connect to Goerli Test Network using MetaMask': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="remixIdeSidePanel"]')
|
|
.setupMetamask(passphrase, password)
|
|
.click('.network-indicator__down-arrow')
|
|
.useXpath().click("//span[text()='Goerli Test Network']")
|
|
.useCss().switchBrowserTab(0)
|
|
.refresh()
|
|
.waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000)
|
|
.click('*[data-id="landingPageStartSolidity"]')
|
|
.pause(5000)
|
|
.clickLaunchIcon('udapp')
|
|
.waitForElementPresent('*[data-id="settingsSelectEnvOptions"]')
|
|
.click('*[data-id="settingsSelectEnvOptions"] option[id="injected-mode"]')
|
|
.waitForElementPresent('*[data-id="settingsNetworkEnv"]')
|
|
.assert.containsText('*[data-id="settingsNetworkEnv"]', 'Goerli (5) network')
|
|
.switchBrowserTab(2)
|
|
.waitForElementPresent('.page-container__footer-button:nth-of-type(2)')
|
|
.click('.page-container__footer-button:nth-of-type(2)')
|
|
.switchBrowserTab(0)
|
|
},
|
|
|
|
'Should deploy contract on Goerli Test Network using MetaMask': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="runTabSelectAccount"] option')
|
|
.clickLaunchIcon('fileExplorers')
|
|
.openFile('browser/Greet.sol')
|
|
.clickLaunchIcon('udapp')
|
|
.waitForElementPresent('*[data-id="Deploy - transact (not payable)"]')
|
|
.click('*[data-id="Deploy - transact (not payable)"]')
|
|
.switchBrowserTab(2)
|
|
.waitForElementPresent('.transaction-status--unapproved')
|
|
.click('.transaction-status--unapproved')
|
|
.waitForElementPresent('.page-container__footer-button:nth-of-type(2)')
|
|
.click('.page-container__footer-button:nth-of-type(2)')
|
|
.waitForElementPresent('.transaction-status--submitted')
|
|
.pause(25000)
|
|
.switchBrowserTab(0)
|
|
},
|
|
|
|
'Should run low level interaction (fallback function) on Goerli Test Network using MetaMask': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="remixIdeSidePanel"]')
|
|
.waitForElementPresent('*[data-id="universalDappUiTitleExpander"]')
|
|
.click('*[data-id="universalDappUiTitleExpander"]')
|
|
.waitForElementPresent('*[data-id="pluginManagerSettingsDeployAndRunLLTxSendTransaction"]')
|
|
.click('*[data-id="pluginManagerSettingsDeployAndRunLLTxSendTransaction"]')
|
|
.switchBrowserTab(2)
|
|
.waitForElementPresent('.transaction-status--unapproved')
|
|
.click('.transaction-status--unapproved')
|
|
.waitForElementPresent('.page-container__footer-button:nth-of-type(2)')
|
|
.click('.page-container__footer-button:nth-of-type(2)')
|
|
.waitForElementPresent('.transaction-status--submitted')
|
|
.pause(25000)
|
|
.switchBrowserTab(0)
|
|
},
|
|
|
|
'Should connect to Ethereum Main Network using MetaMask': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="remixIdeSidePanel"]')
|
|
.switchBrowserTab(2)
|
|
.waitForElementPresent('.network-indicator__down-arrow')
|
|
.click('.network-indicator__down-arrow')
|
|
.useXpath().click("//span[text()='Main Ethereum Network']")
|
|
.useCss().switchBrowserTab(0)
|
|
.refresh()
|
|
.waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000)
|
|
.click('*[data-id="landingPageStartSolidity"]')
|
|
.pause(5000)
|
|
.clickLaunchIcon('udapp')
|
|
.waitForElementPresent('*[data-id="settingsSelectEnvOptions"]')
|
|
.click('*[data-id="settingsSelectEnvOptions"] option[id="injected-mode"]')
|
|
.waitForElementPresent('*[data-id="settingsNetworkEnv"]')
|
|
.assert.containsText('*[data-id="settingsNetworkEnv"]', 'Main (1) network')
|
|
},
|
|
|
|
'Should deploy contract on Ethereum Main Network using MetaMask': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="runTabSelectAccount"] option')
|
|
.clickLaunchIcon('fileExplorers')
|
|
.openFile('browser/Greet.sol')
|
|
.clickLaunchIcon('udapp')
|
|
.waitForElementPresent('*[data-id="Deploy - transact (not payable)"]')
|
|
.click('*[data-id="Deploy - transact (not payable)"]')
|
|
.waitForElementPresent('*[data-id="modalDialogContainer"]', 15000)
|
|
.pause(10000)
|
|
.assert.containsText('*[data-id="modalDialogModalBody"]', 'You are creating a transaction on the main network. Click confirm if you are sure to continue.')
|
|
.modalFooterCancelClick()
|
|
},
|
|
|
|
/*
|
|
* This test is using 3 differents services:
|
|
* - Metamask for getting the transaction
|
|
* - Source Verifier service for fetching the contract code
|
|
* - Ropsten node for retrieving the trace and storage
|
|
*
|
|
*/
|
|
'Should debug Ropsten transaction with source highlighting using the source verifier service and MetaMask': function (browser) {
|
|
browser.waitForElementPresent('*[data-id="remixIdeSidePanel"]')
|
|
.waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000)
|
|
.switchBrowserTab(2)
|
|
.waitForElementPresent('.network-indicator__down-arrow')
|
|
.click('.network-indicator__down-arrow')
|
|
.useXpath().click("//span[text()='Ropsten Test Network']") // switch to Ropsten
|
|
.useCss().switchBrowserTab(0)
|
|
.refresh()
|
|
.clickLaunchIcon('pluginManager') // load debugger and source verification
|
|
// .scrollAndClick('#pluginManager article[id="remixPluginManagerListItem_source-verification"] button')
|
|
// debugger already activated .scrollAndClick('#pluginManager article[id="remixPluginManagerListItem_debugger"] button')
|
|
.clickLaunchIcon('udapp')
|
|
.waitForElementPresent('*[data-id="settingsSelectEnvOptions"]')
|
|
.click('*[data-id="settingsSelectEnvOptions"] option[id="injected-mode"]') // switch to Ropsten in udapp
|
|
.waitForElementPresent('*[data-id="settingsNetworkEnv"]')
|
|
.assert.containsText('*[data-id="settingsNetworkEnv"]', 'Ropsten (3) network')
|
|
.clickLaunchIcon('debugger')
|
|
.setValue('*[data-id="debuggerTransactionInput"]', '0x959371506b8f6223d71c709ac2eb2d0158104dca2d76ca949f1662712cf0e6db') // debug tx
|
|
.click('*[data-id="debuggerTransactionStartButton"]')
|
|
.waitForElementVisible('*[data-id="treeViewDivto"]', 30000)
|
|
.assert.containsText('*[data-id="stepdetail"]', 'loaded address: 0x3c943Fb816694d7D1f4C738e3e7823818a88DD6C')
|
|
.assert.containsText('*[data-id="solidityLocals"]', 'to: 0x6C3CCC7FBA111707D5A1AAF2758E9D4F4AC5E7B1')
|
|
.end()
|
|
},
|
|
tearDown: sauce
|
|
}
|
|
|
|
var sources = [
|
|
{
|
|
'browser/Greet.sol': {
|
|
content:
|
|
`
|
|
pragma solidity ^0.6.0;
|
|
|
|
contract helloWorld {
|
|
string public message;
|
|
|
|
fallback () external {
|
|
message = 'Hello World!';
|
|
}
|
|
|
|
function greet(string memory _message) public {
|
|
message = _message;
|
|
}
|
|
}`
|
|
}
|
|
}
|
|
]
|
|
|