Merge pull request #225 from dennis00010011b/e2e-outputs

e2e: test different types of outputs for feature 'Ecxecute method'
This commit is contained in:
Victor Baranov 2018-12-19 13:06:08 +03:00 committed by GitHub
commit 99c79e0dab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 373 additions and 134 deletions

View File

@ -60,15 +60,16 @@ module.exports = {
},
executeMethod: {
title: By.className('flex-center send-header'),
titleText: 'Execute Method',
selectArrow: By.className('Select-arrow-zone'),
item0: By.css('.Select-input > input:nth-child(1)'),
item1: By.className('Select-option'),
items: By.className('Select-option'),
item11: By.css('#react-select-2--option-11'),
buttonCall: By.css('.section > button:nth-child(1)'),
fieldOutput: By.css('.input'),
fieldParametr1: By.css('.input'),
fieldOutput: By.className('input large-input output'),
fieldParameter: By.className('input large-input output'),
buttonNext: By.css('.section > div:nth-child(1) > button:nth-child(2)'),
buttonArrow: By.className('fa fa-arrow-left fa-lg cursor-pointer'),
buttonCopyABI: By.className('btn-violet'),
@ -375,3 +376,4 @@ module.exports = {
},
}

View File

@ -79,6 +79,8 @@ function buildFirefoxWebdriver () {
async function getExtensionIdChrome (driver) {
await driver.get('chrome://extensions')
const extensionId = await driver.executeScript('return document.querySelector("extensions-manager").shadowRoot.querySelector("extensions-view-manager extensions-item-list").shadowRoot.querySelector("extensions-item:nth-child(2)").getAttribute("id")')
// const extensionId = 'fmdpnlapjechkkicpkahdmanomngknlf'
return extensionId
}

View File

@ -245,7 +245,9 @@ describe('Metamask popup page', async function () {
})
describe('Import Contract account', async () => {
const poaContract = '0xc6468767214c577013a904900ada0a0dd6653bc3'
// const poaContract = '0xc6468767214c577013a904900ada0a0dd6653bc3'
const contractSokol = '0x215b2ab35749e5a9f3efe890de602fb9844e842f'
console.log('Contract ' + contractSokol + ' , Sokol')
const wrongAddress = '0xB87b6077D59B01Ab9fa8cd5A1A21D02a4d60D35'
const notContractAddress = '0x56B2e3C3cFf7f3921Dc2e0F8B8e20d1eEc29216b'
describe('Import Contract', async () => {
@ -303,8 +305,8 @@ describe('Metamask popup page', async function () {
const field = await waitUntilShowUp(screens.importAccounts.contractABI)
assert.equal(await field.getText(), '', "field 'ABI' isn't displayed")
})
it("Fill 'Address' with not contract address , POA core", async function () {
await setProvider(NETWORKS.POA)
it("Fill 'Address' with not contract address , SOKOL", async function () {
await setProvider(NETWORKS.SOKOL)
const field = await waitUntilShowUp(screens.importAccounts.contractAddress)
await clearField(field, 100)
await field.sendKeys(notContractAddress)
@ -315,10 +317,10 @@ describe('Metamask popup page', async function () {
assert.equal(await button.isEnabled(), false, 'button enabled')
})
it("Fill 'Address' with valid contract , POA core", async function () {
it("Fill 'Address' with valid contract , SOKOL", async function () {
const field = await waitUntilShowUp(screens.importAccounts.contractAddress)
await clearField(field, 100)
await field.sendKeys(poaContract)
await field.sendKeys(contractSokol)
})
it("Button 'Import' is enabled if contract address is correct", async function () {
@ -330,26 +332,24 @@ describe('Metamask popup page', async function () {
it('ABI is fetched ', async function () {
const field = await waitUntilShowUp(screens.importAccounts.contractABI)
const abi = await field.getText()
assert.equal(abi.length, 2800, "ABI isn't fetched")
assert.equal(abi.length, 4457, "ABI isn't fetched")
})
it("Click button 'Import', main screen opens", async function () {
const button = await waitUntilShowUp(screens.importAccounts.buttonImport)
await click(button)
const identicon = await waitUntilShowUp(screens.main.identicon, 20)
assert.notEqual(identicon, false, "main screen isn't opened")
const ident = await waitUntilShowUp(screens.main.identicon, 20)
assert.notEqual(ident, false, "main screen isn't opened")
})
it("Click button 'Send', 'Execute Method' screen opens", async function () {
const button = await waitUntilShowUp(screens.main.buttons.send)
await click(button)
const identicon = await waitUntilShowUp(screens.main.identicon, 40)
assert.notEqual(identicon, false, "main screen isn't opened")
})
})
describe('Execute Method', () => {
const outputData = '0xd70befce3cf1cc88119c8f4eb583ccd4c39d06e2'
describe('Execute Method screen', () => {
const notContractAddress = '0x56B2e3C3cFf7f3921Dc2e0F8B8e20d1eEc29216b'
describe("Check UI and button's functionality", () => {
it("Click button 'Send', 'Execute Method' screen opens", async function () {
await driver.navigate().refresh()
await delay(2000)
@ -363,26 +363,60 @@ describe('Metamask popup page', async function () {
assert.equal(await title.getText(), screens.executeMethod.titleText, 'incorrect text')
})
it("Select method 'abstractStorageAddr'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.selectArrow)
await field.click()
const item = await waitUntilShowUp(screens.executeMethod.item0)
assert.notEqual(item, false, 'no drop down menu')
await click(item)
it('Click arrow button leads to main screen', async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonArrow)
await click(button)
const identicon = await waitUntilShowUp(screens.main.identicon, 40)
assert.notEqual(identicon, false, "main screen isn't opened")
})
it("Button 'Call data' is displayed", async function () {
it("Click button 'Send', 'Execute Method' screen opens", async function () {
await driver.navigate().refresh()
await delay(2000)
const button = await waitUntilShowUp(screens.main.buttons.send)
await click(button)
})
})
describe('Check output for data type : ADDRESS', () => {
const address = '0x56B2e3C3cFf7f3921Dc2e0F8B8e20d1eEc29216b'
it("Select method 'returnAddress'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.selectArrow)
await field.click()
await waitUntilShowUp(screens.executeMethod.items)
const list = await driver.findElements(screens.executeMethod.items)
await list[3].click()
assert.equal(list.length, 22, "drop down menu isn't displayed")
})
it("Button 'Call data' is displayed and disabled", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCall)
assert.notEqual(button, false, "button 'Call data' isn't displayed")
assert.equal(await button.isEnabled(), false, "Button 'Call data' is enabled")
})
it("Fill out input field 'Address'", async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[0], false, "field parameter#1 isn't displayed")
await fields[0].sendKeys(address)
})
it("Button 'Call data' is displayed and enabled", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCall)
assert.notEqual(button, false, "button 'Call data' isn't displayed")
assert.equal(await button.isEnabled(), true, "Button 'Call data' is disabled")
await button.click()
})
it('method returns correct value', async function () {
await delay(5000)
const field = await waitUntilShowUp(screens.executeMethod.fieldOutput)
assert.notEqual(field, false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(field)
assert.equal(text, outputData, 'incorrect value was returned')
await delay(3000)
await waitUntilShowUp(screens.executeMethod.fieldOutput)
const fields = await driver.findElements(screens.executeMethod.fieldOutput)
assert.notEqual(fields[1], false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(fields[1])
assert.equal(text.toLowerCase(), address.toLowerCase(), 'incorrect value was returned')
})
it("2nd call doesn't throw the error", async function () {
@ -392,36 +426,219 @@ describe('Metamask popup page', async function () {
const field = await waitUntilShowUp(screens.executeMethod.fieldOutput)
assert.notEqual(field, false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(field)
console.log('text ' + text)
console.log('outputData ' + outputData)
assert.equal(text, outputData, 'incorrect value was returned')
assert.equal(text.toLowerCase(), address.toLowerCase(), 'incorrect value was returned')
})
it('Click arrow button leads to main screen', async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonArrow)
await click(button)
const identicon = await waitUntilShowUp(screens.main.identicon, 40)
assert.notEqual(identicon, false, "main screen isn't opened")
})
it("Click button 'Send', 'Execute Method' screen opens", async function () {
await driver.navigate().refresh()
await delay(2000)
const button = await waitUntilShowUp(screens.main.buttons.send)
await click(button)
})
it("Select method 'changeAbstractStorage'", async function () {
describe('Check output for data type : STRING', () => {
const stringValue = 'POA network'
it("Select method 'returnString'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.selectArrow)
await field.click()
const items = await waitUntilShowUp(screens.executeMethod.item1)
assert.notEqual(items, false, 'no drop down menu')
const item = (await driver.findElements(screens.executeMethod.item1))[1]
// await click(item)
await item.click()
await waitUntilShowUp(screens.executeMethod.items)
const list = await driver.findElements(screens.executeMethod.items)
await list[14].click()
assert.equal(list.length, 22, "drop down menu isn't displayed")
})
it('Fill out input parameter field ', async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[0], false, "field parameter#1 isn't displayed")
await fields[0].sendKeys(stringValue)
})
it("Click button 'Call data' ", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCall)
assert.notEqual(button, false, "button 'Call data' isn't displayed")
assert.equal(await button.isEnabled(), true, "Button 'Call data' is disabled")
await button.click()
})
it('method returns correct value', async function () {
await delay(3000)
await waitUntilShowUp(screens.executeMethod.fieldOutput)
const fields = await driver.findElements(screens.executeMethod.fieldOutput)
assert.notEqual(fields[1], false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(fields[1])
assert.equal(text, stringValue, 'incorrect value was returned')
})
})
describe('Check output for data type : BOOLEAN', () => {
it("Select method 'returnBoolean'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.selectArrow)
await field.click()
await waitUntilShowUp(screens.executeMethod.items)
const list = await driver.findElements(screens.executeMethod.items)
await list[5].click()
assert.equal(list.length, 22, "drop down menu isn't displayed")
})
it('Fill out input parameter field, value is TRUE', async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[0], false, "field parameter#1 isn't displayed")
await fields[0].sendKeys('true')
})
it("Click button 'Call data' ", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCall)
assert.notEqual(button, false, "button 'Call data' isn't displayed")
assert.equal(await button.isEnabled(), true, "Button 'Call data' is disabled")
await button.click()
})
it('method returns correct value: TRUE', async function () {
await delay(3000)
await waitUntilShowUp(screens.executeMethod.fieldOutput)
const fields = await driver.findElements(screens.executeMethod.fieldOutput)
assert.notEqual(fields[1], false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(fields[1])
assert.equal(text, 'true', 'incorrect value was returned')
})
it('Fill out input parameter field, value is FALSE ', async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[0], false, "field parameter#1 isn't displayed")
await clearField(fields[0])
await fields[0].sendKeys('false')
})
it("Click button 'Call data' ", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCall)
assert.notEqual(button, false, "button 'Call data' isn't displayed")
assert.equal(await button.isEnabled(), true, "Button 'Call data' is disabled")
await button.click()
})
it('method returns correct value, FALSE', async function () {
await delay(3000)
await waitUntilShowUp(screens.executeMethod.fieldOutput)
const fields = await driver.findElements(screens.executeMethod.fieldOutput)
assert.notEqual(fields[1], false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(fields[1])
assert.equal(text, 'false', 'incorrect value was returned')
})
})
describe('Check output for data type : BYTES', () => {
const bytesValue = '0x010203'
it("Select method 'returnBytes1'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.selectArrow)
await field.click()
await waitUntilShowUp(screens.executeMethod.items)
const list = await driver.findElements(screens.executeMethod.items)
await list[7].click()
assert.equal(list.length, 22, "drop down menu isn't displayed")
})
it('Fill out input parameter field ', async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[0], false, "field parameter#1 isn't displayed")
await fields[0].sendKeys(bytesValue)
})
it("Click button 'Call data' ", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCall)
assert.notEqual(button, false, "button 'Call data' isn't displayed")
assert.equal(await button.isEnabled(), true, "Button 'Call data' is disabled")
await button.click()
})
it('method returns correct value', async function () {
await delay(3000)
await waitUntilShowUp(screens.executeMethod.fieldOutput)
const fields = await driver.findElements(screens.executeMethod.fieldOutput)
assert.notEqual(fields[1], false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(fields[1])
assert.equal(text, bytesValue, 'incorrect value was returned')
})
})
describe('Check output for data type : UINT256', () => {
const uint256Value = '1122334455667788991122334455667788'
it("Select method 'returnUint256'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.selectArrow)
await field.click()
await waitUntilShowUp(screens.executeMethod.items)
const list = await driver.findElements(screens.executeMethod.items)
await list[17].click()
assert.equal(list.length, 22, "drop down menu isn't displayed")
})
it('Fill out input parameter field ', async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[0], false, "field parameter#1 isn't displayed")
await fields[0].sendKeys(uint256Value)
})
it("Click button 'Call data' ", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCall)
assert.notEqual(button, false, "button 'Call data' isn't displayed")
assert.equal(await button.isEnabled(), true, "Button 'Call data' is disabled")
await button.click()
})
it('method returns correct value', async function () {
await delay(3000)
await waitUntilShowUp(screens.executeMethod.fieldOutput)
const fields = await driver.findElements(screens.executeMethod.fieldOutput)
assert.notEqual(fields[1], false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(fields[1])
assert.equal(text, uint256Value, 'incorrect value was returned')
})
})
describe('Check output for data type : INT256', () => {
const int256Value = '-1122334455667788991122334455667788'
it("Select method 'returnInt256'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.selectArrow)
await field.click()
await waitUntilShowUp(screens.executeMethod.items)
const list = await driver.findElements(screens.executeMethod.items)
await list[10].click()
assert.equal(list.length, 22, "drop down menu isn't displayed")
})
it('Fill out input parameter field ', async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[0], false, "field parameter#1 isn't displayed")
await fields[0].sendKeys(int256Value)
})
it("Click button 'Call data' ", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCall)
assert.notEqual(button, false, "button 'Call data' isn't displayed")
assert.equal(await button.isEnabled(), true, "Button 'Call data' is disabled")
await button.click()
})
it('method returns correct value', async function () {
await delay(3000)
await waitUntilShowUp(screens.executeMethod.fieldOutput)
const fields = await driver.findElements(screens.executeMethod.fieldOutput)
assert.notEqual(fields[1], false, "field 'Output' isn't displayed")
const text = await waitUntilHasValue(fields[1])
assert.equal(text, int256Value, 'incorrect value was returned')
})
})
describe('Check executed method', () => {
it("Select method 'transfer'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.selectArrow)
await field.click()
await waitUntilShowUp(screens.executeMethod.items)
const list = await driver.findElements(screens.executeMethod.items)
await list[21].click()
assert.equal(list.length, 22, "drop down menu isn't displayed")
})
it("Button 'Copy ABI encoded' is displayed", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCopyABI)
assert.notEqual(button, false, "button 'Copy ABI encoded' isn't displayed")
})
it("Button 'Copy ABI encoded' is disabled", async function () {
@ -434,10 +651,27 @@ describe('Metamask popup page', async function () {
assert.equal(await button.isEnabled(), false, "button 'Next' enabled")
})
it("Fill out parameter '_newAbstractStorageAddr with wrong data'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.fieldParametr1)
assert.notEqual(field, false, "field address isn't displayed")
await field.sendKeys(wrongAddress)
it("Fill out parameter '_value' with valid data", async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[1], false, "field address isn't displayed")
await fields[1].sendKeys('1')
})
it("Button 'Copy ABI encoded' is disabled", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonCopyABI)
assert.equal(await button.isEnabled(), false, "button 'Copy ABI encoded' enabled")
})
it("Button 'Next' is disabled", async function () {
const button = await waitUntilShowUp(screens.executeMethod.buttonNext)
assert.equal(await button.isEnabled(), false, "button 'Next' enabled")
})
it("Fill out parameter '_to' with wrong data", async function () {
await waitUntilShowUp(screens.executeMethod.fieldParameter)
const fields = await driver.findElements(screens.executeMethod.fieldParameter)
assert.notEqual(fields[0], false, "field address isn't displayed")
await fields[0].sendKeys(wrongAddress)
})
it("Error message if click 'Copy ABI encoded' with wrong address", async function () {
@ -468,8 +702,8 @@ describe('Metamask popup page', async function () {
assert.notEqual(title, false, "error message isn't closed")
})
it("Fill out parameter '_newAbstractStorageAddr'", async function () {
const field = await waitUntilShowUp(screens.executeMethod.fieldParametr1)
it("Fill out parameter '_to' with valid data", async function () {
const field = await waitUntilShowUp(screens.executeMethod.fieldParameter)
await clearField(field, 100)
await field.sendKeys(notContractAddress)
assert.notEqual(field, false, "field address isn't displayed")
@ -491,6 +725,7 @@ describe('Metamask popup page', async function () {
assert.notEqual(button, false, "button 'Next' isn't displayed")
await button.click()
})
})
})
describe('Choose Contract Executor', () => {