mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 18:00:18 +01:00
437acdb74c
* User actions benchmark and artifacts * Lint and fix identation * Fix lint * Updated path * lint * Add user actions benchmark to pre release job * Remove title * Out path updated * See if url is finally fixed * Adding some console logs * lint * fix lint * fix lint * Updated persisting and store artifacts path * Added MetaMask bot correct link and remove console logs * Remove console log * Sort Imports * Fix lint * Update loadAccount function and prop name for clarity to loadNewAccount * Run yarn setup * Fix yarn * Update Create Account element for Create account * Remove unnecessary step on send Co-authored-by: Jyoti Puri <jyotipuri@gmail.com>
131 lines
3.9 KiB
JavaScript
131 lines
3.9 KiB
JavaScript
const path = require('path');
|
|
const { promises: fs } = require('fs');
|
|
const yargs = require('yargs/yargs');
|
|
const { hideBin } = require('yargs/helpers');
|
|
const { exitWithError } = require('../../development/lib/exit-with-error');
|
|
const {
|
|
isWritable,
|
|
getFirstParentDirectoryThatExists,
|
|
} = require('../helpers/file');
|
|
const { convertToHexValue, withFixtures } = require('./helpers');
|
|
|
|
const ganacheOptions = {
|
|
accounts: [
|
|
{
|
|
secretKey:
|
|
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC',
|
|
balance: convertToHexValue(25000000000000000000),
|
|
},
|
|
],
|
|
};
|
|
|
|
async function loadNewAccount() {
|
|
let loadingTimes;
|
|
|
|
await withFixtures(
|
|
{
|
|
fixtures: 'imported-account',
|
|
ganacheOptions,
|
|
},
|
|
async ({ driver }) => {
|
|
await driver.navigate();
|
|
await driver.fill('#password', 'correct horse battery staple');
|
|
await driver.press('#password', driver.Key.ENTER);
|
|
|
|
await driver.clickElement('.account-menu__icon');
|
|
const timestampBeforeAction = new Date();
|
|
await driver.clickElement({ text: 'Create account', tag: 'div' });
|
|
await driver.fill('.new-account-create-form input', '2nd account');
|
|
await driver.clickElement({ text: 'Create', tag: 'button' });
|
|
await driver.waitForSelector({
|
|
css: '.currency-display-component__text',
|
|
text: '0',
|
|
});
|
|
const timestampAfterAction = new Date();
|
|
loadingTimes = timestampAfterAction - timestampBeforeAction;
|
|
},
|
|
);
|
|
return loadingTimes;
|
|
}
|
|
|
|
async function confirmTx() {
|
|
let loadingTimes;
|
|
await withFixtures(
|
|
{
|
|
fixtures: 'imported-account',
|
|
ganacheOptions,
|
|
},
|
|
async ({ driver }) => {
|
|
await driver.navigate();
|
|
await driver.fill('#password', 'correct horse battery staple');
|
|
await driver.press('#password', driver.Key.ENTER);
|
|
|
|
await driver.clickElement('[data-testid="eth-overview-send"]');
|
|
|
|
await driver.fill(
|
|
'input[placeholder="Search, public address (0x), or ENS"]',
|
|
'0x2f318C334780961FB129D2a6c30D0763d9a5C970',
|
|
);
|
|
|
|
const inputAmount = await driver.findElement('.unit-input__input');
|
|
await inputAmount.fill('1');
|
|
|
|
await driver.clickElement({ text: 'Next', tag: 'button' });
|
|
const timestampBeforeAction = new Date();
|
|
await driver.clickElement({ text: 'Confirm', tag: 'button' });
|
|
|
|
await driver.clickElement('[data-testid="home__activity-tab"]');
|
|
await driver.wait(async () => {
|
|
const confirmedTxes = await driver.findElements(
|
|
'.transaction-list__completed-transactions .transaction-list-item',
|
|
);
|
|
return confirmedTxes.length === 1;
|
|
}, 10000);
|
|
|
|
await driver.waitForSelector('.transaction-status--confirmed');
|
|
const timestampAfterAction = new Date();
|
|
loadingTimes = timestampAfterAction - timestampBeforeAction;
|
|
},
|
|
);
|
|
return loadingTimes;
|
|
}
|
|
|
|
async function main() {
|
|
const { argv } = yargs(hideBin(process.argv)).usage(
|
|
'$0 [options]',
|
|
'Run a page load benchmark',
|
|
(_yargs) =>
|
|
_yargs.option('out', {
|
|
description:
|
|
'Output filename. Output printed to STDOUT of this is omitted.',
|
|
type: 'string',
|
|
normalize: true,
|
|
}),
|
|
);
|
|
|
|
const results = {};
|
|
results.loadNewAccount = await loadNewAccount();
|
|
results.confirmTx = await confirmTx();
|
|
const { out } = argv;
|
|
|
|
if (out) {
|
|
const outputDirectory = path.dirname(out);
|
|
const existingParentDirectory = await getFirstParentDirectoryThatExists(
|
|
outputDirectory,
|
|
);
|
|
if (!(await isWritable(existingParentDirectory))) {
|
|
throw new Error('Specified output file directory is not writable');
|
|
}
|
|
if (outputDirectory !== existingParentDirectory) {
|
|
await fs.mkdir(outputDirectory, { recursive: true });
|
|
}
|
|
await fs.writeFile(out, JSON.stringify(results, null, 2));
|
|
} else {
|
|
console.log(JSON.stringify(results, null, 2));
|
|
}
|
|
}
|
|
|
|
main().catch((error) => {
|
|
exitWithError(error);
|
|
});
|