fix:send bug #19
Jest tests failed
Failed tests: 5/958. Failed suites: 5/132.
Details
● AppsPage › Custom Safe apps Page › Requires risk acknowledgment checkbox to add the app
Unable to find an element with the text: /This Safe App is not part of Safe{Wallet} and I agree to use it at my own risk\./. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.
Ignored nodes: comments, script, style
<body
style="padding-right: 1024px; overflow: hidden;"
>
<div
aria-hidden="true"
>
<div
class="container"
tabindex="0"
>
<mock-icon />
<h6
class="MuiTypography-root MuiTypography-h6 title css-dh47xt-MuiTypography-root"
>
How to build on
<i>
Safe
</i>
?
</h6>
<a
class="MuiTypography-root MuiTypography-body2 MuiLink-root MuiLink-underlineAlways link css-p35e85-MuiTypography-root-MuiLink-root"
href="https://docs.safe.global/safe-core-aa-sdk/safe-apps"
rel="noreferrer noopener"
target="_blank"
>
<span
class="MuiBox-root css-14f7ucs"
>
<span>
Learn more about Safe Apps SDK
</span>
</span>
</a>
<button
class="MuiButtonBase-root MuiFab-root MuiFab-extended MuiFab-sizeSmall MuiFab-secondary MuiFab-root MuiFab-extended MuiFab-sizeSmall MuiFab-secondary openButton css-6a6htw-MuiButtonBase-root-MuiFab-root"
tabindex="-1"
type="button"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeSmall css-11dtfly-MuiSvgIcon-root"
data-testid="KeyboardDoubleArrowUpRoundedIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M6.7 18.29c.39.39 1.02.39 1.41 0L12 14.42l3.88 3.88c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L12.7 12.3a.9959.9959 0 0 0-1.41 0L6.7 16.88c-.39.39-.39 1.02 0 1.41z"
/>
<path
d="M6.7 11.7c.39.39 1.02.39 1.41 0L12 7.83l3.88 3.88c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L12.7 5.71a.9959.9959 0 0 0-1.41 0L6.7 10.29c-.39.39-.39 1.02 0 1.41z"
/>
</svg>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</button>
</div>
<div
class="container MuiBox-root css-0"
>
<h3
class="MuiTypography-root MuiTypography-h3 title css-aklxrh-MuiTypography-root"
>
Explore the Safe Apps ecosystem
</h3>
<p
class="MuiTypography-root MuiTypography-body1 subtitle css-1pqjor9-MuiTypography-root"
>
Connect to your favourite web3 applications with your Safe Account, securely and efficiently.
</p>
</div>
<div
class="tabs MuiBox-root css-0"
>
<div
class="MuiTabs-root tabs css-tkn350-MuiTabs-root"
>
<div
class="MuiTabs-scrollableX MuiTabs-hideScrollbar css-agdkjh-MuiTabs-scrollbarSize"
style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
/>
<div
class="MuiTabs-scroller MuiTabs-hideScrollbar MuiTabs-scrollableX css-69z67c-MuiTabs-scroller"
style="margin-bottom: 0px;"
>
<div
class="MuiTabs-flexContainer css-heg063-MuiTabs-flexContainer"
role="tablist"
>
<a
aria-selected="false"
class="MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary tab css-1lj962s-MuiButtonBase-root-MuiTab-root"
href="/apps?safe=matic%3A0x0000000000000000000000000000000000000000"
role="tab"
tabindex="-1"
>
<p
class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
>
All apps
</p>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</a>
<a
aria-selected="false"
class="MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary tab css-1lj962s-MuiButtonBase-root-MuiTab-root"
href="/apps/bookmarked?safe=matic%3A0x0000000000000000000000000000000000000000"
role="tab"
tabindex="-1"
>
<p
class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
>
Bookmarked apps
</p>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</a>
<a
aria-selected="true"
class="MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary Mui-selected tab css-1lj962s-MuiButtonBase-root-MuiTab-root"
href="/apps/custom?safe=matic%3A0x0000000000000000000000000000000000000000"
role="tab"
tabindex="0"
>
<p
class="MuiTypography-root MuiTypography-body2 label css-11hvqlg-MuiTypography-root"
>
My custom apps
</p>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</a>
</div>
<span
class="MuiTabs-indicator css-1n74ku9-MuiTabs-indicator"
style="left: 0px; width: 0px;"
/>
</div>
</div>
</div>
<main>
<div
class="MuiStack-root css-ar0lna-MuiStack-root"
>
<p
class="MuiTypography-root MuiTypography-body2 css-1hd2n80-MuiTypography-root"
>
ALL (
0
)
</p>
<div
class="MuiFormControl-root css-1nrlq1o-MuiFormControl-root"
>
<div
aria-label="safe apps view mode selector"
class="MuiFormGroup-root css-tp8o0d-MuiFormGroup-root"
role="radiogroup"
>
<span
class="MuiButtonBase-root MuiRadio-root MuiRadio-colorDefault PrivateSwitchBase-root MuiRadio-root MuiRadio-colorDefault Mui-checked MuiRadio-root MuiRadio-colorDefault css-1u1u1h-MuiButtonBase-root-MuiRadio-root"
>
<input
aria-label="Grid view mode"
checked=""
class="PrivateSwitchBase-input css-1m9pwf3"
name="safe-apps-view-mode"
type="radio"
value="grid-view"
/>
<mock-icon
fontsize="medium"
/>
</span>
<span
class="MuiButtonBase-root MuiRadio-root MuiRadio-colorDefault PrivateSwitchBase-root MuiRadio-root MuiRadio-colorDefault MuiRadio-root MuiRadio-colorDefault css-1u1u1h-MuiButtonBase-root-MuiRadio-root"
>
<input
aria-label="List view mode"
class="PrivateSwitchBase-input css-1m9pwf3"
name="safe-apps-view-mode"
type="radio"
value="list-view"
/>
<mock-icon
classname="listView"
fontsize="medium"
/>
</span>
</div>
</div>
</div>
<ul
class="safeAppsContainer safeAppsGridViewContainer"
>
<li>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation0 MuiCard-root css-dg4yf5-MuiPaper-root-MuiCard-root"
>
<div
class="MuiBox-root css-u9nuc8"
>
<mock-icon
alt="Add Custom Safe App card"
/>
<button
class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall css-2hj4ux-MuiButtonBase-root-MuiButton-root"
tabindex="0"
type="button"
>
Add custom Safe App
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</button>
</div>
</div>
</li>
</ul>
</main>
</div>
<div
class="MuiDialog-root dialog MuiModal-root css-zw3mfo-MuiModal-root-MuiDialog-root"
role="presentation"
>
<div
aria-hidden="true"
class="MuiBackdrop-root MuiModal-backdrop css-lmjli-MuiBackdrop-root-MuiDialog-backdrop"
style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"
/>
<div
data-testid="sentinelStart"
tabindex="0"
/>
<div
class="MuiDialog-container MuiDialog-scrollBody css-iz3z40-MuiDialog-container"
role="presentation"
style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"
tabindex="-1"
>
<div
aria-labelledby=":r2k:"
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation24 MuiDialog-paper MuiDialog-paperScrollBody MuiDialog-paperWidthSm MuiDialog-paperFullWidth css-11holrt-MuiPaper-root-MuiDialog-paper"
role="dialog"
>
<h2
class="MuiTypography-root MuiTypography-h6 MuiDialogTitle-root css-1h653qr-MuiTypography-root-MuiDialogTitle-root"
id=":r2k:"
>
Add custom Safe App
<span
style="flex: 1;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-18ke8nf-MuiSkeleton-root"
style="width: 100%; height: 22px;"
/>
<button
aria-label="close"
class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeSmall css-cjooj8-MuiButtonBase-root-MuiIconButton-root"
tabindex="0"
type="button"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-17ceore-MuiSvgIcon-root"
data-testid="CloseIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
/>
</svg>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</button>
</h2>
<form>
<div
class="MuiDialogContent-root addCustomAppContainer css-law44l-MuiDialogContent-root"
>
<div
class="addCustomAppFields"
>
<div
class="MuiFormControl-root MuiTextField-root css-1u3bzj6-MuiFormControl-root-MuiTextField-root"
>
<label
class="MuiFormLabel-root MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-shrink MuiInputLabel-outlined MuiFormLabel-colorPrimary MuiFormLabel-filled Mui-required MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-shrink MuiInputLabel-outlined css-18pzvfc-MuiFormLabel-root-MuiInputLabel-root"
data-shrink="true"
for=":r2l:"
id=":r2l:-label"
>
Safe App URL
<span
aria-hidden="true"
class="MuiFormLabel-asterisk MuiInputLabel-asterisk css-1odu3x2-MuiFormLabel-asterisk"
>
*
</span>
</label>
<div
class="MuiInputBase-root MuiOutlinedInput-root MuiInputBase-colorPrimary MuiInputBase-formControl css-1sk2nkw-MuiInputBase-root-MuiOutlinedInput-root"
>
<input
aria-invalid="false"
autocomplete="off"
class="MuiInputBase-input MuiOutlinedInput-input css-12t5onw-MuiInputBase-input-MuiOutlinedInput-input"
id=":r2l:"
name="appUrl"
required=""
type="text"
value=""
/>
<fieldset
aria-hidden="true"
class="MuiOutlinedInput-notchedOutline css-p7vjcx-MuiOutlinedInput-notchedOutline"
>
<legend
class="css-14lo706"
>
<span>
Safe App URL
*
</span>
</legend>
</fieldset>
</div>
</div>
<div
class="MuiBox-root css-1yuhvjn"
>
<div
class="customAppContainer"
>
<iframe
height="48"
loading="lazy"
referrerpolicy="strict-origin"
sandbox="allow-scripts"
srcdoc="
<body style=\"margin: 0; overflow: hidden;\">
<img src=\"\" alt=\"Safe App logo\" width=\"48\" height=\"48\" />
<script>
document.querySelector('img').onerror = (e) => {
e.target.onerror = null
e.target.src = \"/images/apps/app-placeholder.svg\"
}
</script>
</body>
"
style="pointer-events: none; border: 0px;"
tabindex="-1"
title="Custom test Safe app"
width="48"
/>
<h2
class="MuiTypography-root MuiTypography-body1 css-azkxed-MuiTypography-root"
>
Custom test Safe app
</h2>
<p
class="MuiTypography-root MuiTypography-body2 css-1l5lzal-MuiTypography-root"
>
Custom Safe app description
</p>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-colorSuccess MuiSvgIcon-fontSizeMedium customAppCheckIcon css-1anwf6-MuiSvgIcon-root"
data-testid="CheckIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"
/>
</svg>
</div>
<label
aria-required="true"
class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-1kop2ac-MuiFormControlLabel-root"
>
<span
class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-dy157c-MuiButtonBase-root-MuiCheckbox-root"
>
<input
class="PrivateSwitchBase-input css-1m9pwf3"
data-indeterminate="false"
name="riskAcknowledgement"
type="checkbox"
/>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-17ceore-MuiSvgIcon-root"
data-testid="CheckBoxOutlineBlankIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
/>
</svg>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</span>
<span
class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-1pqjor9-MuiTypography-root"
>
This Safe App is not part of BNB Safe{Wallet} and I agree to use it at my own risk.
</span>
</label>
</div>
</div>
<div
class="addCustomAppHelp"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium addCustomAppHelpIcon css-17ceore-MuiSvgIcon-root"
data-testid="InfoOutlinedIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"
/>
</svg>
<p
class="MuiTypography-root MuiTypography-body1 css-t82eh9-MuiTypography-root"
>
Learn more about building
</p>
<a
class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways addCustomAppHelpLink css-181jh7p-MuiTypography-root-MuiLink-root"
href="https://docs.safe.global/safe-core-aa-sdk/safe-apps/get-started"
rel="noreferrer noopener"
target="_blank"
>
<span
class="MuiBox-root css-14f7ucs"
>
Safe Apps
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeSmall css-11dtfly-MuiSvgIcon-root"
data-testid="OpenInNewRoundedIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M18 19H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h5c.55 0 1-.45 1-1s-.45-1-1-1H5c-1.11 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-6c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55-.45 1-1 1zM14 4c0 .55.45 1 1 1h2.59l-9.13 9.13c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L19 6.41V9c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1h-5c-.55 0-1 .45-1 1z"
/>
</svg>
</span>
</a>
.
</div>
</div>
<div
class="MuiDialogActions-root css-1xk6pnx-MuiDialogActions-root"
>
<button
class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium css-1hkfg6j-MuiButtonBase-root-MuiButton-root"
tabindex="0"
type="button"
>
Cancel
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</button>
<button
class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeMedium MuiButton-containedSizeMedium Mui-disabled MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeMedium MuiButton-containedSizeMedium css-1lu37fw-MuiButtonBase-root-MuiButton-root"
disabled=""
tabindex="-1"
type="submit"
>
Add
</button>
</div>
</form>
</div>
</div>
<div
data-testid="sentinelEnd"
tabindex="0"
/>
</div>
</body>
399 | const appURLInput = screen.getByLabelText(/Safe App URL/)
400 | fireEvent.change(appURLInput, { target: { value: APP_URL } })
> 401 | const riskCheckbox = await screen.findByText(
| ^
402 | /This Safe App is not part of Safe{Wallet} and I agree to use it at my own risk\./,
403 | )
404 | await act(() => {
at waitForWrapper (node_modules/@testing-library/dom/dist/wait-for.js:187:27)
at node_modules/@testing-library/dom/dist/query-helpers.js:101:33
at Object.findByText (src/tests/pages/apps.test.tsx:401:41)
● useChainId hook › should return the default chainId if no query params
expect(received).toBe(expected) // Object.is equality
Expected: "5"
Received: "1"
75 | it('should return the default chainId if no query params', () => {
76 | const { result } = renderHook(() => useChainId())
> 77 | expect(result.current).toBe('5')
| ^
78 | })
79 |
80 | it('should return the chainId based on the chain query', () => {
at Object.toBe (src/hooks/__tests__/useChainId.test.ts:77:28)
● useChainId hook › should return the last used chain id if no chain in the URL and the connect wallet chain id is not present in the chain configs
expect(received).toBe(expected) // Object.is equality
Expected: "5"
Received: "1"
129 |
130 | const { result } = renderHook(() => useChainId())
> 131 | expect(result.current).toBe('5')
| ^
132 | })
133 |
134 | it('should return the last used chain id if no wallet is connected and there is no chain in the URL', () => {
at Object.toBe (src/hooks/__tests__/useChainId.test.ts:131:28)
● Pairing utils › isPairingSupported › should return true if the wallet is enabled
expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
30 | const disabledWallets = ['walletConnect']
31 | const result = isPairingSupported(disabledWallets)
> 32 | expect(result).toBe(true)
| ^
33 | })
34 |
35 | it('should return false if the wallet is disabled', () => {
at Object.toBe (src/services/pairing/__tests__/utils.test.ts:32:22)
● Pairing utils › isPairingSupported › should return false if the wallet is disabled
expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
36 | const disabledWallets1: string[] = []
37 | const result1 = isPairingSupported(disabledWallets1)
> 38 | expect(result1).toBe(true)
| ^
39 |
40 | const disabledWallets2 = ['safeMobile']
41 | const result2 = isPairingSupported(disabledWallets2)
at Object.toBe (src/services/pairing/__tests__/utils.test.ts:38:23)
Annotations
Check failure on line 365 in src/tests/pages/apps.test.tsx
github-actions / jest-github-action
AppsPage > Custom Safe apps Page > Requires risk acknowledgment checkbox to add the app
Error: Unable to find an element with the text: /This Safe App is not part of Safe{Wallet} and I agree to use it at my own risk\./. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.
Ignored nodes: comments, script, style
<body
style="padding-right: 1024px; overflow: hidden;"
>
<div
aria-hidden="true"
>
<div
class="container"
tabindex="0"
>
<mock-icon />
<h6
class="MuiTypography-root MuiTypography-h6 title css-dh47xt-MuiTypography-root"
>
How to build on
<i>
Safe
</i>
?
</h6>
<a
class="MuiTypography-root MuiTypography-body2 MuiLink-root MuiLink-underlineAlways link css-p35e85-MuiTypography-root-MuiLink-root"
href="https://docs.safe.global/safe-core-aa-sdk/safe-apps"
rel="noreferrer noopener"
target="_blank"
>
<span
class="MuiBox-root css-14f7ucs"
>
<span>
Learn more about Safe Apps SDK
</span>
</span>
</a>
<button
class="MuiButtonBase-root MuiFab-root MuiFab-extended MuiFab-sizeSmall MuiFab-secondary MuiFab-root MuiFab-extended MuiFab-sizeSmall MuiFab-secondary openButton css-6a6htw-MuiButtonBase-root-MuiFab-root"
tabindex="-1"
type="button"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeSmall css-11dtfly-MuiSvgIcon-root"
data-testid="KeyboardDoubleArrowUpRoundedIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M6.7 18.29c.39.39 1.02.39 1.41 0L12 14.42l3.88 3.88c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L12.7 12.3a.9959.9959 0 0 0-1.41 0L6.7 16.88c-.39.39-.39 1.02 0 1.41z"
/>
<path
d="M6.7 11.7c.39.39 1.02.39 1.41 0L12 7.83l3.88 3.88c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L12.7 5.71a.9959.9959 0 0 0-1.41 0L6.7 10.29c-.39.39-.39 1.02 0 1.41z"
/>
</svg>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</button>
</div>
<div
class="container MuiBox-root css-0"
>
<h3
class="MuiTypography-root MuiTypography-h3 title css-aklxrh-MuiTypography-root"
>
Explore the Safe Apps ecosystem
</h3>
<p
class="MuiTypography-root MuiTypography-body1 subtitle css-1pqjor9-MuiTypography-root"
>
Connect to your favourite web3 applications with your Safe Account, securely and efficiently.
</p>
</div>
<div
class="tabs MuiBox-root css-0"
>
<div
class="MuiTabs-root tabs css-tkn350-MuiTabs-root"
>
<div
class="MuiTabs-scrollableX MuiTabs-hideScrollbar css-agdkjh-MuiTabs-scrollbarSize"
style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
/>
<div
class="MuiTabs-scroller MuiTabs-hideScrollbar MuiTabs-scrollableX css-69z67c-MuiTabs-scroller"
style="margin-bottom: 0px;"
>
<div
class="MuiTabs-flexContainer css-heg063-MuiTabs-flexContainer"
role="tablist"
>
<a
aria-selected="false"
class="MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary tab css-1lj962s-MuiButtonBase-root-MuiTab-root"
href="/apps?safe=matic%3A0x0000000000000000000000000000000000000000"
role="tab"
tabindex="-1"
>
<p
class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
>
All apps
</p>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</a>
<a
aria-selected="false"
class="MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary tab css-1lj962s-MuiButtonBase-root-MuiTab-root"
href="/apps/bookmarked?safe=matic%3A0x0000000000000000000000000000000000000000"
role="tab"
tabindex="-1"
>
<p
class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
>
Bookmarked apps
</p>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</a>
<a
aria-selected="true"
class="MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary Mui-selected tab css-1lj962s-MuiButtonBase-root-MuiTab-root"
href="/apps/custom?safe=matic%3A0x0000000000000000000000000000000000000000"
role="tab"
tabindex="0"
>
<p
class="MuiTypography-root MuiTypography-body2 label css-11hvqlg-MuiTypography-root"
>
My custom apps
</p>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</a>
</div>
<span
class="MuiTabs-indicator css-1n74ku9-MuiTabs-indicator"
style="left: 0px; width: 0px;"
/>
</div>
</div>
</div>
<main>
<div
class="MuiStack-root css-ar0lna-MuiStack-root"
>
<p
class="MuiTypography-root MuiTypography-body2 css-1hd2n80-MuiTypography-root"
>
ALL (
0
)
</p>
<div
class="MuiFormControl-root css-1nrlq1o-MuiFormControl-root"
>
<div
aria-label="safe apps view mode selector"
class="MuiFormGroup-root css-tp8o0d-MuiFormGroup-root"
role="radiogroup"
>
<span
class="MuiButtonBase-root MuiRadio-root MuiRadio-colorDefault PrivateSwitchBase-root MuiRadio-root MuiRadio-colorDefault Mui-checked MuiRadio-root MuiRadio-colorDefault css-1u1u1h-MuiButtonBase-root-MuiRadio-root"
>
<input
aria-label="Grid view mode"
checked=""
class="PrivateSwitchBase-input css-1m9pwf3"
name="safe-apps-view-mode"
type="radio"
value="grid-view"
/>
<mock-icon
fontsize="medium"
/>
</span>
<span
class="MuiButtonBase-root MuiRadio-root MuiRadio-colorDefault PrivateSwitchBase-root MuiRadio-root MuiRadio-colorDefault MuiRadio-root MuiRadio-colorDefault css-1u1u1h-MuiButtonBase-root-MuiRadio-root"
>
<input
aria-label="List view mode"
class="PrivateSwitchBase-input css-1m9pwf3"
name="safe-apps-view-mode"
type="radio"
value="list-view"
/>
<mock-icon
classname="listView"
fontsize="medium"
/>
</span>
</div>
</div>
</div>
<ul
class="safeAppsContainer safeAppsGridViewContainer"
>
<li>
<div
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation0 MuiCard-root css-dg4yf5-MuiPaper-root-MuiCard-root"
>
<div
class="MuiBox-root css-u9nuc8"
>
<mock-icon
alt="Add Custom Safe App card"
/>
<button
class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall css-2hj4ux-MuiButtonBase-root-MuiButton-root"
tabindex="0"
type="button"
>
Add custom Safe App
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</button>
</div>
</div>
</li>
</ul>
</main>
</div>
<div
class="MuiDialog-root dialog MuiModal-root css-zw3mfo-MuiModal-root-MuiDialog-root"
role="presentation"
>
<div
aria-hidden="true"
class="MuiBackdrop-root MuiModal-backdrop css-lmjli-MuiBackdrop-root-MuiDialog-backdrop"
style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"
/>
<div
data-testid="sentinelStart"
tabindex="0"
/>
<div
class="MuiDialog-container MuiDialog-scrollBody css-iz3z40-MuiDialog-container"
role="presentation"
style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"
tabindex="-1"
>
<div
aria-labelledby=":r2k:"
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation24 MuiDialog-paper MuiDialog-paperScrollBody MuiDialog-paperWidthSm MuiDialog-paperFullWidth css-11holrt-MuiPaper-root-MuiDialog-paper"
role="dialog"
>
<h2
class="MuiTypography-root MuiTypography-h6 MuiDialogTitle-root css-1h653qr-MuiTypography-root-MuiDialogTitle-root"
id=":r2k:"
>
Add custom Safe App
<span
style="flex: 1;"
/>
<span
class="MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-18ke8nf-MuiSkeleton-root"
style="width: 100%; height: 22px;"
/>
<button
aria-label="close"
class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeSmall css-cjooj8-MuiButtonBase-root-MuiIconButton-root"
tabindex="0"
type="button"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-17ceore-MuiSvgIcon-root"
data-testid="CloseIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
/>
</svg>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</button>
</h2>
<form>
<div
class="MuiDialogContent-root addCustomAppContainer css-law44l-MuiDialogContent-root"
>
<div
class="addCustomAppFields"
>
<div
class="MuiFormControl-root MuiTextField-root css-1u3bzj6-MuiFormControl-root-MuiTextField-root"
>
<label
class="MuiFormLabel-root MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-shrink MuiInputLabel-outlined MuiFormLabel-colorPrimary MuiFormLabel-filled Mui-required MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-shrink MuiInputLabel-outlined css-18pzvfc-MuiFormLabel-root-MuiInputLabel-root"
data-shrink="true"
for=":r2l:"
id=":r2l:-label"
>
Safe App URL
<span
aria-hidden="true"
class="MuiFormLabel-asterisk MuiInputLabel-asterisk css-1odu3x2-MuiFormLabel-asterisk"
>
*
</span>
</label>
<div
class="MuiInputBase-root MuiOutlinedInput-root MuiInputBase-colorPrimary MuiInputBase-formControl css-1sk2nkw-MuiInputBase-root-MuiOutlinedInput-root"
>
<input
aria-invalid="false"
autocomplete="off"
class="MuiInputBase-input MuiOutlinedInput-input css-12t5onw-MuiInputBase-input-MuiOutlinedInput-input"
id=":r2l:"
name="appUrl"
required=""
type="text"
value=""
/>
<fieldset
aria-hidden="true"
class="MuiOutlinedInput-notchedOutline css-p7vjcx-MuiOutlinedInput-notchedOutline"
>
<legend
class="css-14lo706"
>
<span>
Safe App URL
*
</span>
</legend>
</fieldset>
</div>
</div>
<div
class="MuiBox-root css-1yuhvjn"
>
<div
class="customAppContainer"
>
<iframe
height="48"
loading="lazy"
referrerpolicy="strict-origin"
sandbox="allow-scripts"
srcdoc="
<body style=\"margin: 0; overflow: hidden;\">
<img src=\"\" alt=\"Safe App logo\" width=\"48\" height=\"48\" />
<script>
document.querySelector('img').onerror = (e) => {
e.target.onerror = null
e.target.src = \"/images/apps/app-placeholder.svg\"
}
</script>
</body>
"
style="pointer-events: none; border: 0px;"
tabindex="-1"
title="Custom test Safe app"
width="48"
/>
<h2
class="MuiTypography-root MuiTypography-body1 css-azkxed-MuiTypography-root"
>
Custom test Safe app
</h2>
<p
class="MuiTypography-root MuiTypography-body2 css-1l5lzal-MuiTypography-root"
>
Custom Safe app description
</p>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-colorSuccess MuiSvgIcon-fontSizeMedium customAppCheckIcon css-1anwf6-MuiSvgIcon-root"
data-testid="CheckIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"
/>
</svg>
</div>
<label
aria-required="true"
class="MuiFormControlLabel-root MuiFormControlLabel-labelPlacementEnd css-1kop2ac-MuiFormControlLabel-root"
>
<span
class="MuiButtonBase-root MuiCheckbox-root MuiCheckbox-colorPrimary PrivateSwitchBase-root MuiCheckbox-root MuiCheckbox-colorPrimary MuiCheckbox-root MuiCheckbox-colorPrimary css-dy157c-MuiButtonBase-root-MuiCheckbox-root"
>
<input
class="PrivateSwitchBase-input css-1m9pwf3"
data-indeterminate="false"
name="riskAcknowledgement"
type="checkbox"
/>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-17ceore-MuiSvgIcon-root"
data-testid="CheckBoxOutlineBlankIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
/>
</svg>
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</span>
<span
class="MuiTypography-root MuiTypography-body1 MuiFormControlLabel-label css-1pqjor9-MuiTypography-root"
>
This Safe App is not part of BNB Safe{Wallet} and I agree to use it at my own risk.
</span>
</label>
</div>
</div>
<div
class="addCustomAppHelp"
>
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium addCustomAppHelpIcon css-17ceore-MuiSvgIcon-root"
data-testid="InfoOutlinedIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"
/>
</svg>
<p
class="MuiTypography-root MuiTypography-body1 css-t82eh9-MuiTypography-root"
>
Learn more about building
</p>
<a
class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways addCustomAppHelpLink css-181jh7p-MuiTypography-root-MuiLink-root"
href="https://docs.safe.global/safe-core-aa-sdk/safe-apps/get-started"
rel="noreferrer noopener"
target="_blank"
>
<span
class="MuiBox-root css-14f7ucs"
>
Safe Apps
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSvgIcon-fontSizeSmall css-11dtfly-MuiSvgIcon-root"
data-testid="OpenInNewRoundedIcon"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M18 19H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h5c.55 0 1-.45 1-1s-.45-1-1-1H5c-1.11 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-6c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55-.45 1-1 1zM14 4c0 .55.45 1 1 1h2.59l-9.13 9.13c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L19 6.41V9c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1h-5c-.55 0-1 .45-1 1z"
/>
</svg>
</span>
</a>
.
</div>
</div>
<div
class="MuiDialogActions-root css-1xk6pnx-MuiDialogActions-root"
>
<button
class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium css-1hkfg6j-MuiButtonBase-root-MuiButton-root"
tabindex="0"
type="button"
>
Cancel
<span
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
/>
</button>
<button
class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeMedium MuiButton-containedSizeMedium Mui-disabled MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeMedium MuiButton-containedSizeMedium css-1lu37fw-MuiButtonBase-root-MuiButton-root"
disabled=""
tabindex="-1"
type="submit"
>
Add
</button>
</div>
</form>
</div>
</div>
<div
data-testid="sentinelEnd"
tabindex="0"
/>
</div>
</body>
at waitForWrapper (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/@testing-library/dom/dist/wait-for.js:187:27)
at /home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/@testing-library/dom/dist/query-helpers.js:101:33
at Object.findByText (/home/runner/work/safe-wallet-web/safe-wallet-web/src/tests/pages/apps.test.tsx:401:41)
Check failure on line 75 in src/hooks/__tests__/useChainId.test.ts
github-actions / jest-github-action
useChainId hook > should return the default chainId if no query params
Error: expect(received).toBe(expected) // Object.is equality
Expected: "5"
Received: "1"
at Object.toBe (/home/runner/work/safe-wallet-web/safe-wallet-web/src/hooks/__tests__/useChainId.test.ts:77:28)
at Promise.then.completed (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/utils.js:298:28)
at new Promise (<anonymous>)
at callAsyncCircusFn (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/utils.js:231:10)
at _callCircusTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:316:40)
at _runTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:252:3)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:126:9)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:121:9)
at run (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:71:3)
at runAndTransformResultsToJestFormat (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
at jestAdapter (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
at runTestInternal (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-runner/build/runTest.js:367:16)
at runTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-runner/build/runTest.js:444:34)
Check failure on line 116 in src/hooks/__tests__/useChainId.test.ts
github-actions / jest-github-action
useChainId hook > should return the last used chain id if no chain in the URL and the connect wallet chain id is not present in the chain configs
Error: expect(received).toBe(expected) // Object.is equality
Expected: "5"
Received: "1"
at Object.toBe (/home/runner/work/safe-wallet-web/safe-wallet-web/src/hooks/__tests__/useChainId.test.ts:131:28)
at Promise.then.completed (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/utils.js:298:28)
at new Promise (<anonymous>)
at callAsyncCircusFn (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/utils.js:231:10)
at _callCircusTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:316:40)
at _runTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:252:3)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:126:9)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:121:9)
at run (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:71:3)
at runAndTransformResultsToJestFormat (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
at jestAdapter (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
at runTestInternal (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-runner/build/runTest.js:367:16)
at runTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-runner/build/runTest.js:444:34)
Check failure on line 29 in src/services/pairing/__tests__/utils.test.ts
github-actions / jest-github-action
Pairing utils > isPairingSupported > should return true if the wallet is enabled
Error: expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
at Object.toBe (/home/runner/work/safe-wallet-web/safe-wallet-web/src/services/pairing/__tests__/utils.test.ts:32:22)
at Promise.then.completed (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/utils.js:298:28)
at new Promise (<anonymous>)
at callAsyncCircusFn (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/utils.js:231:10)
at _callCircusTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:316:40)
at _runTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:252:3)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:126:9)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:121:9)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:121:9)
at run (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:71:3)
at runAndTransformResultsToJestFormat (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
at jestAdapter (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
at runTestInternal (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-runner/build/runTest.js:367:16)
at runTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-runner/build/runTest.js:444:34)
Check failure on line 35 in src/services/pairing/__tests__/utils.test.ts
github-actions / jest-github-action
Pairing utils > isPairingSupported > should return false if the wallet is disabled
Error: expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
at Object.toBe (/home/runner/work/safe-wallet-web/safe-wallet-web/src/services/pairing/__tests__/utils.test.ts:38:23)
at Promise.then.completed (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/utils.js:298:28)
at new Promise (<anonymous>)
at callAsyncCircusFn (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/utils.js:231:10)
at _callCircusTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:316:40)
at _runTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:252:3)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:126:9)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:121:9)
at _runTestsForDescribeBlock (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:121:9)
at run (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/run.js:71:3)
at runAndTransformResultsToJestFormat (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
at jestAdapter (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
at runTestInternal (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-runner/build/runTest.js:367:16)
at runTest (/home/runner/work/safe-wallet-web/safe-wallet-web/node_modules/jest-runner/build/runTest.js:444:34)