1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-22 18:00:18 +01:00
metamask-extension/test/e2e/snaps/test-snap-management.spec.js
David Drazic ff96836871
[FLASK] Add updated version of the Snaps settings UI (#18438)
* Add updated version of the Snaps list UI

Add more changes to match the designs of snaps list

Add next design iteration for snaps list

Update icons, sizes and pointer behaviour

Add redesign for snap settings page

Refactor and improve designs

Fix unit tests and refactor code

Fix e2e test

Fix lint

Update margin values

Add CSS override for connected sites list and update margins

Update paddings as requested

Fix vertical alignment of links

Fix tooltip position on the enable button

Add usage of getSnapName function for displaying snap names

Fix e2e tests and update date format for snap install date

Improve unit test for snap-settings-card

Change installation info logic

Update mocked state for snap

Add tests for ViewSnap component, refactor and update mocked state

Add check for version info

Change Snaps icon in Settings

Refactor Snaps list to use selector

Add handling in case of missing version history

* Fix icon ref

* Remove console logs

* Remove onClick from selector

* Add code fencing for imports in selectors.js
2023-04-24 12:21:37 +02:00

161 lines
4.9 KiB
JavaScript

const { strict: assert } = require('assert');
const { withFixtures } = require('../helpers');
const FixtureBuilder = require('../fixture-builder');
const { TEST_SNAPS_WEBSITE_URL } = require('./enums');
describe('Test Snap Management', function () {
it('tests install disable enable and removal of a snap', 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);
// open a new tab and navigate to test snaps page and connect
await driver.openNewPage(TEST_SNAPS_WEBSITE_URL);
await driver.delay(1000);
// find and scroll to the correct card and click first
const snapButton = await driver.findElement('#connectNotification');
await driver.scrollToElement(snapButton);
await driver.delay(1000);
await driver.clickElement('#connectNotification');
await driver.delay(1000);
// switch to metamask extension and click connect
let windowHandles = await driver.waitUntilXWindowHandles(
3,
1000,
10000,
);
await driver.switchToWindowWithTitle(
'MetaMask Notification',
windowHandles,
);
await driver.clickElement({
text: 'Connect',
tag: 'button',
});
await driver.waitForSelector({ text: 'Approve & install' });
await driver.clickElement({
text: 'Approve & install',
tag: 'button',
});
await driver.waitForSelector({ text: 'Ok' });
await driver.clickElement({
text: 'Ok',
tag: 'button',
});
// switch to the original MM tab
const extensionPage = windowHandles[0];
await driver.switchToWindow(extensionPage);
await driver.delay(1000);
// click on the account menu icon
await driver.clickElement('.account-menu__icon');
await driver.delay(1000);
// try to click on the notification item
await driver.clickElement({
text: 'Settings',
tag: 'div',
});
await driver.delay(1000);
// try to click on the snaps item
await driver.clickElement({
text: 'Snaps',
tag: 'div',
});
await driver.delay(1000);
// try to disable the snap
await driver.clickElement({
text: 'Notification Test Snap',
tag: 'p',
});
await driver.clickElement('.toggle-button > div');
// switch back to test-snaps window
windowHandles = await driver.waitUntilXWindowHandles(2, 1000, 10000);
await driver.switchToWindowWithTitle('Test Snaps', windowHandles);
// wait then try the notification test
await driver.delay(1000);
await driver.clickElement('#sendInAppNotification');
// click OK on the popup
await driver.delay(1000);
await driver.closeAlertPopup();
await driver.delay(1000);
// switch back to snaps page
await driver.switchToWindow(extensionPage);
await driver.delay(1000);
// try to re-enaable the snap
await driver.clickElement('.toggle-button > div');
await driver.delay(1000);
// switch back to test snaps page
await driver.switchToWindowWithTitle('Test Snaps', windowHandles);
// wait then try the notification test
await driver.delay(1000);
await driver.clickElement('#sendInAppNotification');
// check to see that there is one notification
await driver.switchToWindow(extensionPage);
await driver.delay(1000);
const notificationResult = await driver.findElement(
'.account-menu__icon__notification-count',
);
assert.equal(await notificationResult.getText(), '1');
// try to remove snap
await driver.clickElement({
text: 'Remove Notification Test Snap',
tag: 'p',
});
await driver.delay(1000);
// try to click remove on popover
await driver.clickElement('#popoverRemoveSnapButton');
await driver.delay(1000);
// check the results of the removal
await driver.delay(2000);
const removeResult = await driver.findElement(
'.snap-list-tab__container--no-snaps_inner',
);
assert.equal(
await removeResult.getText(),
"You don't have any snaps installed.",
);
},
);
});
});