Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Astar stg #1

Merged
merged 158 commits into from
Sep 5, 2024
Merged

Astar stg #1

merged 158 commits into from
Sep 5, 2024

Conversation

DenSmolonski
Copy link

What it solves

Resolves #

How this PR fixes it

How to test it

Screenshots

Checklist

  • I've tested the branch on mobile 📱
  • I've documented how it affects the analytics (if at all) 📊
  • I've written a unit/e2e test for it (if applicable) 🧑‍💻

mike10ca and others added 30 commits May 14, 2024 15:39
When playing around with the Safe web interface I noticed that the
Docker image that it produces is **over 6GB in size**!

This PR slims down the docker image significantly by using a multistage
build where the first stage builds the static website, and the actual
image just hosts the static webside (here using BusyBox `httpd` which is
nice and lightweight).

This gets the image down to around 72MB, around 1% of the original image
size _(sizes computed from Docker images built on amd64 Linux)_.

Note that there is one weird detail is that static HTTP servers
typically don't have support for automatically adding `.html` endings to
URL paths. It was worked around here with symlinks. See comment in the
Dockerfile for more details.

```
$ docker images
REPOSITORY                            TAG          IMAGE ID      CREATED            SIZE
localhost/safe-web                    small        2bb37df44d9f  14 minutes ago     71.9 MB
localhost/safe-web                    big          ae2940e99e19  3 hours ago        6.52 GB
```
* tests: update message tests

* tests: disable eslint for localstorage file

* tests: update test titles
This reverts PR safe-global#3707 as the CI build appears to be failing. I will
investigate and try to make a follow up PR that fixes the issue.
* tests: fix open safe app test
…l#3710)

* fix: Hide signed transaction from untrusted pending queue

* fix: Revert label adjustment, extract logic from hook and write tests

