@ -167,7 +167,7 @@ module.exports = {
} ,
'Should print hardhat logs #group4' : function ( browser : NightwatchBrowser ) {
browser
. addFile ( 'printHardhatlog.sol' , { content : hardhatLog } )
. addFile ( 'printHardhatlog.sol' , { content : hardhatLog } )
. clickLaunchIcon ( 'solidity' )
. click ( '*[data-id="terminalClearConsole"]' ) // clear the terminal
. waitForElementVisible ( '[for="autoCompile"]' )
@ -266,22 +266,22 @@ module.exports = {
if ( Array . isArray ( result . value ) && result . value . length > 0 ) {
console . log ( 'Found ' + result . value . length + ' transactions' )
browser
. click ( {
selector : '[data-id="listenNetworkCheckInput"]' ,
} )
. click ( {
selector : '*[data-id="terminalClearConsole"]' ,
} )
. click ( {
selector : '*[data-id="compilerContainerCompileAndRunBtn"]' ,
} )
. pause ( 10000 )
. waitForElementNotPresent ( {
locateStrategy : 'xpath' ,
selector : "//*[@class='remix_ui_terminal_log' and contains(.,'to:') and contains(.,'from:')]" ,
timeout : 120000
} )
. end ( )
. click ( {
selector : '[data-id="listenNetworkCheckInput"]' ,
} )
. click ( {
selector : '*[data-id="terminalClearConsole"]' ,
} )
. click ( {
selector : '*[data-id="compilerContainerCompileAndRunBtn"]' ,
} )
. pause ( 10000 )
. waitForElementNotPresent ( {
locateStrategy : 'xpath' ,
selector : "//*[@class='remix_ui_terminal_log' and contains(.,'to:') and contains(.,'from:')]" ,
timeout : 120000
} )
. end ( )
} else {
browser
. assert . fail ( 'No transaction found' )
@ -309,7 +309,7 @@ module.exports = {
. switchEnvironment ( 'vm-custom-fork' )
. waitForElementVisible ( '[data-id="vm-custom-fork-modal-footer-ok-react"]' )
. execute ( ( ) = > {
( document . querySelector ( '*[data-id="vm-custom-forkModalDialogContainer-react"] input[data-id="CustomForkNodeUrl"]' ) as any ) . focus ( )
( document . querySelector ( '*[data-id="vm-custom-forkModalDialogContainer-react"] input[data-id="CustomForkNodeUrl"]' ) as any ) . focus ( )
} , [ ] , ( ) = > { } )
. clearValue ( '*[data-id="CustomForkNodeUrl"]' ) . pause ( 1000 ) . setValue ( '*[data-id="CustomForkNodeUrl"]' , 'https://go.getblock.io/ee42d0a88f314707be11dd799b122cb9' )
. execute ( ( ) = > {
@ -331,7 +331,7 @@ module.exports = {
. executeScriptInTerminal ( ` web3.eth.getCode('0x75F509A4eDA030470272DfBAf99A47D587E76709') ` ) // sepolia contract
. waitForElementContainsText ( '*[data-id="terminalJournal"]' , byteCodeInSepolia , 120000 )
. click ( '*[data-id="terminalClearConsole"]' )
} ,
} ,
'Should run a free function while being connected to mainnet #group9' : function ( browser : NightwatchBrowser ) {
const script = `
@ -359,10 +359,10 @@ module.exports = {
. switchEnvironment ( 'vm-mainnet-fork' )
. clickLaunchIcon ( 'filePanel' )
. addFile ( 'test_mainnet.sol' , { content : script } )
const path = "//*[@class='view-line' and contains(.,'resolveENS') and contains(.,'view')]//span//span[contains(.,'(')]"
const path = "//*[@class='view-line' and contains(.,'resolveENS') and contains(.,'view')]//span//span[contains(.,'(')]"
const pathRunFunction = ` //li//*[@aria-label='Run the free function "resolveENS"'] `
browser . waitForElementVisible ( '#editorView' )
browser . waitForElementVisible ( '#editorView' )
//.waitForElementPresent(pathRunFunction)
. pause ( 10000 ) // the parser need to parse the code
. useXpath ( )
@ -371,25 +371,25 @@ module.exports = {
. perform ( function ( ) {
const actions = this . actions ( { async : true } ) ;
return actions
. keyDown ( this . Keys . SHIFT )
. keyDown ( this . Keys . ALT )
. sendKeys ( 'r' )
. keyDown ( this . Keys . SHIFT )
. keyDown ( this . Keys . ALT )
. sendKeys ( 'r' )
} )
. useCss ( )
. waitForElementContainsText ( '*[data-id="terminalJournal"]' , '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' , 120000 )
} ,
'Should run free function which logs in the terminal #group10' : function ( browser : NightwatchBrowser ) {
const script = ` import "hardhat/console.sol";
function runSomething ( ) view {
console . log ( "test running free function" ) ;
}
}
`
browser
. addFile ( 'test.sol' , { content : script } )
. scrollToLine ( 3 )
const path = "//*[@class='view-line' and contains(.,'runSomething') and contains(.,'view')]//span//span[contains(.,'(')]"
const path = "//*[@class='view-line' and contains(.,'runSomething') and contains(.,'view')]//span//span[contains(.,'(')]"
const pathRunFunction = ` //li//*[@aria-label='Run the free function "runSomething"'] `
browser . waitForElementVisible ( '#editorView' )
. useXpath ( )
@ -398,18 +398,15 @@ module.exports = {
. perform ( function ( ) {
const actions = this . actions ( { async : true } ) ;
return actions
. keyDown ( this . Keys . SHIFT )
. keyDown ( this . Keys . ALT )
. sendKeys ( 'r' )
. keyDown ( this . Keys . SHIFT )
. keyDown ( this . Keys . ALT )
. sendKeys ( 'r' )
} )
. useCss ( )
. waitForElementContainsText ( '*[data-id="terminalJournal"]' , 'test running free function' , 120000 )
}
}
const asyncAwait = `
var p = function ( ) {
return new Promise ( function ( resolve , reject ) {
@ -417,7 +414,7 @@ const asyncAwait = `
resolve ( "Promise Resolved" )
} , 5000 )
} )
}
}
var run = async ( ) = > {
console . log ( 'Waiting Promise' )
@ -455,7 +452,7 @@ const resolveExternalUrlAndSave = `
} catch ( e ) {
console . log ( e . message )
}
} ) ( )
} ) ( )
`
const resolveExternalUrlAndSaveToaPath = `
@ -466,7 +463,7 @@ const resolveExternalUrlAndSaveToaPath = `
} catch ( e ) {
console . log ( e . message )
}
} ) ( )
} ) ( )
`
const resolveUrl = `
@ -477,7 +474,7 @@ const resolveUrl = `
} catch ( e ) {
console . log ( e . message )
}
} ) ( )
} ) ( )
`
const deployWithEthersJs = `
@ -485,32 +482,32 @@ const deployWithEthersJs = `
( async ( ) = > {
try {
console . log ( 'Running deployWithEthers script...' )
const constructorArgs = [ ] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = 'contracts/artifacts/Owner.json' // Change this for different path
const metadata = JSON . parse ( await remix . call ( 'fileManager' , 'getFile' , artifactsPath ) )
// 'web3Provider' is a remix global variable object
const signer = ( new ethers . providers . Web3Provider ( web3Provider ) ) . getSigner ( )
let factory = new ethers . ContractFactory ( metadata . abi , metadata . data . bytecode . object , signer )
let contract = await factory . deploy ( . . . constructorArgs ) ;
console . log ( 'Contract Address: ' , contract . address ) ;
// The contract is NOT deployed yet; we must wait until it is mined
await contract . deployed ( )
console . log ( 'Deployment successful.' )
contract . on ( 'OwnerSet' , ( previousOwner , newOwner ) = > {
console . log ( 'previousOwner' , previousOwner )
console . log ( 'newOwner' , newOwner )
} )
console . log ( 'ok' )
} catch ( e ) {
console . log ( e . message )
@ -577,12 +574,12 @@ contract StorageWithLib {
* @dev Store valrue in variable
* @param num value to store
* /
function store ( uint256 num ) public {
number = num ;
function store ( uint256 num ) public {
number = num ;
}
/ * *
* @dev Return value
* @dev Return value
* @return value of 'number'
* /
function retrieve ( ) public view returns ( uint256 ) {
@ -629,11 +626,11 @@ describe("Storage", function () {
deployedLinkReferences : metadata.data.deployedBytecode.linkReferences ,
}
const options = {
libraries : {
libraries : {
'Lib' : lib . address
}
}
const factory = await ethers . getContractFactoryFromArtifact ( artifact , options )
const storage = await factory . deploy ( ) ;
await storage . deployed ( )
@ -657,10 +654,10 @@ import "hardhat/console.sol";
contract OwnerTest {
address private owner ;
// event for EVM logging
event OwnerSet ( address indexed oldOwner , address indexed newOwner ) ;
// modifier to check if caller is owner
modifier isOwner() {
// If the first argument of 'require' evaluates to 'false', execution terminates and all
@ -671,7 +668,7 @@ contract OwnerTest {
require ( msg . sender == owner , "Caller is not owner" ) ;
_ ;
}
/ * *
* @dev Set contract deployer as owner
* /
@ -692,7 +689,7 @@ contract OwnerTest {
}
/ * *
* @dev Return owner address
* @dev Return owner address
* @return address of owner
* /
function getOwner ( ) external view returns ( address ) {
@ -705,39 +702,39 @@ const scriptAutoExec = {
contract : ` // SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.8 . 2 < 0.9.0 ;
library lib {
function test ( ) public view returns ( uint ) {
return 147 ;
}
}
/ * *
* @title Storage
* @dev Store & retrieve value inr a variable
* @custom : dev - run - script . / scripts / deploy_storage . js
* /
contract Storage {
uint256 number ;
/ * *
* @dev Store valrue in variable
* @param num value to store
* /
function store ( uint256 num ) public {
number = num ;
number = num ;
}
/ * *
* @dev Return value
* @dev Return value
* @return value of 'number'
* /
function retrieve ( ) public view returns ( uint256 ) {
return number ;
}
function getFromLib ( ) public view returns ( uint ) {
return lib . test ( ) ;
}
@ -747,16 +744,16 @@ const scriptAutoExec = {
// Right click on the script name and hit "Run" to execute
const { expect } = require ( "chai" ) ;
const { ethers } = require ( "hardhat" ) ;
( async ( ) = > {
try {
// function getContractFactoryFromArtifact(artifact: Artifact, signer?: ethers.Signer): Promise<ethers.ContractFactory>;
// function getContractFactoryFromArtifact(artifact: Artifact, factoryOptions: FactoryOptions): Promise<ethers.ContractFactory>;
const metadataLib = JSON . parse ( await remix . call ( 'fileManager' , 'readFile' , 'contracts/artifacts/lib.json' ) )
console . log ( 'deploying lib:' )
const artifactLib = {
contractName : 'Lib' ,
sourceName : 'contracts/1_Storage.sol' ,
@ -767,15 +764,15 @@ const scriptAutoExec = {
deployedLinkReferences : metadataLib.data.deployedBytecode.linkReferences ,
}
const optionsLib = { }
const factoryLib = await ethers . getContractFactoryFromArtifact ( artifactLib , optionsLib )
const lib = await factoryLib . deploy ( ) ;
await lib . deployed ( )
console . log ( 'lib deployed' , lib . address )
const metadata = JSON . parse ( await remix . call ( 'fileManager' , 'readFile' , 'contracts/artifacts/Storage.json' ) )
const artifact = {
contractName : 'Storage' ,
@ -787,25 +784,25 @@ const scriptAutoExec = {
deployedLinkReferences : metadata.data.deployedBytecode.linkReferences ,
}
const options = {
libraries : {
libraries : {
'lib' : lib . address
}
}
const factory = await ethers . getContractFactoryFromArtifact ( artifact , options )
const storage = await factory . deploy ( ) ;
await storage . deployed ( )
const storeValue = await storage . store ( 333 ) ;
// wait until the transaction is mined
await storeValue . wait ( ) ;
console . log ( ( await storage . getFromLib ( ) ) . toString ( ) )
// expect((await storage.getFromLib()).toString()).to.equal('34');
} catch ( e ) {
console . error ( e . message )
}