diff --git a/commands/metamask.js b/commands/metamask.js index 1e8a6c1d7..b32c62856 100644 --- a/commands/metamask.js +++ b/commands/metamask.js @@ -122,31 +122,6 @@ const metamask = { extensionImportTokenUrl, }; }, - // workaround for metamask random blank page on first run - async fixBlankPage() { - await playwright.metamaskWindow().waitForTimeout(1000); - for (let times = 0; times < 5; times++) { - if ( - (await playwright - .metamaskWindow() - .locator(onboardingWelcomePageElements.app) - .count()) === 0 - ) { - await playwright.metamaskWindow().reload(); - await playwright.metamaskWindow().waitForTimeout(2000); - } else if ( - (await playwright - .metamaskWindow() - .locator(onboardingWelcomePageElements.criticalError) - .count()) > 0 - ) { - await playwright.metamaskWindow().reload(); - await playwright.metamaskWindow().waitForTimeout(2000); - } else { - break; - } - } - }, async closePopupAndTooltips() { // note: this is required for fast execution of e2e tests to avoid flakiness // otherwise popup may not be detected properly and not closed @@ -202,7 +177,8 @@ const metamask = { return true; }, async unlock(password) { - await module.exports.fixBlankPage(); + await playwright.fixBlankPage(); + await playwright.fixCriticalError(); await playwright.waitAndType(unlockPageElements.passwordInput, password); await playwright.waitAndClick( unlockPageElements.unlockButton, @@ -608,10 +584,17 @@ const metamask = { skipSetup, ); }, - async activateEnhancedGasFeeUI(skipSetup) { + async activateEthSignRequests(skipSetup) { return await activateAdvancedSetting( - experimentalSettingsPageElements.enhancedGasFeeUIToggleOn, - experimentalSettingsPageElements.enhancedGasFeeUIToggleOff, + advancedPageElements.ethSignRequestsToggleOn, + advancedPageElements.ethSignRequestsToggleOff, + skipSetup, + ); + }, + async activateImprovedTokenAllowance(skipSetup) { + return await activateAdvancedSetting( + experimentalSettingsPageElements.improvedTokenAllowanceToggleOn, + experimentalSettingsPageElements.improvedTokenAllowanceToggleOff, skipSetup, true, ); @@ -771,15 +754,23 @@ const metamask = { }, async confirmPermissionToSpend(spendLimit) { const notificationPage = await playwright.switchToMetamaskNotification(); - await playwright.waitAndSetValue( - spendLimit, - notificationPageElements.customSpendingLimitInput, - notificationPage, - ); - await playwright.waitAndClick( - notificationPageElements.allowToSpendButton, - notificationPage, - ); + // experimental mode on + if ( + await playwright + .metamaskNotificationWindow() + .locator(notificationPageElements.customSpendingLimitInput) + .isVisible() + ) { + await playwright.waitAndSetValue( + spendLimit, + notificationPageElements.customSpendingLimitInput, + notificationPage, + ); + await playwright.waitAndClick( + notificationPageElements.allowToSpendButton, + notificationPage, + ); + } await playwright.waitAndClick( notificationPageElements.allowToSpendButton, notificationPage, @@ -1149,7 +1140,13 @@ const metamask = { }, async initialSetup( playwrightInstance, - { secretWordsOrPrivateKey, network, password, enableAdvancedSettings }, + { + secretWordsOrPrivateKey, + network, + password, + enableAdvancedSettings, + enableExperimentalSettings, + }, ) { const isCustomNetwork = (process.env.NETWORK_NAME && @@ -1164,7 +1161,8 @@ const metamask = { await playwright.assignWindows(); await playwright.assignActiveTabName('metamask'); await module.exports.getExtensionDetails(); - await module.exports.fixBlankPage(); + await playwright.fixBlankPage(); + await playwright.fixCriticalError(); if ( await playwright .metamaskWindow() @@ -1180,7 +1178,7 @@ const metamask = { await module.exports.importAccount(secretWordsOrPrivateKey); } - await setupSettings(enableAdvancedSettings); + await setupSettings(enableAdvancedSettings, enableExperimentalSettings); if (isCustomNetwork) { await module.exports.addNetwork(network); @@ -1266,7 +1264,10 @@ async function activateAdvancedSetting( return true; } -async function setupSettings(enableAdvancedSettings) { +async function setupSettings( + enableAdvancedSettings, + enableExperimentalSettings, +) { await switchToMetamaskIfNotActive(); await metamask.goToAdvancedSettings(); await metamask.activateAdvancedGasControl(true); @@ -1278,7 +1279,9 @@ async function setupSettings(enableAdvancedSettings) { await metamask.activateTestnetConversion(true); } await metamask.goToExperimentalSettings(); - await metamask.activateEnhancedGasFeeUI(true); + if (enableExperimentalSettings) { + await metamask.activateImprovedTokenAllowance(true); + } await playwright.waitAndClick( settingsPageElements.closeButton, await playwright.metamaskWindow(), diff --git a/commands/playwright.js b/commands/playwright.js index 2c3977015..7867f3e3c 100644 --- a/commands/playwright.js +++ b/commands/playwright.js @@ -3,6 +3,10 @@ const { notificationPageElements, } = require('../pages/metamask/notification-page'); const { pageElements } = require('../pages/metamask/page'); +const { + onboardingWelcomePageElements, +} = require('../pages/metamask/first-time-flow-page'); +// const metamask = require('./metamask'); const sleep = require('util').promisify(setTimeout); let browser; @@ -307,5 +311,35 @@ module.exports = { ); await module.exports.waitToBeHidden(pageElements.loadingOverlay, page); } + await module.exports.fixCriticalError(); + }, + // workaround for metamask random blank page on first run + async fixBlankPage(page = metamaskWindow) { + for (let times = 0; times < 5; times++) { + if ( + (await page.locator(onboardingWelcomePageElements.app).count()) === 0 + ) { + await page.reload(); + await module.exports.waitUntilMetamaskWindowIsStable(); + } else { + break; + } + } + }, + async fixCriticalError(page = metamaskWindow) { + for (let times = 0; times < 5; times++) { + if ((await page.locator(pageElements.criticalError).count()) > 0) { + if (times < 3) { + await page.reload(); + } else { + await module.exports.waitAndClick( + pageElements.criticalErrorRestartButton, + ); + } + await module.exports.waitUntilMetamaskWindowIsStable(); + } else { + break; + } + } }, }; diff --git a/docs/synpress-commands.md b/docs/synpress-commands.md index eb7af1e1e..06e670680 100644 --- a/docs/synpress-commands.md +++ b/docs/synpress-commands.md @@ -178,12 +178,22 @@ activateDismissBackupReminderInMetamask( ): Chainable; ``` -#### `cy.activateEnhancedGasFeeUIInMetamask()` +#### `cy.activateEthSignRequestsInMetamask()` -Activate enhanced gas fee UI in metamask settings. +Activate eth sign requests in metamask settings. ```ts -activateEnhancedGasFeeUIInMetamask(skipSetup?: boolean): Chainable; +activateEthSignRequestsInMetamask(skipSetup?: boolean): Chainable; +``` + +#### `cy.activateImprovedTokenAllowanceInMetamask()` + +Activate improved token allowance in metamask settings (experimental). + +```ts +activateImprovedTokenAllowanceInMetamask( + skipSetup?: boolean, +): Chainable; ``` #### `cy.resetMetamaskAccount()` @@ -407,6 +417,7 @@ setupMetamask( network?: string | object, password?: string, enableAdvancedSettings?: boolean, + enableExperimentalSettings?: boolean, ): Chainable; ``` diff --git a/package.json b/package.json index d26e2b77e..ee9379d74 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@synthetixio/synpress", - "version": "3.2.0", + "version": "3.5.0", "description": "Synpress is e2e testing framework based around Cypress.io & playwright with included MetaMask support. Test your dapps with ease.", "keywords": [ "Synpress", diff --git a/pages/metamask/first-time-flow-page.js b/pages/metamask/first-time-flow-page.js index 80405b880..41f3ba8f9 100644 --- a/pages/metamask/first-time-flow-page.js +++ b/pages/metamask/first-time-flow-page.js @@ -7,13 +7,11 @@ module.exports.metametricsPageElements = { }; const app = '#app-content .app'; -const criticalError = `#app-content .critical-error`; const onboardingWelcomePage = `${onboardingFlow} [data-testid="onboarding-welcome"]`; const importWalletButton = `${onboardingWelcomePage} [data-testid="onboarding-import-wallet"]`; const createWalletButton = `${onboardingWelcomePage} [data-testid="onboarding-create-wallet"]`; module.exports.onboardingWelcomePageElements = { app, - criticalError, onboardingWelcomePage, importWalletButton, createWalletButton, diff --git a/pages/metamask/page.js b/pages/metamask/page.js index 2a5e4654b..20d7d90d0 100644 --- a/pages/metamask/page.js +++ b/pages/metamask/page.js @@ -6,6 +6,9 @@ const loadingOverlayErrorButtons = '.loading-overlay__error-buttons'; const loadingOverlayErrorButtonsRetryButton = '.loading-overlay__error-buttons .btn-primary'; +const criticalError = '.critical-error'; +const criticalErrorRestartButton = '#critical-error-button'; + module.exports.pageElements = { loadingLogo, loadingSpinner, @@ -13,4 +16,6 @@ module.exports.pageElements = { loadingOverlaySpinner, loadingOverlayErrorButtons, loadingOverlayErrorButtonsRetryButton, + criticalError, + criticalErrorRestartButton, }; diff --git a/pages/metamask/settings-page.js b/pages/metamask/settings-page.js index fa4c50a02..ba4390b87 100644 --- a/pages/metamask/settings-page.js +++ b/pages/metamask/settings-page.js @@ -35,6 +35,10 @@ const dismissBackupReminderOn = '[data-testid="advanced-setting-dismiss-reminder"] .toggle-button--on'; const dismissBackupReminderOff = '[data-testid="advanced-setting-dismiss-reminder"] .toggle-button--off'; +const ethSignRequestsToggleOn = + '[data-testid="advanced-setting-toggle-ethsign"] .toggle-button--on'; +const ethSignRequestsToggleOff = + '[data-testid="advanced-setting-toggle-ethsign"] .toggle-button--off'; module.exports.advancedPageElements = { resetAccountButton, advancedGasControlToggleOn, @@ -49,15 +53,17 @@ module.exports.advancedPageElements = { dismissBackupReminderOff, customNonceToggleOn, customNonceToggleOff, + ethSignRequestsToggleOn, + ethSignRequestsToggleOff, }; -const enhancedGasFeeUIToggleOn = +const improvedTokenAllowanceToggleOn = '.settings-page__content-row:nth-child(1) .toggle-button--on'; -const enhancedGasFeeUIToggleOff = +const improvedTokenAllowanceToggleOff = '.settings-page__content-row:nth-child(1) .toggle-button--off'; module.exports.experimentalSettingsPageElements = { - enhancedGasFeeUIToggleOn, - enhancedGasFeeUIToggleOff, + improvedTokenAllowanceToggleOn, + improvedTokenAllowanceToggleOff, }; const nevermindButton = '.modal-container .btn-secondary'; diff --git a/plugins/index.js b/plugins/index.js index cab619e4e..8c8e6d3b1 100644 --- a/plugins/index.js +++ b/plugins/index.js @@ -117,6 +117,7 @@ module.exports = (on, config) => { network, password, enableAdvancedSettings, + enableExperimentalSettings, }) => { if (process.env.NETWORK_NAME) { network = process.env.NETWORK_NAME; @@ -132,6 +133,7 @@ module.exports = (on, config) => { network, password, enableAdvancedSettings, + enableExperimentalSettings, }); return true; }, diff --git a/support/commands.js b/support/commands.js index a1afb9514..f6d09dd29 100644 --- a/support/commands.js +++ b/support/commands.js @@ -100,9 +100,16 @@ Cypress.Commands.add( ); Cypress.Commands.add( - 'activateEnhancedGasFeeUIInMetamask', + 'activateEthSignRequestsInMetamask', (skipSetup = false) => { - return cy.task('activateEnhancedGasFeeUIInMetamask', skipSetup); + return cy.task('activateEthSignRequestsInMetamask', skipSetup); + }, +); + +Cypress.Commands.add( + 'activateImprovedTokenAllowanceInMetamask', + (skipSetup = false) => { + return cy.task('activateImprovedTokenAllowanceInMetamask', skipSetup); }, ); @@ -222,12 +229,14 @@ Cypress.Commands.add( network = 'goerli', password = 'Tester@1234', enableAdvancedSettings = false, + enableExperimentalSettings = false, ) => { return cy.task('setupMetamask', { secretWordsOrPrivateKey, network, password, enableAdvancedSettings, + enableExperimentalSettings, }); }, ); diff --git a/support/index.d.ts b/support/index.d.ts index c83ebc9a7..0abff7a3a 100644 --- a/support/index.d.ts +++ b/support/index.d.ts @@ -142,11 +142,19 @@ declare namespace Cypress { skipSetup?: boolean, ): Chainable; /** - * Activate enhanced gas fee UI in metamask settings + * Activate eth sign requests in metamask settings * @example - * cy.activateEnhancedGasFeeUIInMetamask() + * cy.activateEthSignRequestsInMetamask() */ - activateEnhancedGasFeeUIInMetamask(skipSetup?: boolean): Chainable; + activateEthSignRequestsInMetamask(skipSetup?: boolean): Chainable; + /** + * Activate improved token allowance in metamask settings (experimental) + * @example + * cy.activateImprovedTokenAllowanceInMetamask() + */ + activateImprovedTokenAllowanceInMetamask( + skipSetup?: boolean, + ): Chainable; /** * Reset metamask account state in settings * @example @@ -327,6 +335,7 @@ declare namespace Cypress { network?: string | object, password?: string, enableAdvancedSettings?: boolean, + enableExperimentalSettings?: boolean, ): Chainable; /** * Execute settle on Exchanger contract diff --git a/yarn.lock b/yarn.lock index 371ed4cf3..b48964a53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1404,16 +1404,16 @@ debug "^4.3.1" "@truffle/contract@^4.2.6": - version "4.6.16" - resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.6.16.tgz#ee5f3b1bbe145918c11f38e6657193006ac88814" - integrity sha512-KEUBE09P05PV5RmkQ9FiRrTR1FJ8Hg7vcSGpCUTDhwpRWTrYnrHpjYDRdn+RzdJNE7JHvRqk++tKbnU4fu3q5w== + version "4.6.17" + resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.6.17.tgz#d25bb1039c8d4bbbaee19245173e890770444848" + integrity sha512-sIMam5Wqr9AEiqHfOcWGJGqTv8Qy+BT765PaNHUUT6JBAY+tpHM3FlQd2nM6zLJ8paR3SLDGIthkhCBH/KNgDA== dependencies: "@ensdomains/ensjs" "^2.1.0" "@truffle/blockchain-utils" "^0.1.6" "@truffle/contract-schema" "^3.4.13" "@truffle/debug-utils" "^6.0.47" "@truffle/error" "^0.2.0" - "@truffle/interface-adapter" "^0.5.29" + "@truffle/interface-adapter" "^0.5.30" bignumber.js "^7.2.1" debug "^4.3.1" ethers "^4.0.32" @@ -1440,10 +1440,10 @@ resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.2.0.tgz#65de6f03f5c041f883cc87677eecf8231428f1ab" integrity sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ== -"@truffle/interface-adapter@^0.5.29": - version "0.5.29" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.29.tgz#e75e5b5dd120e699774bbea6465c6d1d7c75056e" - integrity sha512-6UlJ+f87z7y/dWk9UfbIU+4e80iRsp8h03LEiE5B+PvZbr6cuMjLJUBtBBQZMo3+xrIcS/2u3p5hOxW8OJm8tw== +"@truffle/interface-adapter@^0.5.30": + version "0.5.30" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.30.tgz#b54d8e1ab4421a6f0347ee418ef1f30aebd6b4f0" + integrity sha512-wyCcESeZJBkAfuSGU8GHCusIWDUDyQjJZMcyShv59ZTSAwQR7xx0+a0Q1LlS532G/pGFLYe2VzKSY1pRHRwgug== dependencies: bn.js "^5.1.3" ethers "^4.0.32" @@ -1598,9 +1598,9 @@ integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/node@*": - version "18.14.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.6.tgz#ae1973dd2b1eeb1825695bb11ebfb746d27e3e93" - integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== + version "18.15.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.0.tgz#286a65e3fdffd691e170541e6ecb0410b16a38be" + integrity sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w== "@types/node@^12.12.6": version "12.20.55" @@ -3659,9 +3659,9 @@ camelcase@^7.0.0: integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001449: - version "1.0.30001462" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001462.tgz#b2e801e37536d453731286857c8520d3dcee15fe" - integrity sha512-PDd20WuOBPiasZ7KbFnmQRyuLE7cFXW2PVd7dmALzbkUXEP46upAuCDm9eY9vho8fgNMGmbAX92QBZHzcnWIqw== + version "1.0.30001464" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001464.tgz#888922718df48ce5e33dcfe1a2af7d42676c5eb7" + integrity sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g== caseless@~0.12.0: version "0.12.0" @@ -4935,9 +4935,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.284: - version "1.4.325" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.325.tgz#7b97238a61192d85d055d97f3149832b3617d37b" - integrity sha512-K1C03NT4I7BuzsRdCU5RWkgZxtswnKDYM6/eMhkEXqKu4e5T+ck610x3FPzu1y7HVFSiQKZqP16gnJzPpji1TQ== + version "1.4.328" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz#b4565ffa502542b561cea16086d6d9b916c7095a" + integrity sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw== elliptic@6.5.2, elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" @@ -10398,9 +10398,9 @@ preact@10.4.1: integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== preact@^10.3.3: - version "10.13.0" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.13.0.tgz#f8bd3cf257a4dbe41da71a52131b79916d4ca89d" - integrity sha512-ERdIdUpR6doqdaSIh80hvzebHB7O6JxycOhyzAeLEchqOq/4yueslQbfnPwXaNhAYacFTyCclhwkEbOumT0tHw== + version "10.13.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.13.1.tgz#d220bd8771b8fa197680d4917f3cefc5eed88720" + integrity sha512-KyoXVDU5OqTpG9LXlB3+y639JAGzl8JSBXLn1J9HTSB3gbKcuInga7bZnXLlxmK94ntTs1EFeZp0lrja2AuBYQ== precond@0.2: version "0.2.3" @@ -10836,9 +10836,9 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.2.2, readable util-deprecate "~1.0.1" readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" - integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -11220,9 +11220,9 @@ rimraf@^3.0.0, rimraf@^3.0.2: glob "^7.1.3" rimraf@^4.1.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.3.1.tgz#ccb3525e39100478acb334fae6d23029b87912ea" - integrity sha512-GfHJHBzFQra23IxDzIdBqhOWfbtdgS1/dCHrDy+yvhpoJY5TdwdT28oWaHWfRpKFDLd3GZnGTx6Mlt4+anbsxQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.0.tgz#c7a9f45bb2ec058d2e60ef9aca5167974313d605" + integrity sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ== dependencies: glob "^9.2.0" @@ -11817,9 +11817,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== spdy-transport@^3.0.0: version "3.0.0" @@ -12339,9 +12339,9 @@ terser@^4.6.3: source-map-support "~0.5.12" terser@^5.10.0: - version "5.16.5" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.5.tgz#1c285ca0655f467f92af1bbab46ab72d1cb08e5a" - integrity sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg== + version "5.16.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.6.tgz#f6c7a14a378ee0630fbe3ac8d1f41b4681109533" + integrity sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -13541,9 +13541,9 @@ ws@^5.1.1: async-limiter "~1.0.0" ws@^8.4.2: - version "8.12.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f" - integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew== + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: version "5.1.0"