diff --git a/chopsticks-config.yml b/chopsticks-config.yml index 46fab52a..f7ad31b9 100644 --- a/chopsticks-config.yml +++ b/chopsticks-config.yml @@ -1,4 +1,4 @@ -endpoint: wss://kusama.rpc.amforc.com +endpoint: wss://rpc.ibp.network/kusama mock-signature-host: true block: 22568290 db: ./db.sqlite diff --git a/packages/ui/cypress/support/page-objects/landingPage.ts b/packages/ui/cypress/support/page-objects/landingPage.ts index a4894e4b..7b658986 100644 --- a/packages/ui/cypress/support/page-objects/landingPage.ts +++ b/packages/ui/cypress/support/page-objects/landingPage.ts @@ -18,6 +18,7 @@ export const landingPage = { cy.get('[data-cy=label-first-multisig-creation', { timeout: 30000 }), multisigCreationInfoBanner: (timeout = 4000) => cy.get('[data-cy=banner-multisig-creation-info]', { timeout }), + creationInfoBannerCloseButton: () => cy.get('[data-cy=button-close-multisig-creation-info]'), // page specific assertion shouldHaveNoAccountErrorAndWikiLink() { diff --git a/packages/ui/cypress/tests/address-bar.cy.ts b/packages/ui/cypress/tests/address-bar.cy.ts index 19fa9741..2bebbc44 100644 --- a/packages/ui/cypress/tests/address-bar.cy.ts +++ b/packages/ui/cypress/tests/address-bar.cy.ts @@ -263,6 +263,9 @@ describe('Account address in the address bar', () => { topMenuItems.desktopMenu().within(() => topMenuItems.networkSelector().click()) topMenuItems.networkSelectorOption('kusama').click() + landingPage + .noMultisigFoundError() + .should('contain.text', 'No multisig found for your accounts or watched accounts on kusama.') cy.url().should('not.include', 'address=') }) diff --git a/packages/ui/cypress/tests/multisig-creation.cy.ts b/packages/ui/cypress/tests/multisig-creation.cy.ts index f842e6ae..9b065f28 100644 --- a/packages/ui/cypress/tests/multisig-creation.cy.ts +++ b/packages/ui/cypress/tests/multisig-creation.cy.ts @@ -7,6 +7,7 @@ import { notifications } from '../support/page-objects/notifications' import { topMenuItems } from '../support/page-objects/topMenuItems' import { landingPage } from '../support/page-objects/landingPage' import { waitForTxRequest } from '../utils/waitForTxRequests' +import { waitForMultisigLength } from '../utils/waitForMultisigLength' const fundedAccount1 = testAccounts['Funded Account 1 Chopsticks Kusama'] const fundedAccount2 = testAccounts['Funded Account 2 Chopsticks Kusama'] @@ -23,7 +24,7 @@ const typeAndAdd = (address: string) => { newMultisigPage.addButton().click() } -const acceptMultisigCreationAndVerifyNotifications = () => { +const acceptMultisigCreationAndVerifyNotifications = (firstMultisig = false) => { waitForTxRequest() cy.getTxRequests().then((req) => { const txRequests = Object.values(req) @@ -36,6 +37,8 @@ const acceptMultisigCreationAndVerifyNotifications = () => { notifications.loadingNotificationIcon().should('be.visible') notifications.notificationWrapper().should('contain', 'broadcast') + firstMultisig && landingPage.firstMultisigCreationLabel().should('be.visible') + notifications.successNotificationIcon(30000).should('be.visible') notifications.notificationWrapper().should('contain', 'Tx in block') }) @@ -102,9 +105,7 @@ describe('Multisig creation', () => { newMultisigPage.step3.infoBox().should('contain', '1 batch transaction') newMultisigPage.step3.errorNotEnoughFunds().should('not.exist') newMultisigPage.nextButton().should('contain', 'Create').click() - acceptMultisigCreationAndVerifyNotifications() - - landingPage.firstMultisigCreationLabel().should('be.visible') + acceptMultisigCreationAndVerifyNotifications(true) // Landing Page multisigPage.accountHeader(10000).within(() => { @@ -144,14 +145,12 @@ describe('Multisig creation', () => { // The banner should be there, and disapear within 30s landingPage.multisigCreationInfoBanner().should('be.visible') + landingPage.creationInfoBannerCloseButton().click() - cy.clock().then((clock) => { - // The banner should disapear after 30s, speed it up by 15s - clock.tick(15000) - // The banner should disappear - landingPage.multisigCreationInfoBanner(30000).should('not.exist') - clock.restore() - }) + // The banner should disappear + landingPage.multisigCreationInfoBanner().should('not.exist') + + waitForMultisigLength(2) topMenuItems .desktopMenu() diff --git a/packages/ui/cypress/utils/waitForMultisigLength.ts b/packages/ui/cypress/utils/waitForMultisigLength.ts new file mode 100644 index 00000000..acf961fe --- /dev/null +++ b/packages/ui/cypress/utils/waitForMultisigLength.ts @@ -0,0 +1,13 @@ +import { multisigPage } from '../support/page-objects/multisigPage' +import { topMenuItems } from '../support/page-objects/topMenuItems' + +export const waitForMultisigLength = (length: number) => + cy.waitUntil(() => { + multisigPage.accountHeader().click() + return topMenuItems + .multiproxySelectorDesktop() + .click() + .then(() => { + return topMenuItems.multiproxySelectorOptionDesktop().then((el) => el.length === length) + }) + }) diff --git a/packages/ui/src/components/AccountDisplay/AccountDisplay.tsx b/packages/ui/src/components/AccountDisplay/AccountDisplay.tsx index fcbeb51b..1ac829cd 100644 --- a/packages/ui/src/components/AccountDisplay/AccountDisplay.tsx +++ b/packages/ui/src/components/AccountDisplay/AccountDisplay.tsx @@ -1,5 +1,5 @@ import { Box, Tooltip } from '@mui/material' -import { useCallback, useMemo, useState } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { styled } from '@mui/material/styles' import { AccountBadge, IconSizeVariant } from '../../types' import { getDisplayAddress } from '../../utils' @@ -55,7 +55,16 @@ const AccountDisplay = ({ address }) - const handleTooltipClose = useCallback(() => setIsCopyTooltipOpen(false), []) + useEffect(() => { + let timeOut: NodeJS.Timeout + + if (isCopyTooltipOpen) { + timeOut = setTimeout(() => setIsCopyTooltipOpen(false), DEFAULT_AUTO_HIDE_DURATION) + } + + return () => timeOut && clearTimeout(timeOut) + }, [isCopyTooltipOpen]) + const handleCopyAddress = useCallback(() => { if (!canCopy) return @@ -132,11 +141,9 @@ const AccountDisplay = ({ onClick={handleCopyAddress} > {getDisplayAddress(encodedAddress)} diff --git a/packages/ui/src/components/DeepTxAlert.tsx b/packages/ui/src/components/DeepTxAlert.tsx index c0ba7bfe..57ea368c 100644 --- a/packages/ui/src/components/DeepTxAlert.tsx +++ b/packages/ui/src/components/DeepTxAlert.tsx @@ -214,7 +214,7 @@ export const DeepTxAlert = ({ pendingTxCallData }: Props) => { { Your new multisig is being created. It will be available in ~1min from the dropdown. { key={networkName} value={networkName} data-cy={`select-network-option-${networkName}`} - isOneLine={displayedNetworks.length === 1} + className={displayedNetworks.length === 1 ? 'oneLine' : undefined} > ` +const MenuItemStyled = styled(MenuItem)` text-transform: capitalize; padding: 0.75rem; max-width: 9.1875rem; box-sizing: content-box; - // Fix for correct display of the one line networks list in Safari - ${({ isOneLine }) => isOneLine && 'column-span: all'} + + &.oneLine { + column-span: all; + } ` const ImgStyled = styled('img')` diff --git a/squid/squid-manifests/large-squid.yaml b/squid/squid-manifests/large-squid.yaml index f3d789a7..cd0ed744 100644 --- a/squid/squid-manifests/large-squid.yaml +++ b/squid/squid-manifests/large-squid.yaml @@ -44,8 +44,8 @@ deploy: cmd: ['sqd', 'start-westend'] - name: paseo-processor cmd: ['sqd', 'start-paseo'] - - name: kilt-processor - cmd: ['sqd', 'start-kilt'] + # - name: kilt-processor + # cmd: ['sqd', 'start-kilt'] # - name: joystream-processor # cmd: ['sqd', 'start-joystream'] # - name: watr-processor @@ -56,7 +56,7 @@ deploy: # cmd: ['sqd', 'start-amplitude'] api: env: - SQD_DEBUG: sqd:graphql-server + # SQD_DEBUG: sqd:graphql-server cmd: [ 'npx',