Use fixtures for dapp interaction tests (#11444)
* move send eth from dapp test * move contract interactions test * fix lint issuesfeature/default_network_editable
parent
7163c56f3e
commit
22973704e8
@ -0,0 +1,139 @@ |
||||
const { strict: assert } = require('assert'); |
||||
const { withFixtures } = require('../helpers'); |
||||
|
||||
describe('Deploy contract and call contract methods', function () { |
||||
let windowHandles; |
||||
let extension; |
||||
let popup; |
||||
let dapp; |
||||
const ganacheOptions = { |
||||
accounts: [ |
||||
{ |
||||
secretKey: |
||||
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', |
||||
balance: 25000000000000000000, |
||||
}, |
||||
], |
||||
}; |
||||
it('should display the correct account balance after contract interactions', async function () { |
||||
await withFixtures( |
||||
{ |
||||
dapp: true, |
||||
fixtures: 'imported-account', |
||||
ganacheOptions, |
||||
title: this.test.title, |
||||
}, |
||||
async ({ driver }) => { |
||||
await driver.navigate(); |
||||
await driver.fill('#password', 'correct horse battery staple'); |
||||
await driver.press('#password', driver.Key.ENTER); |
||||
|
||||
// connects the dapp
|
||||
await driver.openNewPage('http://127.0.0.1:8080/'); |
||||
await driver.clickElement({ text: 'Connect', tag: 'button' }); |
||||
await driver.waitUntilXWindowHandles(3); |
||||
windowHandles = await driver.getAllWindowHandles(); |
||||
extension = windowHandles[0]; |
||||
dapp = await driver.switchToWindowWithTitle( |
||||
'E2E Test Dapp', |
||||
windowHandles, |
||||
); |
||||
popup = windowHandles.find( |
||||
(handle) => handle !== extension && handle !== dapp, |
||||
); |
||||
await driver.switchToWindow(popup); |
||||
await driver.clickElement({ text: 'Next', tag: 'button' }); |
||||
await driver.clickElement({ text: 'Connect', tag: 'button' }); |
||||
await driver.waitUntilXWindowHandles(2); |
||||
|
||||
// creates a deploy contract transaction
|
||||
await driver.switchToWindow(dapp); |
||||
await driver.clickElement('#deployButton'); |
||||
|
||||
// displays the contract creation data
|
||||
await driver.switchToWindow(extension); |
||||
await driver.clickElement('[data-testid="home__activity-tab"]'); |
||||
await driver.clickElement({ text: 'Contract Deployment', tag: 'h2' }); |
||||
await driver.clickElement({ text: 'Data', tag: 'button' }); |
||||
await driver.findElement({ text: '127.0.0.1', tag: 'div' }); |
||||
const confirmDataDiv = await driver.findElement( |
||||
'.confirm-page-container-content__data-box', |
||||
); |
||||
const confirmDataText = await confirmDataDiv.getText(); |
||||
assert.ok(confirmDataText.includes('Origin:')); |
||||
assert.ok(confirmDataText.includes('127.0.0.1')); |
||||
assert.ok(confirmDataText.includes('Bytes:')); |
||||
assert.ok(confirmDataText.includes('675')); |
||||
|
||||
// confirms a deploy contract transaction
|
||||
await driver.clickElement({ text: 'Details', tag: 'button' }); |
||||
await driver.clickElement({ text: 'Confirm', tag: 'button' }); |
||||
await driver.waitForSelector( |
||||
'.transaction-list__completed-transactions .transaction-list-item:nth-of-type(1)', |
||||
{ timeout: 10000 }, |
||||
); |
||||
const completedTx = await driver.findElement('.list-item__title'); |
||||
const completedTxText = await completedTx.getText(); |
||||
assert.equal(completedTxText, 'Contract Deployment'); |
||||
|
||||
// calls and confirms a contract method where ETH is sent
|
||||
await driver.switchToWindow(dapp); |
||||
await driver.clickElement('#depositButton'); |
||||
await driver.waitUntilXWindowHandles(3); |
||||
windowHandles = await driver.getAllWindowHandles(); |
||||
await driver.switchToWindowWithTitle( |
||||
'MetaMask Notification', |
||||
windowHandles, |
||||
); |
||||
await driver.clickElement({ text: 'Confirm', tag: 'button' }); |
||||
await driver.switchToWindow(extension); |
||||
await driver.waitForSelector( |
||||
'.transaction-list__completed-transactions .transaction-list-item:nth-of-type(2)', |
||||
{ timeout: 10000 }, |
||||
); |
||||
await driver.waitForSelector( |
||||
{ |
||||
css: '.transaction-list-item__primary-currency', |
||||
text: '-4 ETH', |
||||
}, |
||||
{ timeout: 10000 }, |
||||
); |
||||
|
||||
// calls and confirms a contract method where ETH is received
|
||||
await driver.switchToWindow(dapp); |
||||
await driver.clickElement('#withdrawButton'); |
||||
await driver.waitUntilXWindowHandles(3); |
||||
windowHandles = await driver.getAllWindowHandles(); |
||||
await driver.switchToWindowWithTitle( |
||||
'MetaMask Notification', |
||||
windowHandles, |
||||
); |
||||
await driver.clickElement({ text: 'Confirm', tag: 'button' }); |
||||
await driver.switchToWindow(extension); |
||||
await driver.waitForSelector( |
||||
'.transaction-list__completed-transactions .transaction-list-item:nth-of-type(3)', |
||||
{ timeout: 10000 }, |
||||
); |
||||
await driver.waitForSelector( |
||||
{ |
||||
css: '.transaction-list-item__primary-currency', |
||||
text: '-0 ETH', |
||||
}, |
||||
{ timeout: 10000 }, |
||||
); |
||||
|
||||
// renders the correct ETH balance
|
||||
await driver.switchToWindow(extension); |
||||
const balance = await driver.waitForSelector( |
||||
{ |
||||
css: '[data-testid="eth-overview__primary-currency"]', |
||||
text: '21.', |
||||
}, |
||||
{ timeout: 10000 }, |
||||
); |
||||
const tokenAmount = await balance.getText(); |
||||
assert.ok(/^21.*\s*ETH.*$/u.test(tokenAmount)); |
||||
}, |
||||
); |
||||
}); |
||||
}); |
Loading…
Reference in new issue