-
Notifications
You must be signed in to change notification settings - Fork 5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' into 17191/onboarding-unit-tests
- Loading branch information
Showing
2 changed files
with
141 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
module.exports = { | ||
TEST_SNAPS_WEBSITE_URL: 'https://metamask.github.io/test-snaps/4.5.0/', | ||
TEST_SNAPS_WEBSITE_URL: 'https://metamask.github.io/test-snaps/4.6.2/', | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
const { strict: assert } = require('assert'); | ||
const { withFixtures } = require('../helpers'); | ||
const FixtureBuilder = require('../fixture-builder'); | ||
const { TEST_SNAPS_WEBSITE_URL } = require('./enums'); | ||
|
||
describe('Test Snap RPC', function () { | ||
it('can use the cross-snap RPC endowment and produce a public key', async function () { | ||
const ganacheOptions = { | ||
accounts: [ | ||
{ | ||
secretKey: | ||
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', | ||
balance: 25000000000000000000, | ||
}, | ||
], | ||
}; | ||
await withFixtures( | ||
{ | ||
fixtures: new FixtureBuilder().build(), | ||
ganacheOptions, | ||
failOnConsoleError: false, | ||
title: this.test.title, | ||
}, | ||
async ({ driver }) => { | ||
await driver.navigate(); | ||
|
||
// enter pw into extension | ||
await driver.fill('#password', 'correct horse battery staple'); | ||
await driver.press('#password', driver.Key.ENTER); | ||
|
||
// navigate to test snaps page and connect | ||
await driver.driver.get(TEST_SNAPS_WEBSITE_URL); | ||
await driver.delay(1000); | ||
const snapButton1 = await driver.findElement('#connectRpcSnap'); | ||
await driver.scrollToElement(snapButton1); | ||
await driver.delay(1000); | ||
await driver.clickElement('#connectRpcSnap'); | ||
await driver.delay(1000); | ||
|
||
// switch to metamask extension and click connect | ||
let windowHandles = await driver.waitUntilXWindowHandles( | ||
2, | ||
1000, | ||
10000, | ||
); | ||
await driver.switchToWindowWithTitle( | ||
'MetaMask Notification', | ||
windowHandles, | ||
); | ||
await driver.clickElement( | ||
{ | ||
text: 'Connect', | ||
tag: 'button', | ||
}, | ||
10000, | ||
); | ||
|
||
await driver.delay(2000); | ||
|
||
// approve install of snap | ||
windowHandles = await driver.waitUntilXWindowHandles(2, 1000, 10000); | ||
await driver.switchToWindowWithTitle( | ||
'MetaMask Notification', | ||
windowHandles, | ||
); | ||
await driver.clickElement({ | ||
text: 'Approve & install', | ||
tag: 'button', | ||
}); | ||
|
||
// switch back to test snaps page | ||
windowHandles = await driver.waitUntilXWindowHandles(1, 1000, 10000); | ||
await driver.switchToWindowWithTitle('Test Snaps', windowHandles); | ||
|
||
// wait for npm installation success | ||
await driver.waitForSelector({ | ||
css: '#connectRpcSnap', | ||
text: 'Reconnect to RPC Snap', | ||
}); | ||
|
||
// click send inputs on test snap page | ||
const snapButton2 = await driver.findElement('#sendRpc'); | ||
await driver.scrollToElement(snapButton2); | ||
await driver.delay(1000); | ||
await driver.clickElement('#sendRpc'); | ||
|
||
// approve and install part one | ||
windowHandles = await driver.waitUntilXWindowHandles(2, 1000, 10000); | ||
await driver.switchToWindowWithTitle( | ||
'MetaMask Notification', | ||
windowHandles, | ||
); | ||
await driver.clickElement({ | ||
text: 'Approve & install', | ||
tag: 'button', | ||
}); | ||
|
||
// wait for window to close | ||
await driver.delay(2000); | ||
|
||
// approve and install part two | ||
windowHandles = await driver.waitUntilXWindowHandles(2, 1000, 10000); | ||
await driver.switchToWindowWithTitle( | ||
'MetaMask Notification', | ||
windowHandles, | ||
); | ||
await driver.clickElement({ | ||
text: 'Approve & install', | ||
tag: 'button', | ||
}); | ||
|
||
// wait for permissions popover | ||
await driver.waitForSelector({ | ||
text: 'Confirm', | ||
tag: 'button', | ||
}); | ||
|
||
// click checkboxes and confirm | ||
await driver.clickElement('#key-access-bip32-m-44h-0h-secp256k1-0'); | ||
await driver.clickElement('#key-access-bip32-m-44h-0h-ed25519-0'); | ||
await driver.clickElement({ | ||
text: 'Confirm', | ||
tag: 'button', | ||
}); | ||
|
||
// delay for result creation | ||
await driver.delay(2500); | ||
|
||
// check the results of the custom confirm | ||
windowHandles = await driver.waitUntilXWindowHandles(1, 1000, 10000); | ||
await driver.switchToWindowWithTitle('Test Snaps', windowHandles); | ||
const confirmResult = await driver.findElement('#rpcResult'); | ||
assert.equal( | ||
await confirmResult.getText(), | ||
'"0x033e98d696ae15caef75fa8dd204a7c5c08d1272b2218ba3c20feeb4c691eec366"', | ||
); | ||
}, | ||
); | ||
}); | ||
}); |