feat: Simplify installSnap and initSnapEnv apis#206
Conversation
src/snap/utils.ts
Outdated
| export function isElementVisible( | ||
| page: DappeteerPage, | ||
| selector: string, | ||
| timeout = 2000 |
There was a problem hiding this comment.
2 sec seems a lot for checking if an element is visible
There was a problem hiding this comment.
Agreed, only 1 second was mostly not enough the 2 times I used this function. I can have a 1s be the default and still use 2 sec in my particular test.
The very good part about this, is that after all it'll be a maximum 2s so if the element is there in less time, this function will actually take less.
| timeout = 2000 | |
| timeout = 1000 |
There was a problem hiding this comment.
Hah now you see why I've added hasPermissions and hasKeyPermissions options is to avoid waiting for that timeout if element will never exist 😛
There was a problem hiding this comment.
Right haha I knew before! But I think it makes the api so much cleaner that way!
There was a problem hiding this comment.
Thanks to Bero's push, we came up with something even more elegant. I'm now racing between 2 possible elements that could appear, the issue of the race telling us in which state we are in. It's relatively elegant beside the bad name I came up with.
* chore: update CI for unstable branch * fix!: casing of MetaMask (#132) Fix casing of MetaMask Co-authored-by: Marin Petrunic <marin.petrunic@gmail.com> * fix: update ganache, fix test depending on goerli (#144) * fix: selector issues, useless timeouts, reorganise tests (#145) * fix: update ganache, fix test depending on goerli * fix: bugs in selectors, less timeout, reorganise structure * update yarn * chore: improve root hooks * try to increase timeout * better ci * add screenshot uploading to ci * fix screenshot name * run screenshot on failed test * fix lint * change viewport * fix tests * fix#123124 * fix tests * whyyyyyyyyyyyyyyyyyyyyyyyyy * please * fix testing dapp * dunno anymore * fix lint * fix typo in selector * update dapp loading * refactor script fetching for `index.html` * fix dam sing test Co-authored-by: Bernard <bero4net@gmail.com> * fix: import token flaky (#149) fix: import-token flakyness * feat!: update recommended metamask version (#151) * feat!: update recommended metamask version * implement screenshot helper * implement hide portfolio popup action * implement close what's new modal action * remove obsolete test * fix dappeteer methods broken on update * chore: fix lint * update metamask version to `10.20.0` * fix addToken.ts * address issues * fix lint * fix tests * fix #4 * fix non visible buttons Co-authored-by: Bernard Stojanović <bero4net@gmail.com> * chore: change eslint config to chainsafe shared (#152) * chore: change eslint to chainsafe config * address PR comments * address PR comments * fix tests * feat: add support for installing metamask flask (#153) feat: add support for installing metamask flaask * feat: ability to install snap (#154) * feat: add support for installing metamask flaask * feat: ability to install snaps * fi lint * fix starting a snap * fix snap install Co-authored-by: Bernard <bero4net@gmail.com> * fix: snap install faster, run all tests (#163) * fix: run all tests, faster check for installed snap * fix condition bug * feat: Add invokeSnap method; update installSnap method parameter; (#159) * Add invokeSnap method; update installSnap method parameter; * adjust invokeSnap method after review * Fix params type in invokeSnap method * update invokeSnap Return type * update invokeSnap with generic params * update test expectation * fix lint * feat: add ability to accept dialogs (#138) (#164) * feat:add ability to accept dialogs (#138) * fix lint * move installSnap, invokeSnap to dappeteer api; add bringToFront call to dialog methods * pair improvements * fix lint * add methods snap * exclude flask tests from global * exclude flask tests from global Co-authored-by: Bernard <bero4net@gmail.com> * feat!: add playwright support (#167) * feat!: add playwright support * fix: lint * fix: ci matrix * don't run snap tests on non flask * address PR comments * feat: added notification snap to methods-snap #137 (#166) * pair improvements * fix lint * feat: add notify Snap method * Added getAllNotifications method * go back after getting all notifications * remove timeout * fix post merge errors Co-authored-by: Bernard <bero4net@gmail.com> Co-authored-by: Marin Petrunic <marin.petrunic@gmail.com> * feat: method to bootstrap snap env (#180) * feat: install snap from local files * fix: installing and invokeing snaps * disable addToken test * disable fail fast * replace binance smart chain * chore: node engine requirements (#184) set engines compatibility for 16 and above * chore: remove metamask dir (#185) * fix: remove page param from install snap (#188) * feat!: replace outdated methods (#189) * feat!: replaced addTokenMethod * feat: remove add network method * chore: Ci enhancement (#193) * cache yarn and have lint and build as separate steps * add back yarn.lock * add jobs * fix name * feat: allow signing typed data (#191) * add test to sign typed data * add a check to see if the sign button is actually disabled * clean up * fix and clean * remove flackyness * lint * fix playwright * add hidden option for pupeteer types waitForSelector * remove reload between tests * fix: fix prompt clicking flakiness, fix multiple snap key permissions (#194) * add retries when confirming prompts with lower timeout * better snap error handling, ability to accept multiple key permissions * bail on first fail * add context to screenshots * remove various random timeouts, add wait for overlay, more retrys * fix lint * increase timeout for loading network and token details * address PR comments * increase timeout * add retry to profile dropdown * feat: snap notifications 137 (#187) * chore: node engine requirements (#184) (#186) set engines compatibility for 16 and above Co-authored-by: Bernard Stojanović <bero4net@gmail.com> * pair improvements * fix lint * feat: add notify Snap method * go back after getting all notifications * remove timeout * wip * Add notification observe method * update test * remove unused code * wip notifiction observer * wip observer based notifications * wip observer based notifications * remove unused dependency * cleanup * fixes after merge * revert method names * clean waitForNotification method * emitter solution - FP * emitter solution - ClassBased * Cleanup class based emitter * fix lint * fixes after merge * remove p-event library * remove eslint comment * update test configuration * return NotificationList from waitForNotification * add getNotificationEmitter method * remove back button Co-authored-by: Marin Petrunić <mpetrunic@users.noreply.github.com> Co-authored-by: Bernard Stojanović <bero4net@gmail.com> Co-authored-by: Marin Petrunic <marin.petrunic@gmail.com> * chore: Deprecate button clicks for tests (#195) * sharedConst and signature check * without sharedConst :) * request accounts * request accounts * long typed data * short typed data * add token reject/accept * add network accept/reject * actually verify the lock/unlock * contract interactions * address comment * web3-utils 1.3.4 * addToken and addNetwork use boolean * remove useless wait * chore: Update documentation and Readme (#202) * docs * change to metaMask accross the board and use bootstrap in our test * MetaMMMMMMask * snaps methods in API.md * snaps usage in Readme.md * Update README.md Co-authored-by: Marin Petrunić <mpetrunic@users.noreply.github.com> * address comment * add forgotten menu item for initSnapEnv * removing jsdoc Co-authored-by: Marin Petrunić <mpetrunic@users.noreply.github.com> * chore: Remove local server for dapp (#203) * docs * change to metaMask accross the board and use bootstrap in our test * MetaMMMMMMask * snaps methods in API.md * snaps usage in Readme.md * init * lint * add dev deps for ganache/console.log to make build pass * Update README.md Co-authored-by: Marin Petrunić <mpetrunic@users.noreply.github.com> * address comment * add forgotten menu item for initSnapEnv * removing jsdoc Co-authored-by: Marin Petrunić <mpetrunic@users.noreply.github.com> * feat: Simplify `installSnap` and `initSnapEnv` apis (#206) * simplify api * remove stray comments * fix undefined opts * double question mark back :) * Update src/snap/utils.ts * 2s for my use case * test perf * elegant race with bad name * chore: update web3 (#217) chore: upgrade web3.js * chore: update metamask version (#209) * update recommended version * chore: fix timeout for accept dialog (#218) increase timeout for accept and reject dialog * fix: increase viewport size (#219) * Set viewport to most popular desktop resolution; fix for #208 Co-authored-by: Bernard Stojanović <bero4net@gmail.com> * fix: viewport typo (#220) fix viewport typo Co-authored-by: Maarten Zuidhoorn <maarten@zuidhoorn.com> Co-authored-by: Bernard <bero4net@gmail.com> Co-authored-by: Anton Lykhoyda <lykhoyda@gmail.com> Co-authored-by: Thibaut Sardan <33178835+Tbaut@users.noreply.github.com>
* simplify api * remove stray comments * fix undefined opts * double question mark back :) * Update src/snap/utils.ts * 2s for my use case * test perf * elegant race with bad name
* simplify api * remove stray comments * fix undefined opts * double question mark back :) * Update src/snap/utils.ts * 2s for my use case * test perf * elegant race with bad name
Short description of work done
Auto-detecting the warnings and permission requests so that devs don't need to know in advance.
PR Checklist
Issues
closes #204