* refactor: Filter items first
…posal (safe-global#3712)

* fix: show loading state in WC widget between pairing and receiving a proposal

* fix: clear loading state on failed paring

* empty commit for deployment

* disable loading state for approval form

* fix typo

* add 30 second timeout for proposal

* Only show timeout error when waiting on proposal
* Fix: update social login disclaimer

* Prettier
* Fix: memoize Safe List data

* Adjust types
* tests: add component tests for tx history filter

* tests: update tests
Bumps [next](https://github.com/vercel/next.js) from 14.1.0 to 14.1.1.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](vercel/next.js@v14.1.0...v14.1.1)

---
updated-dependencies:
- dependency-name: next
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
DenSmolonski and others added 25 commits July 4, 2024 18:42
* Fix: Add title for limit order cancellations

* Make title more general
The CoW widget was not properly updating AppData in some situations.
This widget release includes the fix for this:
cowprotocol/cowswap#4670
)

* fix: show calculated fee in the correct token
* fix: tooltip formatting
Sometimes there are bugs in the production version of CoW. Having the
option to switch to staging would allow us to test fixes for those bugs.
* fix: last update of t&cs, reword the legal disclaimer title

---------

Co-authored-by: Daniel Dimitrov <[email protected]>
# Conflicts:
#	src/features/swap/components/SwapOrderConfirmationView/index.tsx
* Fix: prompt -> confirm

* Update unit test
Copy link

github-actions bot commented Sep 5, 2024

Branch preview

❌ Deploy failed!

@DenSmolonski DenSmolonski merged commit 08737d1 into astar Sep 5, 2024
2 of 11 checks passed
Copy link

github-actions bot commented Sep 5, 2024

ESLint Summary View Full Report

Annotations are provided inline on the Files Changed tab. You can also see all annotations that were generated on the annotations page.

Type Occurrences Fixable
Errors 0 0
Warnings 0 0
Ignored 0 N/A
  • Result: ✅ success
  • Annotations: 0 total

Report generated by eslint-plus-action

Copy link

github-actions bot commented Sep 5, 2024

📦 Next.js Bundle Analysis for safe-wallet-web

This analysis was generated by the Next.js Bundle Analysis action. 🤖

⚠️ Global Bundle Size Increased

Page Size (compressed)
global 1.01 MB (🟡 +87.57 KB)
Details

The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.

Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis

If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!

Thirty-six Pages Changed Size

The following pages changed size from the code in this PR compared to its base branch:

Page Size (compressed) First Load
/_offline 1.09 KB (🟢 -2 B) 1.01 MB
/addOwner 533 B (🟢 -2 B) 1.01 MB
/address-book 26.09 KB (🟢 -15 B) 1.03 MB
/apps 50.18 KB (-5 B) 1.06 MB
/apps/bookmarked 443 B (🟢 -3 B) 1.01 MB
/apps/custom 41.8 KB (-1 B) 1.05 MB
/apps/open 53.29 KB (🟢 -48 B) 1.06 MB
/balances 29.47 KB (🟢 -1.17 KB) 1.04 MB
/balances/nfts 19.16 KB (🟢 -3 B) 1.03 MB
/cookie 8.76 KB (🟢 -3 B) 1.02 MB
/home 65.52 KB (🟡 +5.23 KB) 1.07 MB
/imprint 1.37 KB (🟢 -3 B) 1.01 MB
/licenses 4.97 KB (🟡 +1 B) 1.01 MB
/new-safe/create 40.4 KB (🟡 +6.05 KB) 1.05 MB
/new-safe/load 16.23 KB (🟢 -162 B) 1.02 MB
/privacy 15.9 KB (🟡 +4 B) 1.02 MB
/settings 449 B (🟢 -1 B) 1.01 MB
/settings/appearance 8.02 KB (🟢 -3 B) 1.02 MB
/settings/data 7.54 KB (🟢 -1 B) 1.02 MB
/settings/environment-variables 9.13 KB (🟢 -2 B) 1.02 MB
/settings/modules 9.72 KB (🟢 -43 B) 1.02 MB
/settings/notifications 27.33 KB (🟢 -292 B) 1.04 MB
/settings/safe-apps 25.55 KB (🟢 -5 B) 1.03 MB
/settings/security 8.06 KB (🟢 -3 B) 1.02 MB
/settings/setup 35.95 KB (🟢 -7 B) 1.04 MB
/swap 606 B (🟡 +1 B) 1.01 MB
/terms 11.59 KB (🟡 +356 B) 1.02 MB
/transactions 73.42 KB (🟢 -172 B) 1.08 MB
/transactions/history 73.39 KB (🟢 -172 B) 1.08 MB
/transactions/messages 39.01 KB (🟡 +58 B) 1.05 MB
/transactions/msg 29.42 KB (🟡 +61 B) 1.04 MB
/transactions/queue 31.01 KB (🟢 -48 B) 1.04 MB
/transactions/tx 20.78 KB (🟢 -112 B) 1.03 MB
/wc 689 B (🟡 +2 B) 1.01 MB
/welcome 44.16 KB (🔴 +37.39 KB) 1.05 MB
/welcome/accounts 379 B (🟢 -1 B) 1.01 MB
Details

Only the gzipped size is provided here based on an expert tip.

First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.

Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis

Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.

Copy link

github-actions bot commented Sep 5, 2024

Coverage report

Caution

Test run failed

St.
Category Percentage Covered / Total
🟡 Statements 79.01% 11613/14698
🔴 Branches 58.5% 2843/4860
🟡 Functions 65.97% 1855/2812
🟢 Lines 80.4% 10471/13024

Test suite run failed

Failed tests: 3/1433. Failed suites: 2/198.
  ● useChainId hook › should return the default chainId if no query params

    expect(received).toBe(expected) // Object.is equality

    Expected: "11155111"
    Received: "592"

      57 |   it('should return the default chainId if no query params', () => {
      58 |     const { result } = renderHook(() => useChainId())
    > 59 |     expect(result.current).toBe('11155111')
         |                            ^
      60 |   })
      61 |
      62 |   it('should return the chainId based on the chain query', () => {

      at Object.toBe (src/hooks/__tests__/useChainId.test.ts:59:28)


  ● SettingsHeader › A safe is open › displays Notifications if feature is enabled

    TestingLibraryElementError: Unable to find an element with the text: Notifications. 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>
      <div>
        <div
          class="container border MuiBox-root css-0"
        >
          <h3
            class="MuiTypography-root MuiTypography-h3 title css-aklxrh-MuiTypography-root"
          >
            Settings
          </h3>
          <div
            class="navWrapper"
          >
            <div
              class="MuiTabs-root tabs css-tkn350-MuiTabs-root"
            >
              <div
                class="MuiTabs-scrollableX MuiTabs-hideScrollbar css-oqr85h"
                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="true"
                    class="MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary Mui-selected tab css-1lj962s-MuiButtonBase-root-MuiTab-root"
                    href="/settings/setup"
                    role="tab"
                    tabindex="0"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-11hvqlg-MuiTypography-root"
                    >
                      Setup
                    </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="/settings/appearance"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Appearance
                    </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="/settings/security"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Security
                    </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="/settings/modules"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Modules
                    </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="/settings/safe-apps"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Safe 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="/settings/data"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Data
                    </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="/settings/environment-variables"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Environment variables
                    </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>
        </div>
      </div>
    </body>

      36 |       )
      37 |
    > 38 |       expect(result.getByText('Notifications')).toBeInTheDocument()
         |                     ^
      39 |     })
      40 |   })
      41 |

      at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19)
      at node_modules/@testing-library/dom/dist/query-helpers.js:76:38
      at node_modules/@testing-library/dom/dist/query-helpers.js:52:17
      at node_modules/@testing-library/dom/dist/query-helpers.js:95:19
      at Object.getByText (src/components/settings/SettingsHeader/index.test.tsx:38:21)

  ● SettingsHeader › No safe is open › displays Notifications if feature is enabled

    TestingLibraryElementError: Unable to find an element with the text: Notifications. 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>
      <div>
        <div
          class="container border MuiBox-root css-0"
        >
          <h3
            class="MuiTypography-root MuiTypography-h3 title css-aklxrh-MuiTypography-root"
          >
            Preferences
          </h3>
          <div
            class="navWrapper"
          >
            <div
              class="MuiTabs-root tabs css-tkn350-MuiTabs-root"
            >
              <div
                class="MuiTabs-scrollableX MuiTabs-hideScrollbar css-oqr85h"
                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="true"
                    class="MuiButtonBase-root MuiTab-root MuiTab-textColorPrimary Mui-selected tab css-1lj962s-MuiButtonBase-root-MuiTab-root"
                    href="/settings/cookies"
                    role="tab"
                    tabindex="0"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-11hvqlg-MuiTypography-root"
                    >
                      Cookies
                    </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="/settings/appearance"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Appearance
                    </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="/settings/security"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Security
                    </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="/settings/data"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Data
                    </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="/settings/environment-variables"
                    role="tab"
                    tabindex="-1"
                  >
                    <p
                      class="MuiTypography-root MuiTypography-body2 label css-fvh28f-MuiTypography-root"
                    >
                      Environment variables
                    </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>
        </div>
      </div>
    </body>

      66 |       )
      67 |
    > 68 |       expect(result.getByText('Notifications')).toBeInTheDocument()
         |                     ^
      69 |     })
      70 |   })
      71 | })

      at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19)
      at node_modules/@testing-library/dom/dist/query-helpers.js:76:38
      at node_modules/@testing-library/dom/dist/query-helpers.js:52:17
      at node_modules/@testing-library/dom/dist/query-helpers.js:95:19
      at Object.getByText (src/components/settings/SettingsHeader/index.test.tsx:68:21)

Report generated by 🧪jest coverage report action from 44ea803

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.