diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 956e9e6282..0000000000
--- a/.eslintrc
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "extends": ["next", "next/core-web-vitals"],
- "parser": "@typescript-eslint/parser",
- "plugins": ["@typescript-eslint", "simple-import-sort", "unused-imports"],
- "rules": {
- "react/display-name": "off",
- "react-hooks/exhaustive-deps": [
- "warn"
- ],
- "@typescript-eslint/no-unused-vars": "off",
- "simple-import-sort/exports": "error",
- "simple-import-sort/imports": "error",
- "unused-imports/no-unused-imports": "error",
- "unused-imports/no-unused-vars": "off"
- }
-}
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
deleted file mode 100644
index 628382a77b..0000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-name: Bug Report
-description: File a bug/issue
-title: '[bug]
'
-body:
- - type: markdown
- attributes:
- value: |
- 🍣 Thanks for taking the time to fill out this bug report! The more info you provide, the more we can help you.
- - type: checkboxes
- attributes:
- label: Is there an existing issue for this?
- description: Please search to see if an issue already exists for the bug you encountered.
- options:
- - label: I have searched the existing issues
- required: true
-
- - type: input
- attributes:
- label: 🖥 Browser Version
- description: What Browser and version are you using?
- placeholder: Chrome 99
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: 🚧 Current Behavior
- description: A concise description of what you're experiencing.
- validations:
- required: false
-
- - type: textarea
- attributes:
- label: ✅ Expected Behavior
- description: A concise description of what you expected to happen.
- validations:
- required: false
-
- - type: textarea
- attributes:
- label: 🛠 Steps To Reproduce
- description: Steps or code snippets to reproduce the behavior.
- validations:
- required: false
-
- - type: input
- attributes:
- label: 🌐 Link to Minimal Reproducible Example or URL
- description: |
- This makes investigating issues and helping you out significantly easier! For most issues, you will likely get asked to provide one so why not add one now :)
- placeholder: https://app.sushi.com/swap?inputCurrency=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2&outputCurrency=0x6B3595068778DD592e39A122f4f5a5cF09C90fE2
- validations:
- required: false
-
- - type: textarea
- attributes:
- label: Anything else?
- description: |
- Browser info? Screenshots? Anything that will give us more context about the issue you are encountering!
-
- 💡 Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
- validations:
- required: false
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index c98490842d..0000000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-version: 2
-updates:
- - package-ecosystem: 'npm'
- directory: '/'
- schedule:
- interval: 'daily'
- commit-message:
- # Prefix all commit messages with "npm"
- prefix: 'token list'
- include: 'scope'
- labels:
- - 'tokenlist'
- # Add default Kodiak `merge.automerge_label`
- #- 'automerge'
- allow:
- - dependency-name: '@sushiswap/bentobox-sdk'
- - dependency-name: '@sushiswap/chainlink-whitelist'
- - dependency-name: '@sushiswap/core'
- - dependency-name: '@sushiswap/core-sdk'
- - dependency-name: '@sushiswap/default-token-list'
- - dependency-name: '@sushiswap/kashi-sdk'
- - dependency-name: '@sushiswap/limit-order-pair-list'
- - dependency-name: '@sushiswap/limit-order-sdk'
- - dependency-name: '@sushiswap/tines'
- - dependency-name: '@sushiswap/trident'
- - dependency-name: '@sushiswap/trident-sdk'
diff --git a/.github/workflows/check-pr-title.yaml b/.github/workflows/check-pr-title.yaml
deleted file mode 100644
index b741f571ec..0000000000
--- a/.github/workflows/check-pr-title.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: "Check PR Title"
-
-on:
- pull_request_target:
- types:
- - opened
- - edited
- - synchronize
-
-jobs:
- check-pr-title:
- name: Check PR Title
- runs-on: ubuntu-latest
- steps:
- - uses: amannn/action-semantic-pull-request@v3.4.0
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml
deleted file mode 100644
index 11b0fa96e4..0000000000
--- a/.github/workflows/e2e.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-name: E2E Tests
-
-on:
- workflow_dispatch:
-
- schedule:
- - cron: "30 1 * * *"
-
-jobs:
- build:
- name: Build
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Use Node.js 14
- uses: actions/setup-node@v2
- env:
- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 'true'
- with:
- node-version: '14'
-
- - name: Get yarn cache directory path
- id: yarn-cache-dir-path
- run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
-
- - uses: actions/cache@v2
- id: yarn-cache
- with:
- path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- - name: Installing dependencies
- run: yarn install --frozen-lockfile
-
- - name: Run E2E tests
- uses: mujo-code/puppeteer-headful@v2
- env:
- CI: 'true'
- TEST_PASS: ${{ secrets.TEST_PASS }}
- TEST_SEED: ${{ secrets.TEST_SEED }}
- TEST_SEED2: ${{ secrets.TEST_SEED2 }}
- TEST_PKEY: ${{ secrets.TEST_PKEY }}
- TEST_ACCOUNT2_PUB_KEY: ${{ secrets.TEST_ACCOUNT2_PUB_KEY }}
- with:
- args: yarn e2e
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
deleted file mode 100644
index 3b327bb861..0000000000
--- a/.github/workflows/lint.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-name: Lint
-
-on:
- push:
- branches:
- - master
- pull_request:
- branches:
- - master
- # Allows you to run this workflow manually from the Actions tab
- workflow_dispatch:
-
-jobs:
- lint:
- name: Node ${{ matrix.node-version }} on ${{ matrix.os }}
- runs-on: ${{ matrix.os }}
-
- strategy:
- fail-fast: false
- matrix:
- node-version: ['16.x']
- os: ['ubuntu-latest']
-
- steps:
- - uses: actions/checkout@v3
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
- with:
- node-version: ${{ matrix.node-version }}
-
- - name: Get yarn cache directory path
- id: yarn-cache-dir-path
- run: echo "::set-output name=dir::$(yarn cache dir)"
-
- - uses: actions/cache@v3
- id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
- with:
- path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- - name: Install project dependencies
- run: yarn --prefer-offline
- id: install
-
- - name: Run linters w/ autofix
- if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.owner.login == github.repository_owner }}
- uses: wearerequired/lint-action@v2
- id: lint
- with:
- auto_fix: true
- continue_on_error: true
- commit_message: "style: code style issues with ${linter}"
- github_token: ${{ secrets.GITHUB_TOKEN }}
- eslint_extensions: "js,jsx,ts,tsx"
- eslint: true
- prettier_extensions: "js,jsx,ts,tsx"
-
- - name: Run eslint
- if: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.owner.login != github.repository_owner }}
- run: yarn eslint .
\ No newline at end of file
diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml
deleted file mode 100644
index fbb84433e9..0000000000
--- a/.github/workflows/nodejs.yml
+++ /dev/null
@@ -1,145 +0,0 @@
-name: nodejs
-
-on:
- pull_request:
- push:
- branches:
- - master
- workflow_dispatch: {}
-
-defaults:
- run:
- # change this if your nextjs app does not live at the root of the repo
- working-directory: ./
-env:
- COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
- PULL_NUMBER: ${{ github.event.pull_request.number }}
- RUN_ID: ${{ github.run_id }}
- FORCE_COLOR: 2
- NEXT_TELEMETRY_DISABLED: 1
-
-jobs:
- pipeline:
- name: Node ${{ matrix.node-version }} on ${{ matrix.os }}
- runs-on: ${{ matrix.os }}
-
- strategy:
- fail-fast: false
- matrix:
- node-version: ['16.x']
- os: ['ubuntu-latest']
-
- steps:
- - uses: actions/checkout@v3
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v3
- with:
- node-version: ${{ matrix.node-version }}
-
- - name: Get yarn cache directory path
- id: yarn-cache-dir-path
- run: echo "::set-output name=dir::$(yarn cache dir)"
-
- - uses: actions/cache@v3
- id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
- with:
- path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- - name: Restore next build
- uses: actions/cache@v3
- id: restore-build-cache
- env:
- cache-name: cache-next-build
- with:
- # if you use a custom build directory, replace all instances of `.next` in this file with your build directory
- # ex: if your app builds to `dist`, replace `.next` with `dist`
- path: .next/cache
- # change this if you prefer a more strict cache
- key: ${{ runner.os }}-build-${{ env.cache-name }}
-
- - name: Install project dependencies
- env:
- NODE_OPTIONS: "--max-old-space-size=4096"
- run: yarn --prefer-offline
- id: install
-
- - name: Build next.js app
- env:
- NODE_OPTIONS: "--max-old-space-size=4096"
- run: yarn run build
- id: production
-
- # Here's the first place where next-bundle-analysis' own script is used
- # This step pulls the raw bundle stats for the current bundle
- - name: Analyze bundle
- run: npx -p nextjs-bundle-analysis report
- env:
- NODE_OPTIONS: "--max-old-space-size=4096"
-
- - name: Upload bundle
- uses: actions/upload-artifact@v2
- with:
- name: bundle
- path: .next/analyze/__bundle_analysis.json
-
- - name: Download base branch bundle stats
- uses: dawidd6/action-download-artifact@v2
- if: success() && github.event.number
- with:
- workflow: nodejs.yml
- branch: ${{ github.event.pull_request.base.ref }}
- path: .next/analyze/base
-
- # And here's the second place - this runs after we have both the current and
- # base branch bundle stats, and will compare them to determine what changed.
- # There are two configurable arguments that come from package.json:
- #
- # - budget: optional, set a budget (bytes) against which size changes are measured
- # it's set to 350kb here by default, as informed by the following piece:
- # https://infrequently.org/2021/03/the-performance-inequality-gap/
- #
- # - red-status-percentage: sets the percent size increase where you get a red
- # status indicator, defaults to 20%
- #
- # Either of these arguments can be changed or removed by editing the `nextBundleAnalysis`
- # entry in your package.json file.
- - name: Compare with base branch bundle
- if: success() && github.event.number
- run: ls -laR .next/analyze/base && npx -p nextjs-bundle-analysis compare
- env:
- NODE_OPTIONS: "--max-old-space-size=4096"
-
- - name: Get comment body
- id: get-comment-body
- if: success() && github.event.number
- run: |
- body=$(cat .next/analyze/__bundle_analysis_comment.txt)
- body="${body//'%'/'%25'}"
- body="${body//$'\n'/'%0A'}"
- body="${body//$'\r'/'%0D'}"
- echo ::set-output name=body::$body
- - name: Find Comment
- uses: peter-evans/find-comment@v1
- if: success() && github.event.number
- id: fc
- with:
- issue-number: ${{ github.event.number }}
- body-includes: ''
-
- - name: Create Comment
- uses: peter-evans/create-or-update-comment@v1.4.4
- if: success() && github.event.number && steps.fc.outputs.comment-id == 0
- with:
- issue-number: ${{ github.event.number }}
- body: ${{ steps.get-comment-body.outputs.body }}
-
- - name: Update Comment
- uses: peter-evans/create-or-update-comment@v1.4.4
- if: success() && github.event.number && steps.fc.outputs.comment-id != 0
- with:
- issue-number: ${{ github.event.number }}
- body: ${{ steps.get-comment-body.outputs.body }}
- comment-id: ${{ steps.fc.outputs.comment-id }}
- edit-mode: replace
diff --git a/.husky/.gitignore b/.husky/.gitignore
deleted file mode 100644
index 31354ec138..0000000000
--- a/.husky/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-_
diff --git a/.husky/commit-msg b/.husky/commit-msg
deleted file mode 100755
index 8c4333a34f..0000000000
--- a/.husky/commit-msg
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-. "$(dirname "$0")/_/husky.sh"
-. "$(dirname "$0")/common.sh"
-
-yarn commitlint --edit $1
\ No newline at end of file
diff --git a/.husky/common.sh b/.husky/common.sh
deleted file mode 100755
index 0f4ced8207..0000000000
--- a/.husky/common.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-command_exists () {
- command -v "$1" >/dev/null 2>&1
-}
-
-# Workaround for Windows 10, Git Bash and Yarn
-if command_exists winpty && test -t 1; then
- exec < /dev/tty
-fi
\ No newline at end of file
diff --git a/.husky/pre-commit b/.husky/pre-commit
deleted file mode 100755
index 9aa4c15c49..0000000000
--- a/.husky/pre-commit
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-. "$(dirname "$0")/_/husky.sh"
-. "$(dirname "$0")/common.sh"
-
-yarn lint
-yarn lint-staged
-yarn lingui
-# yarn test
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
deleted file mode 100644
index b7be864712..0000000000
--- a/.vscode/extensions.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "recommendations": [
- "dbaeumer.vscode-eslint",
- "esbenp.prettier-vscode",
- "heybourn.headwind",
- "bradlc.vscode-tailwindcss"
- ]
-}
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index 57131d66a4..0000000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Next.js: debug server-side",
- "type": "node-terminal",
- "request": "launch",
- "command": "npm run dev"
- },
- {
- "name": "Next.js: debug client-side",
- "type": "pwa-chrome",
- "request": "launch",
- "url": "http://localhost:3000"
- },
- {
- "name": "Next.js: debug full stack",
- "type": "node-terminal",
- "request": "launch",
- "command": "npm run dev",
- "console": "integratedTerminal",
- "serverReadyAction": {
- "pattern": "started server on .+, url: (https?://.+)",
- "uriFormat": "%s",
- "action": "debugWithChrome"
- }
- },
- {
- "name": "Jest: Debug Tests",
- "type": "node",
- "request": "launch",
- "runtimeArgs": [
- "--inspect-brk",
- "${workspaceRoot}/node_modules/jest/bin/jest.js",
- "--runInBand"
- ],
- "args": ["--testPathPattern", "${fileBasename}"],
- "console": "integratedTerminal",
- "internalConsoleOptions": "neverOpen",
- "port": 9229,
- "skipFiles": [
- "/**/*.js",
- "${workspaceRoot}/node_modules/**/*.js"
- ],
- }
- ]
-}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7be8a36d4a..f8fee6969b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,27 +1,5 @@
{
- "eslint.enable": true,
- "eslint.validate": [
- "javascript",
- "javascriptreact",
- "typescript",
- "typescriptreact"
- ],
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnPaste": false,
- "editor.formatOnSave": false,
- "[javascript]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnSave": true
- },
- "[typescript]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnSave": true,
- },
- "[typescriptreact]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnSave": true
- },
- "yaml.schemas": {
- "https://www.artillery.io/schema.json": []
- }
-}
+ "yaml.schemas": {
+ "https://www.artillery.io/schema.json": []
+ }
+}
\ No newline at end of file
diff --git a/docs/CONTRIBUTION_GUIDELINES.md b/docs/CONTRIBUTION_GUIDELINES.md
deleted file mode 100644
index 4b08dfd063..0000000000
--- a/docs/CONTRIBUTION_GUIDELINES.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Contribution guidelines
-
-## Pages
-
-Pages should be heavy, at least initially, try not to extract anything prematurely.
-
-## Components
-
-Components should be generic and reusable.
-
-## Features
-
-Features should be unique and specific.
\ No newline at end of file
diff --git a/docs/DATA_FETCHING.md b/docs/DATA_FETCHING.md
deleted file mode 100644
index 310a18bca4..0000000000
--- a/docs/DATA_FETCHING.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Data Fetching
-
-https://swr.vercel.app/
\ No newline at end of file
diff --git a/docs/DATA_SOURCES.md b/docs/DATA_SOURCES.md
deleted file mode 100644
index 9dfbb59e41..0000000000
--- a/docs/DATA_SOURCES.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Data sources
-
-- Graph
-- Covalent
-- Web3
-- Next big thing...
-
-## Adding new data sources
-
-1. Add folder to fetchers with the name of the data source and define fetchers.
-2. Add folder to services with the name of the data source and define hooks.
\ No newline at end of file
diff --git a/docs/DESIGN.md b/docs/DESIGN.md
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md
deleted file mode 100644
index 23b8496d60..0000000000
--- a/docs/DEVELOPMENT.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Development
-
-...
diff --git a/docs/INTRODUCTION.md b/docs/INTRODUCTION.md
deleted file mode 100644
index f6ecaa676c..0000000000
--- a/docs/INTRODUCTION.md
+++ /dev/null
@@ -1 +0,0 @@
-# Introduction
\ No newline at end of file
diff --git a/docs/ORACLES.md b/docs/ORACLES.md
deleted file mode 100644
index 1f55059cd4..0000000000
--- a/docs/ORACLES.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# Oracles
-
-Currently there is two types of oracles which the sushi interface supports, Chainlink & SushiSwap TWAP.
-
-## Chainlink
-
-- Requires a mapping entry added (src/constants/chainlink/mapping.ts).
-- Requires one exchange rate update to start.
-
-## Adding Chainlink Oracles
-
-Chainlink price feeds...
-
-https://docs.chain.link/docs/ethereum-addresses/
-
-https://docs.chain.link/docs/binance-smart-chain-addresses/
-
-https://docs.chain.link/docs/matic-addresses/
-
-https://docs.chain.link/docs/xdai-price-feeds/
-
-https://docs.chain.link/docs/huobi-eco-chain-price-feeds/
-
-https://docs.chain.link/docs/avalanche-price-feeds/
-
-Each price feed has a pair token0/token1, SUSHI/ETH or SUSHI/USD for example, decimals, and proxy. We use this information to construct mappings of the price feed to their respectful pair tokens.
-
-Chainlink tokens can be found in src/constants/chainlink/mappings, they are separated by network.
-
-Any token which is not currently in the Chainlink tokens needs to be added, with the exception of USD, and non-crypto, these should not be added to the Chainlink tokens.
-
-If a newly added token is not in the @sushiswap/default-token-list, it should be added.
-
-Chainlink mappings can be found in src/constants/chainlink/mappings, they are separated by network.
-
-Any price feed which is not currently in the Chainlink mappings need to be added.
-
-Each mapping is keyed by the price feed proxy address, and contains and object with these properties
-
-- from (token0 address)
-- to (token1 address)
-- decimals (price feed decimals)
-- fromDecimals (token0 decimals)
-- toDecimals (token1 decimals)
-
-Tip: USD address is 0x0000000000000000000000000000000000000001 and decimals 8
-
-
diff --git a/docs/PROJECT_STRUCTURE.md b/docs/PROJECT_STRUCTURE.md
deleted file mode 100644
index ca2b01726f..0000000000
--- a/docs/PROJECT_STRUCTURE.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Project structure
-
-
diff --git a/jest.config.ts b/jest.config.ts
deleted file mode 100644
index 1640be28ec..0000000000
--- a/jest.config.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import type { Config } from '@jest/types'
-
-const config: Config.InitialOptions = {
- verbose: true,
- collectCoverageFrom: ['**/*.{ts,tsx}', '!**/*.d.ts', '!**/node_modules/**'],
- coveragePathIgnorePatterns: ['/node_modules/', '/.next/'],
- moduleNameMapper: {
- '^app/(.*)$': '/src/$1',
- '^functions/(.*)$': '/src/functions/$1',
- '^config/(.*)$': '/src/config/$1',
- '^features/(.*)$': '/src/features/$1',
- '^enums/(.*)$': '/src/enums/$1',
- '^enums': '/src/enums',
- /* Handle CSS imports (with CSS modules)
- https://jestjs.io/docs/webpack#mocking-css-modules */
- '^.+\\.module\\.(css|sass|scss)$': 'identity-obj-proxy',
-
- // Handle CSS imports (without CSS modules)
- '^.+\\.(css|sass|scss)$': '/__mocks__/styleMock.js',
-
- /* Handle image imports
- https://jestjs.io/docs/webpack#handling-static-assets */
- '^.+\\.(jpg|jpeg|png|gif|webp|svg)$': '/__mocks__/fileMock.js',
- },
- testPathIgnorePatterns: ['/node_modules/', '/.next/', '/src/pages/api/test.ts'],
- testEnvironment: '/test/unit/custom-test-env.ts',
- transform: {
- /* Use babel-jest to transpile tests with the next/babel preset
- https://jestjs.io/docs/configuration#transform-objectstring-pathtotransformer--pathtotransformer-object */
- '^.+\\.(js|jsx|ts|tsx)$': ['babel-jest', { presets: ['next/babel'] }],
- },
- transformIgnorePatterns: ['/node_modules/', '^.+\\.module\\.(css|sass|scss)$'],
- testTimeout: 600000,
-}
-
-export default config
diff --git a/next.config.js b/next.config.js
index 85a8269fd3..43c3459373 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,26 +1,12 @@
-const withPWA = require('next-pwa')
-const runtimeCaching = require('next-pwa/cache')
const linguiConfig = require('./lingui.config.js')
const defaultTheme = require('tailwindcss/defaultTheme')
-
-const { ChainId } = require('@sushiswap/core-sdk')
-
const { locales, sourceLocale } = linguiConfig
const { screens } = defaultTheme
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
})
-
-// This file sets a custom webpack configuration to use your Next.js app
-// with Sentry.
-// https://nextjs.org/docs/api-reference/next.config.js/introduction
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-const { withSentryConfig } = require('@sentry/nextjs')
-
// @ts-check
-
/**
* @type {import('next').NextConfig}
**/
@@ -43,6 +29,12 @@ const nextConfig = {
productionBrowserSourceMaps: false,
swcMinify: false,
reactStrictMode: true,
+ typescript: {
+ ignoreBuildErrors: true,
+ },
+ eslint: {
+ ignoreDuringBuilds: true,
+ },
// pwa: {
// dest: 'public',
// runtimeCaching,
@@ -166,27 +158,7 @@ const nextConfig = {
// serverRuntimeConfig: {},
publicRuntimeConfig: {
breakpoints: screens,
-
- [ChainId.ETHEREUM]: {
- features: [],
- },
},
}
-const SentryWebpackPluginOptions = {
- // Additional config options for the Sentry Webpack plugin. Keep in mind that
- // the following options are set automatically, and overriding them is not
- // recommended:
- // release, url, org, project, authToken, configFile, stripPrefix,
- // urlPrefix, include, ignore
- // silent: true, // Suppresses all logs
- // For all available options, see:
- // https://github.com/getsentry/sentry-webpack-plugin#options.
-}
-
-// Make sure adding Sentry options is the last code to run before exporting, to
-// ensure that your source maps include changes from all other Webpack plugins
-module.exports = withBundleAnalyzer(nextConfig)
-
-// Don't delete this console log, useful to see the config in Vercel deployments
-// console.log('next.config.js', JSON.stringify(module.exports, null, 2))
+module.exports = withBundleAnalyzer(nextConfig)
\ No newline at end of file
diff --git a/package.json b/package.json
index 098999d0b8..7d086eca5d 100644
--- a/package.json
+++ b/package.json
@@ -4,14 +4,14 @@
"private": true,
"scripts": {
"analyze": "ANALYZE=true yarn build && serve .next -n",
- "build": "yarn lingui && next build",
+ "build": "pnpm run lingui && next build",
"circular": "madge --circular src --extensions ts,tsx,js,jsx",
"dev": "cross-env NODE_OPTIONS='--inspect' next dev",
"e2e": "concurrently -k -s first -n \"app,e2e\" \"yarn dev\" \"yarn e2e:safe\"",
- "e2e:run": "yarn jest --testPathPattern=test/e2e --runInBand",
+ "e2e:run": "pnpm run jest --testPathPattern=test/e2e --runInBand",
"e2e:safe": "wait-on -l http://localhost:3000 && yarn e2e:run",
"inspect": "NODE_OPTIONS='--inspect' next dev",
- "postinstall": "yarn lingui",
+ "postinstall": "pnpm run lingui",
"lingui": "lingui extract --clean --overwrite && lingui compile",
"lint": "npx next lint --fix",
"ngrok": "ngrok http 3000",
@@ -116,7 +116,8 @@
"@types/ms.macro": "^2.0.0",
"@types/node": "^16.11.0",
"@types/qs": "^6.9.7",
- "@types/react": "^17.0.2",
+ "@types/react": "17.0.2",
+ "@types/react-dom": "17.0.2",
"@types/react-slider": "^1.3.1",
"@types/react-table": "^7.7.9",
"@types/ua-parser-js": "^0.7.36",
@@ -127,8 +128,10 @@
"@uniswap/token-lists": "1.0.0-beta.27",
"@visx/axis": "^2.1.0",
"@visx/brush": "^2.1.0",
+ "@visx/event": "^2.1.0",
"@visx/gradient": "^2.1.0",
"@visx/grid": "^2.1.0",
+ "@visx/group": "^2.1.0",
"@visx/legend": "^2.1.0",
"@visx/marker": "^2.1.0",
"@visx/pattern": "^2.1.0",
@@ -179,7 +182,7 @@
"madge": "^5.0.1",
"millify": "^4.0.0",
"ms.macro": "^2.0.0",
- "next": "^12.3.1",
+ "next": "12.3.1",
"next-pwa": "5.4.7",
"next-seo": "^5.1.0",
"next-unused": "^0.0.6",
@@ -193,9 +196,9 @@
"prettier": "^2.4.0",
"puppeteer": "^11.0.0",
"qs": "^6.10.1",
- "react": "^17.0.2",
+ "react": "17.0.2",
"react-device-detect": "^2.1.2",
- "react-dom": "^17.0.2",
+ "react-dom": "17.0.2",
"react-dropzone": "^12.0.4",
"react-feather": "^2.0.9",
"react-hook-form": "7.29.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fa4929632e..88fe97f9d7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -136,7 +136,7 @@ devDependencies:
version: 1.9.7(react-redux@7.2.9)(react@17.0.2)
'@sentry/nextjs':
specifier: ^7.0.0
- version: 7.109.0(encoding@0.1.13)(next@12.3.4)(react@17.0.2)(webpack@5.91.0)
+ version: 7.109.0(encoding@0.1.13)(next@12.3.1)(react@17.0.2)(webpack@5.91.0)
'@sentry/react':
specifier: ^7.0.0
version: 7.109.0(react@17.0.2)
@@ -207,8 +207,11 @@ devDependencies:
specifier: ^6.9.7
version: 6.9.14
'@types/react':
- specifier: ^17.0.2
- version: 17.0.80
+ specifier: 17.0.2
+ version: 17.0.2
+ '@types/react-dom':
+ specifier: 17.0.2
+ version: 17.0.2
'@types/react-slider':
specifier: ^1.3.1
version: 1.3.6
@@ -239,12 +242,18 @@ devDependencies:
'@visx/brush':
specifier: ^2.1.0
version: 2.18.0(react@17.0.2)
+ '@visx/event':
+ specifier: ^2.1.0
+ version: 2.17.0
'@visx/gradient':
specifier: ^2.1.0
version: 2.17.0(react@17.0.2)
'@visx/grid':
specifier: ^2.1.0
version: 2.18.0(react@17.0.2)
+ '@visx/group':
+ specifier: ^2.1.0
+ version: 2.17.0(react@17.0.2)
'@visx/legend':
specifier: ^2.1.0
version: 2.18.0(react@17.0.2)
@@ -271,19 +280,19 @@ devDependencies:
version: 1.0.3
'@web3-react/core':
specifier: ^8.0.23-beta.0
- version: 8.2.3(@types/react@17.0.80)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10)
+ version: 8.2.3(@types/react@17.0.2)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10)
'@web3-react/eip1193':
specifier: ^8.0.18-beta.0
- version: 8.2.3(@types/react@17.0.80)(react@17.0.2)
+ version: 8.2.3(@types/react@17.0.2)(react@17.0.2)
'@web3-react/empty':
specifier: ^8.0.12-beta.0
- version: 8.2.3(@types/react@17.0.80)(react@17.0.2)
+ version: 8.2.3(@types/react@17.0.2)(react@17.0.2)
'@web3-react/types':
specifier: ^8.0.12-beta.0
- version: 8.2.3(@types/react@17.0.80)(react@17.0.2)
+ version: 8.2.3(@types/react@17.0.2)(react@17.0.2)
'@web3-react/url':
specifier: ^8.0.17-beta.0
- version: 8.2.3(@types/react@17.0.80)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10)
+ version: 8.2.3(@types/react@17.0.2)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10)
'@welldone-software/why-did-you-render':
specifier: ^6.2.3
version: 6.2.3(react@17.0.2)
@@ -325,7 +334,7 @@ devDependencies:
version: 7.32.0
eslint-config-next:
specifier: ^11.1.0
- version: 11.1.4(eslint@7.32.0)(next@12.3.4)(typescript@4.9.5)
+ version: 11.1.4(eslint@7.32.0)(next@12.3.1)(typescript@4.9.5)
eslint-plugin-simple-import-sort:
specifier: ^7.0.0
version: 7.0.0(eslint@7.32.0)
@@ -396,14 +405,14 @@ devDependencies:
specifier: ^2.0.0
version: 2.0.0
next:
- specifier: ^12.3.1
- version: 12.3.4(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
+ specifier: 12.3.1
+ version: 12.3.1(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
next-pwa:
specifier: 5.4.7
- version: 5.4.7(@babel/core@7.24.4)(next@12.3.4)(webpack@5.91.0)
+ version: 5.4.7(@babel/core@7.24.4)(next@12.3.1)(webpack@5.91.0)
next-seo:
specifier: ^5.1.0
- version: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2)
+ version: 5.15.0(next@12.3.1)(react-dom@17.0.2)(react@17.0.2)
next-unused:
specifier: ^0.0.6
version: 0.0.6
@@ -438,13 +447,13 @@ devDependencies:
specifier: ^6.10.1
version: 6.12.0
react:
- specifier: ^17.0.2
+ specifier: 17.0.2
version: 17.0.2
react-device-detect:
specifier: ^2.1.2
version: 2.2.3(react-dom@17.0.2)(react@17.0.2)
react-dom:
- specifier: ^17.0.2
+ specifier: 17.0.2
version: 17.0.2(react@17.0.2)
react-dropzone:
specifier: ^12.0.4
@@ -2718,7 +2727,7 @@ packages:
'@gnosis.pm/safe-apps-provider': 0.9.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
'@gnosis.pm/safe-apps-sdk': 6.2.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
'@web3-react/abstract-connector': 6.0.7
- '@web3-react/core': 8.2.3(@types/react@17.0.80)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10)
+ '@web3-react/core': 8.2.3(@types/react@17.0.2)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10)
react: 17.0.2
transitivePeerDependencies:
- bufferutil
@@ -3392,8 +3401,8 @@ packages:
- utf-8-validate
dev: true
- /@next/env@12.3.4:
- resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==}
+ /@next/env@12.3.1:
+ resolution: {integrity: sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==}
dev: true
/@next/eslint-plugin-next@11.1.4:
@@ -3402,8 +3411,8 @@ packages:
glob: 7.1.7
dev: true
- /@next/swc-android-arm-eabi@12.3.4:
- resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==}
+ /@next/swc-android-arm-eabi@12.3.1:
+ resolution: {integrity: sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==}
engines: {node: '>= 10'}
cpu: [arm]
os: [android]
@@ -3411,8 +3420,8 @@ packages:
dev: true
optional: true
- /@next/swc-android-arm64@12.3.4:
- resolution: {integrity: sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg==}
+ /@next/swc-android-arm64@12.3.1:
+ resolution: {integrity: sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
@@ -3420,8 +3429,8 @@ packages:
dev: true
optional: true
- /@next/swc-darwin-arm64@12.3.4:
- resolution: {integrity: sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA==}
+ /@next/swc-darwin-arm64@12.3.1:
+ resolution: {integrity: sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
@@ -3429,8 +3438,8 @@ packages:
dev: true
optional: true
- /@next/swc-darwin-x64@12.3.4:
- resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==}
+ /@next/swc-darwin-x64@12.3.1:
+ resolution: {integrity: sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
@@ -3438,8 +3447,8 @@ packages:
dev: true
optional: true
- /@next/swc-freebsd-x64@12.3.4:
- resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==}
+ /@next/swc-freebsd-x64@12.3.1:
+ resolution: {integrity: sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
@@ -3447,8 +3456,8 @@ packages:
dev: true
optional: true
- /@next/swc-linux-arm-gnueabihf@12.3.4:
- resolution: {integrity: sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw==}
+ /@next/swc-linux-arm-gnueabihf@12.3.1:
+ resolution: {integrity: sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
@@ -3456,8 +3465,8 @@ packages:
dev: true
optional: true
- /@next/swc-linux-arm64-gnu@12.3.4:
- resolution: {integrity: sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA==}
+ /@next/swc-linux-arm64-gnu@12.3.1:
+ resolution: {integrity: sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
@@ -3465,8 +3474,8 @@ packages:
dev: true
optional: true
- /@next/swc-linux-arm64-musl@12.3.4:
- resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==}
+ /@next/swc-linux-arm64-musl@12.3.1:
+ resolution: {integrity: sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
@@ -3474,8 +3483,8 @@ packages:
dev: true
optional: true
- /@next/swc-linux-x64-gnu@12.3.4:
- resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==}
+ /@next/swc-linux-x64-gnu@12.3.1:
+ resolution: {integrity: sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
@@ -3483,8 +3492,8 @@ packages:
dev: true
optional: true
- /@next/swc-linux-x64-musl@12.3.4:
- resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==}
+ /@next/swc-linux-x64-musl@12.3.1:
+ resolution: {integrity: sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
@@ -3492,8 +3501,8 @@ packages:
dev: true
optional: true
- /@next/swc-win32-arm64-msvc@12.3.4:
- resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==}
+ /@next/swc-win32-arm64-msvc@12.3.1:
+ resolution: {integrity: sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
@@ -3501,8 +3510,8 @@ packages:
dev: true
optional: true
- /@next/swc-win32-ia32-msvc@12.3.4:
- resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==}
+ /@next/swc-win32-ia32-msvc@12.3.1:
+ resolution: {integrity: sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
@@ -3510,8 +3519,8 @@ packages:
dev: true
optional: true
- /@next/swc-win32-x64-msvc@12.3.4:
- resolution: {integrity: sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==}
+ /@next/swc-win32-x64-msvc@12.3.1:
+ resolution: {integrity: sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -3808,7 +3817,7 @@ packages:
localforage: 1.10.0
dev: true
- /@sentry/nextjs@7.109.0(encoding@0.1.13)(next@12.3.4)(react@17.0.2)(webpack@5.91.0):
+ /@sentry/nextjs@7.109.0(encoding@0.1.13)(next@12.3.1)(react@17.0.2)(webpack@5.91.0):
resolution: {integrity: sha512-AT0jhMDj7N57z8+XfgEyTJBogpU64z4mQpfOsSF5uuequzo3IlVVoJcu88jdqUkaVFxBJp3aF2T4nz65OHLoeA==}
engines: {node: '>=8'}
peerDependencies:
@@ -3829,7 +3838,7 @@ packages:
'@sentry/vercel-edge': 7.109.0
'@sentry/webpack-plugin': 1.21.0(encoding@0.1.13)
chalk: 3.0.0
- next: 12.3.4(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
+ next: 12.3.1(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
react: 17.0.2
resolve: 1.22.8
rollup: 2.78.0
@@ -4150,7 +4159,7 @@ packages:
dependencies:
'@babel/runtime': 7.24.4
'@testing-library/dom': 8.20.1
- '@types/react-dom': 17.0.25
+ '@types/react-dom': 17.0.2
react: 17.0.2
react-dom: 17.0.2(react@17.0.2)
dev: true
@@ -4326,7 +4335,7 @@ packages:
/@types/hoist-non-react-statics@3.3.5:
resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==}
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
hoist-non-react-statics: 3.3.2
dev: true
@@ -4450,20 +4459,20 @@ packages:
/@types/react-blockies@1.4.4:
resolution: {integrity: sha512-7QfFeT1y/izwP/Wxmnl9Ii73udFQIBsfI/IvG+841sPxqc7Pf79ZDZP3XQsmYzAjDXdoZXquLgI/Q/tmAZwB0w==}
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
dev: true
- /@types/react-dom@17.0.25:
- resolution: {integrity: sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==}
+ /@types/react-dom@17.0.2:
+ resolution: {integrity: sha512-Icd9KEgdnFfJs39KyRyr0jQ7EKhq8U6CcHRMGAS45fp5qgUvxL3ujUCfWFttUK2UErqZNj97t9gsVPNAqcwoCg==}
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
dev: true
/@types/react-redux@7.1.33:
resolution: {integrity: sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==}
dependencies:
'@types/hoist-non-react-statics': 3.3.5
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
hoist-non-react-statics: 3.3.2
redux: 4.2.1
dev: true
@@ -4471,20 +4480,19 @@ packages:
/@types/react-slider@1.3.6:
resolution: {integrity: sha512-RS8XN5O159YQ6tu3tGZIQz1/9StMLTg/FCIPxwqh2gwVixJnlfIodtVx+fpXVMZHe7A58lAX1Q4XTgAGOQaCQg==}
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
dev: true
/@types/react-table@7.7.20:
resolution: {integrity: sha512-ahMp4pmjVlnExxNwxyaDrFgmKxSbPwU23sGQw2gJK4EhCvnvmib2s/O/+y1dfV57dXOwpr2plfyBol+vEHbi2w==}
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
dev: true
- /@types/react@17.0.80:
- resolution: {integrity: sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==}
+ /@types/react@17.0.2:
+ resolution: {integrity: sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==}
dependencies:
'@types/prop-types': 15.7.12
- '@types/scheduler': 0.16.8
csstype: 3.1.3
dev: true
@@ -4500,10 +4508,6 @@ packages:
'@types/node': 16.18.96
dev: true
- /@types/scheduler@0.16.8:
- resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
- dev: true
-
/@types/secp256k1@4.0.6:
resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==}
dependencies:
@@ -4808,7 +4812,7 @@ packages:
peerDependencies:
react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
'@visx/group': 2.17.0(react@17.0.2)
'@visx/point': 2.17.0
'@visx/scale': 2.18.0
@@ -4846,7 +4850,7 @@ packages:
peerDependencies:
react: ^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
'@visx/event': 2.17.0
'@visx/point': 2.17.0
prop-types: 15.8.1
@@ -4856,7 +4860,7 @@ packages:
/@visx/event@2.17.0:
resolution: {integrity: sha512-fg2UWo89RgKgWWnnqI+i7EF8Ry+3CdMHTND4lo4DyJvcZZUCOwhxCHMQ4/PHW0EAUfxI51nGadcE1BcEVR5zWw==}
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
'@visx/point': 2.17.0
dev: true
@@ -4865,7 +4869,7 @@ packages:
peerDependencies:
react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
prop-types: 15.8.1
react: 17.0.2
dev: true
@@ -4875,7 +4879,7 @@ packages:
peerDependencies:
react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
'@visx/curve': 2.17.0
'@visx/group': 2.17.0(react@17.0.2)
'@visx/point': 2.17.0
@@ -4891,7 +4895,7 @@ packages:
peerDependencies:
react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
classnames: 2.5.1
prop-types: 15.8.1
react: 17.0.2
@@ -4902,7 +4906,7 @@ packages:
peerDependencies:
react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
'@visx/group': 2.17.0(react@17.0.2)
'@visx/scale': 2.18.0
classnames: 2.5.1
@@ -4915,7 +4919,7 @@ packages:
peerDependencies:
react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
'@visx/group': 2.17.0(react@17.0.2)
'@visx/shape': 2.18.0(react@17.0.2)
classnames: 2.5.1
@@ -4928,7 +4932,7 @@ packages:
peerDependencies:
react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
classnames: 2.5.1
prop-types: 15.8.1
react: 17.0.2
@@ -4957,7 +4961,7 @@ packages:
'@types/d3-path': 1.0.11
'@types/d3-shape': 1.3.12
'@types/lodash': 4.17.0
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
'@visx/curve': 2.17.0
'@visx/group': 2.17.0(react@17.0.2)
'@visx/scale': 2.18.0
@@ -4975,7 +4979,7 @@ packages:
react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0
dependencies:
'@types/lodash': 4.17.0
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
classnames: 2.5.1
lodash: 4.17.21
prop-types: 15.8.1
@@ -5209,15 +5213,15 @@ packages:
tiny-warning: 1.0.3
dev: true
- /@web3-react/core@8.2.3(@types/react@17.0.80)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10):
+ /@web3-react/core@8.2.3(@types/react@17.0.2)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10):
resolution: {integrity: sha512-0ezmRKhqQpoa9ct2/3erg60zBXfC/f/liYR1mfSGKtIroRkLnPARigZSV6pI+fi8bhfGJ0RKtFWyTCCWZzdq1w==}
peerDependencies:
react: '>=16.8'
dependencies:
- '@web3-react/store': 8.2.3(@types/react@17.0.80)(react@17.0.2)
- '@web3-react/types': 8.2.3(@types/react@17.0.80)(react@17.0.2)
+ '@web3-react/store': 8.2.3(@types/react@17.0.2)(react@17.0.2)
+ '@web3-react/types': 8.2.3(@types/react@17.0.2)(react@17.0.2)
react: 17.0.2
- zustand: 4.4.0(@types/react@17.0.80)(react@17.0.2)
+ zustand: 4.4.0(@types/react@17.0.2)(react@17.0.2)
optionalDependencies:
'@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
transitivePeerDependencies:
@@ -5227,10 +5231,10 @@ packages:
- utf-8-validate
dev: true
- /@web3-react/eip1193@8.2.3(@types/react@17.0.80)(react@17.0.2):
+ /@web3-react/eip1193@8.2.3(@types/react@17.0.2)(react@17.0.2):
resolution: {integrity: sha512-PdL8PCv3zgQrnowRlBK7PIO8G7v/nc31PYgarACo8mX+l5Y4+l7+ma/kpkULXp5yLtc4qlQYlCalmXpcbtl2FA==}
dependencies:
- '@web3-react/types': 8.2.3(@types/react@17.0.80)(react@17.0.2)
+ '@web3-react/types': 8.2.3(@types/react@17.0.2)(react@17.0.2)
eventemitter3: 4.0.7
transitivePeerDependencies:
- '@types/react'
@@ -5238,10 +5242,10 @@ packages:
- react
dev: true
- /@web3-react/empty@8.2.3(@types/react@17.0.80)(react@17.0.2):
+ /@web3-react/empty@8.2.3(@types/react@17.0.2)(react@17.0.2):
resolution: {integrity: sha512-Uopeac2XgyJLmK8EawNmG1kferlSvklKgWzbianygriC3C3+6yHvflUBmHzYfcpZDq5gotP4JJr2bmhGAocQ5w==}
dependencies:
- '@web3-react/types': 8.2.3(@types/react@17.0.80)(react@17.0.2)
+ '@web3-react/types': 8.2.3(@types/react@17.0.2)(react@17.0.2)
transitivePeerDependencies:
- '@types/react'
- immer
@@ -5280,12 +5284,12 @@ packages:
- utf-8-validate
dev: true
- /@web3-react/store@8.2.3(@types/react@17.0.80)(react@17.0.2):
+ /@web3-react/store@8.2.3(@types/react@17.0.2)(react@17.0.2):
resolution: {integrity: sha512-qUJQ5pDsYYDra+/+glq2BmIS43HYAiEZ22sLLVh6E75WiZKRNOOqUxBDPe33KTIn718DLt51j+wd2FT+oT/kJQ==}
dependencies:
'@ethersproject/address': 5.7.0
- '@web3-react/types': 8.2.3(@types/react@17.0.80)(react@17.0.2)
- zustand: 4.4.0(@types/react@17.0.80)(react@17.0.2)
+ '@web3-react/types': 8.2.3(@types/react@17.0.2)(react@17.0.2)
+ zustand: 4.4.0(@types/react@17.0.2)(react@17.0.2)
transitivePeerDependencies:
- '@types/react'
- immer
@@ -5296,21 +5300,21 @@ packages:
resolution: {integrity: sha512-ofGmfDhxmNT1/P/MgVa8IKSkCStFiyvXe+U5tyZurKdrtTDFU+wJ/LxClPDtFerWpczNFPUSrKcuhfPX1sI6+A==}
dev: true
- /@web3-react/types@8.2.3(@types/react@17.0.80)(react@17.0.2):
+ /@web3-react/types@8.2.3(@types/react@17.0.2)(react@17.0.2):
resolution: {integrity: sha512-kSG90QkN+n7IOtp10nQ44oS8J7jzfH9EmqnruwBpCGybh1FM/ohyRvUKWYZNfNE4wsjTSpKsINR0/VdDsZMHyg==}
dependencies:
- zustand: 4.4.0(@types/react@17.0.80)(react@17.0.2)
+ zustand: 4.4.0(@types/react@17.0.2)(react@17.0.2)
transitivePeerDependencies:
- '@types/react'
- immer
- react
dev: true
- /@web3-react/url@8.2.3(@types/react@17.0.80)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10):
+ /@web3-react/url@8.2.3(@types/react@17.0.2)(bufferutil@4.0.8)(react@17.0.2)(utf-8-validate@5.0.10):
resolution: {integrity: sha512-gOcs8uEbD+BKMvw2VhTWnD8Ls3aOmbebLwASu7daWYuM2eB8hS8AoqsEAbV1NnliNpY7ztd+L1Vi5CckiIhXcw==}
dependencies:
'@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- '@web3-react/types': 8.2.3(@types/react@17.0.80)(react@17.0.2)
+ '@web3-react/types': 8.2.3(@types/react@17.0.2)(react@17.0.2)
transitivePeerDependencies:
- '@types/react'
- bufferutil
@@ -8010,7 +8014,7 @@ packages:
source-map: 0.6.1
dev: true
- /eslint-config-next@11.1.4(eslint@7.32.0)(next@12.3.4)(typescript@4.9.5):
+ /eslint-config-next@11.1.4(eslint@7.32.0)(next@12.3.1)(typescript@4.9.5):
resolution: {integrity: sha512-PD2/sxnLcI1Zy/QwKSwugzgafwymNh70Y/nPB/v+i0GOTFIl2JpLRUg9m/bQFHzi6PDeDM81w89ayFvpa2/Nxg==}
peerDependencies:
eslint: ^7.23.0
@@ -8030,7 +8034,7 @@ packages:
eslint-plugin-jsx-a11y: 6.8.0(eslint@7.32.0)
eslint-plugin-react: 7.34.1(eslint@7.32.0)
eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0)
- next: 12.3.4(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
+ next: 12.3.1(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
typescript: 4.9.5
transitivePeerDependencies:
- eslint-import-resolver-webpack
@@ -11848,7 +11852,7 @@ packages:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
dev: true
- /next-pwa@5.4.7(@babel/core@7.24.4)(next@12.3.4)(webpack@5.91.0):
+ /next-pwa@5.4.7(@babel/core@7.24.4)(next@12.3.1)(webpack@5.91.0):
resolution: {integrity: sha512-Uc1pOYJ/7tORbi2LoIEbaHz/hEbq06jiGbVuhr+nzHJHjPGFkmF6JfcDKVdbaXbJa1gJass0utPOI+Wrce06Qw==}
peerDependencies:
next: '>=9.0.0'
@@ -11856,7 +11860,7 @@ packages:
babel-loader: 8.3.0(@babel/core@7.24.4)(webpack@5.91.0)
clean-webpack-plugin: 4.0.0(webpack@5.91.0)
globby: 11.1.0
- next: 12.3.4(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
+ next: 12.3.1(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
terser-webpack-plugin: 5.3.10(webpack@5.91.0)
workbox-webpack-plugin: 6.6.0(webpack@5.91.0)
workbox-window: 6.6.0
@@ -11870,14 +11874,14 @@ packages:
- webpack
dev: true
- /next-seo@5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2):
+ /next-seo@5.15.0(next@12.3.1)(react-dom@17.0.2)(react@17.0.2):
resolution: {integrity: sha512-LGbcY91yDKGMb7YI+28n3g+RuChUkt6pXNpa8FkfKkEmNiJkeRDEXTnnjVtwT9FmMhG6NH8qwHTelGrlYm9rgg==}
peerDependencies:
next: ^8.1.1-canary.54 || >=9.0.0
react: '>=16.0.0'
react-dom: '>=16.0.0'
dependencies:
- next: 12.3.4(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
+ next: 12.3.1(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2)
react: 17.0.2
react-dom: 17.0.2(react@17.0.2)
dev: true
@@ -11893,8 +11897,8 @@ packages:
- supports-color
dev: true
- /next@12.3.4(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2):
- resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==}
+ /next@12.3.1(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react-dom@17.0.2)(react@17.0.2):
+ resolution: {integrity: sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==}
engines: {node: '>=12.22.0'}
hasBin: true
peerDependencies:
@@ -11911,7 +11915,7 @@ packages:
sass:
optional: true
dependencies:
- '@next/env': 12.3.4
+ '@next/env': 12.3.1
'@swc/helpers': 0.4.11
caniuse-lite: 1.0.30001607
postcss: 8.4.14
@@ -11920,19 +11924,19 @@ packages:
styled-jsx: 5.0.7(@babel/core@7.24.4)(babel-plugin-macros@3.1.0)(react@17.0.2)
use-sync-external-store: 1.2.0(react@17.0.2)
optionalDependencies:
- '@next/swc-android-arm-eabi': 12.3.4
- '@next/swc-android-arm64': 12.3.4
- '@next/swc-darwin-arm64': 12.3.4
- '@next/swc-darwin-x64': 12.3.4
- '@next/swc-freebsd-x64': 12.3.4
- '@next/swc-linux-arm-gnueabihf': 12.3.4
- '@next/swc-linux-arm64-gnu': 12.3.4
- '@next/swc-linux-arm64-musl': 12.3.4
- '@next/swc-linux-x64-gnu': 12.3.4
- '@next/swc-linux-x64-musl': 12.3.4
- '@next/swc-win32-arm64-msvc': 12.3.4
- '@next/swc-win32-ia32-msvc': 12.3.4
- '@next/swc-win32-x64-msvc': 12.3.4
+ '@next/swc-android-arm-eabi': 12.3.1
+ '@next/swc-android-arm64': 12.3.1
+ '@next/swc-darwin-arm64': 12.3.1
+ '@next/swc-darwin-x64': 12.3.1
+ '@next/swc-freebsd-x64': 12.3.1
+ '@next/swc-linux-arm-gnueabihf': 12.3.1
+ '@next/swc-linux-arm64-gnu': 12.3.1
+ '@next/swc-linux-arm64-musl': 12.3.1
+ '@next/swc-linux-x64-gnu': 12.3.1
+ '@next/swc-linux-x64-musl': 12.3.1
+ '@next/swc-win32-arm64-msvc': 12.3.1
+ '@next/swc-win32-ia32-msvc': 12.3.1
+ '@next/swc-win32-x64-msvc': 12.3.1
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
@@ -16357,7 +16361,7 @@ packages:
react: 17.0.2
dev: true
- /zustand@4.4.0(@types/react@17.0.80)(react@17.0.2):
+ /zustand@4.4.0(@types/react@17.0.2)(react@17.0.2):
resolution: {integrity: sha512-2dq6wq4dSxbiPTamGar0NlIG/av0wpyWZJGeQYtUOLegIUvhM2Bf86ekPlmgpUtS5uR7HyetSiktYrGsdsyZgQ==}
engines: {node: '>=12.7.0'}
peerDependencies:
@@ -16372,7 +16376,7 @@ packages:
react:
optional: true
dependencies:
- '@types/react': 17.0.80
+ '@types/react': 17.0.2
react: 17.0.2
use-sync-external-store: 1.2.0(react@17.0.2)
dev: true
diff --git a/sentry.client.config.js b/sentry.client.config.js
deleted file mode 100644
index d6f0b5706c..0000000000
--- a/sentry.client.config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file configures the initialization of Sentry on the browser.
-// The config you add here will be used whenever a page is visited.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from '@sentry/nextjs';
-
-const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN
-
-Sentry.init({
- dsn: SENTRY_DSN,
- tracesSampleRate: 1.0,
- // Note: if you want to override the automatic release value, do not set a
- // `release` value here - use the environment variable `SENTRY_RELEASE`, so
- // that it will also get attached to your source maps
-})
diff --git a/sentry.properties b/sentry.properties
deleted file mode 100644
index 48104f3c26..0000000000
--- a/sentry.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-defaults.url=https://sentry.io/
-defaults.org=sushi-j9
-defaults.project=sushiswap-interface
-auth.token=7e784089c5ee4f03a278173c6922948ec810f334403f4353a515a637621098c7
-cli.executable=../.npm/_npx/a8388072043b4cbc/node_modules/@sentry/cli/bin/sentry-cli
diff --git a/sentry.server.config.js b/sentry.server.config.js
deleted file mode 100644
index 8f7d077fd9..0000000000
--- a/sentry.server.config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file configures the initialization of Sentry on the server.
-// The config you add here will be used whenever the server handles a request.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from '@sentry/nextjs'
-
-const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN
-
-Sentry.init({
- dsn: SENTRY_DSN,
- tracesSampleRate: 1.0,
- // Note: if you want to override the automatic release value, do not set a
- // `release` value here - use the environment variable `SENTRY_RELEASE`, so
- // that it will also get attached to your source maps
-})
\ No newline at end of file
diff --git a/src/bootstrap.ts b/src/bootstrap.ts
index 8c28239900..44149785af 100644
--- a/src/bootstrap.ts
+++ b/src/bootstrap.ts
@@ -3,8 +3,6 @@
import { BigNumber, BigNumberish } from '@ethersproject/bignumber'
import { Zero } from '@ethersproject/constants'
import { parseUnits } from '@ethersproject/units'
-import * as Sentry from '@sentry/browser'
-import { Integrations } from '@sentry/tracing'
import { Fraction } from 'app/entities/bignumber'
import React from 'react'
@@ -62,18 +60,4 @@ BigNumber.prototype.max = function (...values: BigNumberish[]): BigNumber {
}
}
return highest
-}
-
-Sentry.init({
- dsn: 'https://f58d5ab63dba4cf28c2dbd20b2494ff3@o960777.ingest.sentry.io/5909166',
-
- // Alternatively, use `process.env.npm_package_version` for a dynamic release version
- // if your build tool supports it.
- release: 'sushiswap-interface@1.0.0',
- integrations: [new Integrations.BrowserTracing()],
-
- // Set tracesSampleRate to 1.0 to capture 100%
- // of transactions for performance monitoring.
- // We recommend adjusting this value in production
- tracesSampleRate: 1.0,
-})
+}
\ No newline at end of file
diff --git a/src/features/trident/migrate/SelectPoolsAndConfirm.tsx b/src/features/trident/migrate/SelectPoolsAndConfirm.tsx
index 4b8349a4c2..1201dfdde2 100644
--- a/src/features/trident/migrate/SelectPoolsAndConfirm.tsx
+++ b/src/features/trident/migrate/SelectPoolsAndConfirm.tsx
@@ -1,6 +1,6 @@
import { t } from '@lingui/macro'
import { useLingui } from '@lingui/react'
-import EXPORTS from '@sushiswap/trident/exports/all.json'
+import EXPORTS from '@sushiswap/trident/exports/exports.json'
import Button from 'app/components/Button'
import Dots from 'app/components/Dots'
import { LoadingSpinner } from 'app/components/LoadingSpinner'
diff --git a/src/hooks/useContract.ts b/src/hooks/useContract.ts
index fb83ed97d1..dce4b51bce 100644
--- a/src/hooks/useContract.ts
+++ b/src/hooks/useContract.ts
@@ -22,7 +22,7 @@ import {
import { LIMIT_ORDER_HELPER_ADDRESS, STOP_LIMIT_ORDER_ADDRESS } from '@sushiswap/limit-order-sdk'
import MISO from '@sushiswap/miso/exports/all.json'
import ConstantProductPoolArtifact from '@sushiswap/trident/artifacts/contracts/pool/constant-product/ConstantProductPool.sol/ConstantProductPool.json'
-import TRIDENT from '@sushiswap/trident/exports/all.json'
+import TRIDENT from '@sushiswap/trident/exports/exports.json'
import { Pool, PoolType } from '@sushiswap/trident-sdk'
import {
ARGENT_WALLET_DETECTOR_ABI,
diff --git a/test/e2e/addliquidity.test.ts b/test/e2e/addliquidity.test.ts
deleted file mode 100644
index b78332bf14..0000000000
--- a/test/e2e/addliquidity.test.ts
+++ /dev/null
@@ -1,500 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { closeValues } from '@sushiswap/trident-sdk'
-import { Browser, Page } from 'puppeteer'
-
-import { ADDRESSES } from './constants/Index'
-import { TestHelper } from './helpers/TestHelper'
-import { AddLiquidityPage } from './pages/pools/AddLiquidityPage'
-import { LiquidityPoolsPage } from './pages/pools/LiquidityPoolsPage'
-import { PoolPage } from './pages/pools/PoolPage'
-
-require('dotenv').config()
-
-let baseUrl: string = process.env.TEST_BASE_URL || 'http://localhost:3000'
-
-let browser: Browser
-let page: Page
-let metamask: Dappeteer
-
-let liquidityPoolsPage: LiquidityPoolsPage
-let poolPage: PoolPage
-let addLiquidityPage: AddLiquidityPage
-
-let depositPercentage = 0.01
-
-async function initPages() {
- liquidityPoolsPage = new LiquidityPoolsPage(page, metamask, baseUrl)
- poolPage = new PoolPage(page, metamask)
- addLiquidityPage = new AddLiquidityPage(page, metamask)
-}
-
-async function importTokens() {
- await liquidityPoolsPage.addTokenToMetamask(ADDRESSES.USDC)
-}
-
-function round(input: number): number {
- return parseFloat(input.toFixed(5))
-}
-
-jest.retryTimes(1)
-
-describe('Add Liquidity:', () => {
- beforeAll(async () => {
- ;[metamask, browser, page] = await TestHelper.initDappeteer()
- await initPages()
- await importTokens()
- })
-
- afterAll(async () => {
- browser.close()
- })
-
- test('Should deposit USDC from wallet in unequal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
-
- const poolLink = page.url()
- await poolPage.clickAddLiquidityButton()
-
- const usdcWalletBalanceBefore = await addLiquidityPage.getAssetABalance(true)
- const usdcDepositAmount = round(usdcWalletBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(false)
- await addLiquidityPage.setAssetAFundFromWallet(true)
- await addLiquidityPage.setAssetADepositAmount(usdcDepositAmount)
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const usdcWalletBalanceAfter = await addLiquidityPage.getAssetABalance(true)
-
- const usdcBalanceDiff = usdcWalletBalanceBefore - usdcWalletBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(usdcBalanceDiff, usdcDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-
- test('Should deposit ETH from wallet in unequal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
-
- const poolLink = page.url()
- await poolPage.clickAddLiquidityButton()
-
- const ethWalletBalanceBefore = await addLiquidityPage.getAssetBBalance(true)
- const ethDepositAmount = round(ethWalletBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(false)
- await addLiquidityPage.setAssetBFundFromWallet(true)
- await addLiquidityPage.setAssetBDepositAmount(ethDepositAmount)
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const ethWalletBalanceAfter = await addLiquidityPage.getAssetBBalance(true)
-
- const ethBalanceDiff = ethWalletBalanceBefore - ethWalletBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(ethBalanceDiff, ethDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-
- test('Should deposit ETH from bento in unequal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
-
- const poolLink = page.url()
- await poolPage.clickAddLiquidityButton()
-
- const ethBalanceBefore = await addLiquidityPage.getAssetBBalance(false)
- const ethDepositAmount = round(ethBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(false)
- await addLiquidityPage.setAssetBFundFromWallet(false)
- await addLiquidityPage.setAssetBDepositAmount(ethDepositAmount)
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const ethBalanceAfter = await addLiquidityPage.getAssetBBalance(false)
-
- const ethBalanceDiff = ethBalanceBefore - ethBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(ethBalanceDiff, ethDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-
- test('Should deposit ETH from wallet & USDC from wallet in unequal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
- const poolLink = page.url()
-
- await poolPage.clickAddLiquidityButton()
-
- const assetAWalletBalanceBefore = await addLiquidityPage.getAssetABalance(true)
- const assetBWalletBalanceBefore = await addLiquidityPage.getAssetBBalance(true)
-
- const assetADepositAmount = round(assetAWalletBalanceBefore * depositPercentage)
- const assetBDepositAmount = round(assetBWalletBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(false)
- await addLiquidityPage.setAssetAFundFromWallet(true)
- await addLiquidityPage.setAssetBFundFromWallet(true)
-
- await addLiquidityPage.setAssetBDepositAmount(assetBDepositAmount)
- await addLiquidityPage.setAssetADepositAmount(assetADepositAmount)
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const assetAWalletBalanceAfter = await addLiquidityPage.getAssetABalance(true)
- const assetBWalletBalanceAfter = await addLiquidityPage.getAssetBBalance(true)
-
- const assetABalanceDiff = assetAWalletBalanceBefore - assetAWalletBalanceAfter
- const assetBBalanceDiff = assetBWalletBalanceBefore - assetBWalletBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(assetABalanceDiff, assetADepositAmount, 1e-9)).toBe(true)
- expect(closeValues(assetBBalanceDiff, assetBDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-
- test('Should deposit ETH from wallet & USDC from bento in unequal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
- // AssetA = USDC, AssetB = WETH
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
- const poolLink = page.url()
-
- await poolPage.clickAddLiquidityButton()
-
- const usdcBentoBalanceBefore = await addLiquidityPage.getAssetABalance(false)
- const ethWalletBalanceBefore = await addLiquidityPage.getAssetBBalance(true)
-
- const usdcDepositAmount = round(usdcBentoBalanceBefore * depositPercentage)
- const ethDepositAmount = round(ethWalletBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(false)
- await addLiquidityPage.setAssetAFundFromWallet(false)
- await addLiquidityPage.setAssetBFundFromWallet(true)
-
- await addLiquidityPage.setAssetBDepositAmount(ethDepositAmount)
- await addLiquidityPage.setAssetADepositAmount(usdcDepositAmount)
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const usdcBentoBalanceAfter = await addLiquidityPage.getAssetABalance(false)
- const ethWalletBalanceAfter = await addLiquidityPage.getAssetBBalance(true)
-
- const assetABalanceDiff = usdcBentoBalanceBefore - usdcBentoBalanceAfter
- const assetBBalanceDiff = ethWalletBalanceBefore - ethWalletBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(assetABalanceDiff, usdcDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(assetBBalanceDiff, ethDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-
- test('Should deposit ETH from bento & USDC from wallet in unequal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
- // AssetA = USDC, AssetB = WETH
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
- const poolLink = page.url()
-
- await poolPage.clickAddLiquidityButton()
-
- const usdcWalletBalanceBefore = await addLiquidityPage.getAssetABalance(true)
- const ethBentoBalanceBefore = await addLiquidityPage.getAssetBBalance(false)
-
- const usdcDepositAmount = round(usdcWalletBalanceBefore * depositPercentage)
- const ethDepositAmount = round(ethBentoBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(false)
- await addLiquidityPage.setAssetAFundFromWallet(true)
- await addLiquidityPage.setAssetBFundFromWallet(false)
-
- await addLiquidityPage.setAssetBDepositAmount(ethDepositAmount)
- await addLiquidityPage.setAssetADepositAmount(usdcDepositAmount)
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const usdcWalletBalanceAfter = await addLiquidityPage.getAssetABalance(true)
- const ethBentoBalanceAfter = await addLiquidityPage.getAssetBBalance(false)
-
- const usdcBalanceDiff = usdcWalletBalanceBefore - usdcWalletBalanceAfter
- const ethBalanceDiff = ethBentoBalanceBefore - ethBentoBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(usdcBalanceDiff, usdcDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(ethBalanceDiff, ethDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-
- test('Should deposit ETH from bento & USDC from bento in unequal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
- // AssetA: USDC
- // AssetB: WETH
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
-
- const poolLink = page.url()
-
- await poolPage.clickAddLiquidityButton()
-
- const usdcBentoBalanceBefore = await addLiquidityPage.getAssetABalance(false)
- const ethBentoBalanceBefore = await addLiquidityPage.getAssetBBalance(false)
-
- const usdcDepositAmount = round(usdcBentoBalanceBefore * depositPercentage)
- const ethDepositAmount = round(ethBentoBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(false)
- await addLiquidityPage.setAssetAFundFromWallet(false)
- await addLiquidityPage.setAssetBFundFromWallet(false)
-
- await addLiquidityPage.setAssetBDepositAmount(ethDepositAmount)
- await addLiquidityPage.setAssetADepositAmount(usdcDepositAmount)
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const usdcBentoBalanceAfter = await addLiquidityPage.getAssetABalance(false)
- const ethBentoBalanceAfter = await addLiquidityPage.getAssetBBalance(false)
-
- const usdcBalanceDiff = usdcBentoBalanceBefore - usdcBentoBalanceAfter
- const ethBalanceDiff = ethBentoBalanceBefore - ethBentoBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(usdcBalanceDiff, usdcDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(ethBalanceDiff, ethDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-
- test('Should deposit ETH from bento & USDC from bento in equal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
- const poolLink = page.url()
-
- await poolPage.clickAddLiquidityButton()
-
- const assetABentoBalanceBefore = await addLiquidityPage.getAssetABalance(false)
- const assetBBentoBalanceBefore = await addLiquidityPage.getAssetBBalance(false)
-
- const assetADepositAmount = round(assetABentoBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(true)
- await addLiquidityPage.setAssetAFundFromWallet(false)
- await addLiquidityPage.setAssetBFundFromWallet(false)
-
- await addLiquidityPage.setAssetADepositAmount(assetADepositAmount)
-
- const assetBDepositAmount = await addLiquidityPage.getAssetBDepositAmount()
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const assetABentoBalanceAfter = await addLiquidityPage.getAssetABalance(false)
- const assetBBentoBalanceAfter = await addLiquidityPage.getAssetBBalance(false)
-
- const assetABalanceDiff = assetABentoBalanceBefore - assetABentoBalanceAfter
- const assetBBalanceDiff = assetBBentoBalanceBefore - assetBBentoBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(assetABalanceDiff, assetADepositAmount, 1e-9)).toBe(true)
- expect(closeValues(assetBBalanceDiff, assetBDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-
- test('Should deposit ETH from wallet & USDC from wallet in equal amounts', async () => {
- const targetPoolName = 'USDC-WETH'
- // AssetA: USDC
- // AssetB: WETH
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const positionBeforeDeposit = await poolPage.getPoolPosition()
- expect(positionBeforeDeposit.assetA).toEqual('USDC')
- expect(positionBeforeDeposit.assetB).toEqual('WETH')
-
- const poolLink = page.url()
-
- await poolPage.clickAddLiquidityButton()
-
- const usdcWalletBalanceBefore = await addLiquidityPage.getAssetABalance(true)
- const ethWalletBalanceBefore = await addLiquidityPage.getAssetBBalance(true)
-
- const ethDepositAmount = round(ethWalletBalanceBefore * depositPercentage)
-
- await addLiquidityPage.setFixedRatio(true)
- await addLiquidityPage.setAssetAFundFromWallet(true)
- await addLiquidityPage.setAssetBFundFromWallet(true)
-
- await addLiquidityPage.setAssetBDepositAmount(ethDepositAmount)
-
- const usdcDepositAmount = await addLiquidityPage.getAssetADepositAmount()
-
- const minLiquidityOutput = await addLiquidityPage.getMinReceivedAmount()
-
- await addLiquidityPage.confirmDeposit()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
- const usdcWalletBalanceAfter = await addLiquidityPage.getAssetABalance(true)
- const ethWalletBalanceAfter = await addLiquidityPage.getAssetBBalance(true)
-
- const usdcBalanceDiff = usdcWalletBalanceBefore - usdcWalletBalanceAfter
- const ethBalanceDiff = ethWalletBalanceBefore - ethWalletBalanceAfter
- // @ts-ignore TYPE NEEDS FIXING
- const slpAmountDiff = positionAfterDeposit.slpAmount - positionBeforeDeposit.slpAmount
-
- expect(closeValues(usdcBalanceDiff, usdcDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(ethBalanceDiff, ethDepositAmount, 1e-9)).toBe(true)
- expect(closeValues(slpAmountDiff, minLiquidityOutput, 1e-9)).toBe(true)
- })
-})
diff --git a/test/e2e/constants/Index.ts b/test/e2e/constants/Index.ts
deleted file mode 100644
index 9192d1488c..0000000000
--- a/test/e2e/constants/Index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-export const ADDRESSES = {
- DAI: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa',
- USDC: '0xb7a4F3E9097C08dA09517b5aB877F7a917224ede',
- WETH: '0xd0A1E359811322d97991E03f863a0C30C2cF029C',
- BAT: '0x482dc9bb08111cb875109b075a40881e48ae02cd',
- USDT: '0x07de306FF27a2B630B1141956844eB1552B956B5',
- TRIDENT_ROUTER: '0x70e9D5279AFbf898FB507C6FfF8Dd92618e892DB',
- LEGACY_ROUTER: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506',
- COMP: '0x61460874a7196d6a22D1eE4922473664b3E95270',
-}
-
-export const FUNDING_SOURCE = {
- BENTO: 'Bento',
- WALLET: 'Wallet',
-}
-
-export const RATIO = {
- EQUAL: 'Equal',
- UNEQUAL: 'Unequal',
-}
-
-export const POOL_TYPE = {
- CLASSIC: 'ConstantProduct',
-}
diff --git a/test/e2e/enums/SwapType.ts b/test/e2e/enums/SwapType.ts
deleted file mode 100644
index f9ceb64ce6..0000000000
--- a/test/e2e/enums/SwapType.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export enum SwapType {
- Normal,
- Wrap,
- Unwrap,
-}
diff --git a/test/e2e/helpers/ApprovalHelper.ts b/test/e2e/helpers/ApprovalHelper.ts
deleted file mode 100644
index 8ba7b8ad5c..0000000000
--- a/test/e2e/helpers/ApprovalHelper.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { JsonRpcProvider } from '@ethersproject/providers'
-import { Contract, Signer, Wallet } from 'ethers'
-
-import { ADDRESSES } from '../constants/Index'
-
-export class ApprovalHelper {
- private Signer!: Signer
- private Provider!: JsonRpcProvider
-
- constructor() {
- this.Provider = new JsonRpcProvider(process.env.INFURA_URL)
-
- // @ts-ignore TYPE NEEDS FIXING
- const signer = new Wallet(process.env.TEST_PKEY, this.Provider)
- this.Signer = signer
- }
-
- public async approveRouter(tokenAddress: string, amount: number): Promise {
- const approveFunction = ['function approve(address, uint256) external returns (bool)']
- const tokenContract = new Contract(tokenAddress, approveFunction, this.Signer)
-
- const tridentApproveTx = await tokenContract.approve(ADDRESSES.TRIDENT_ROUTER, amount)
- await tridentApproveTx.wait()
-
- const legacyApproveTx = await tokenContract.approve(ADDRESSES.LEGACY_ROUTER, amount)
- await legacyApproveTx.wait()
- }
-}
diff --git a/test/e2e/helpers/BentoHelper.ts b/test/e2e/helpers/BentoHelper.ts
deleted file mode 100644
index d403d63c52..0000000000
--- a/test/e2e/helpers/BentoHelper.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { JsonRpcProvider } from '@ethersproject/providers'
-import { BENTOBOX_ADDRESS, ChainId } from '@sushiswap/core-sdk'
-import { Contract, Signer, utils, Wallet } from 'ethers'
-
-import { ADDRESSES } from '../constants/Index'
-
-export class BentoHelper {
- private Signer!: Signer
- private Provider!: JsonRpcProvider
- private BentoContract!: Contract
-
- constructor() {
- this.Provider = new JsonRpcProvider(process.env.INFURA_URL)
-
- // @ts-ignore TYPE NEEDS FIXING
- const signer = new Wallet(process.env.TEST_PKEY, this.Provider)
- this.Signer = signer
-
- const balanceOfFunction = ['function balanceOf(address, address) public view returns (uint256)']
- this.BentoContract = new Contract(BENTOBOX_ADDRESS[ChainId.KOVAN], balanceOfFunction, this.Signer)
- }
-
- public async getBentoBalance(tokenSymbol: string): Promise {
- // @ts-ignore TYPE NEEDS FIXING
- const tokenAddress = ADDRESSES[tokenSymbol]
-
- const address = await this.Signer.getAddress()
- const balance = await this.BentoContract.balanceOf(tokenAddress, address)
-
- const balanceFormatted = utils.formatEther(balance.toString())
-
- return parseFloat(balanceFormatted)
- }
-}
diff --git a/test/e2e/helpers/TestHelper.ts b/test/e2e/helpers/TestHelper.ts
deleted file mode 100644
index ad730fd1e7..0000000000
--- a/test/e2e/helpers/TestHelper.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-import { Dappeteer, launch, LaunchOptions, setupMetamask } from '@chainsafe/dappeteer'
-import puppeteer, { Browser, Page } from 'puppeteer'
-
-import { App } from '../pages/App'
-
-export class TestHelper {
- public static async init(): Promise {
- const [metamask, browser, page] = await this.initDappeteer()
- const app = new App(page, metamask, process.env.TEST_BASE_URL || 'http://localhost:3000')
- return app
- }
-
- public static async initDappeteer(
- seedPhrase: string = '',
- password: string = ''
- ): Promise<[Dappeteer, Browser, Page]> {
- let seed: string
- let pass: string
-
- if (seedPhrase !== '' && password !== '') {
- seed = seedPhrase
- pass = password
- } else {
- seed = process.env.TEST_SEED || 'seed seed seed'
- pass = process.env.TEST_PASS || 'password'
- }
-
- const browser = await this.getBrowser()
- const metamask = await this.getMetamask(browser, seed, pass)
- const page = await this.getPage(browser)
-
- return [metamask, browser, page]
- }
-
- private static async getMetamask(browser: Browser, seed: string, pass: string): Promise {
- let metamask: Dappeteer
-
- try {
- metamask = await setupMetamask(browser, { seed: seed, password: pass })
- await metamask.switchNetwork('kovan')
-
- if (process.env.CI === 'true') {
- await metamask.page.setDefaultTimeout(60000)
- } else {
- await metamask.page.setDefaultTimeout(20000)
- }
- } catch (error) {
- console.log('Error occurred setting up metamask')
- throw error
- }
-
- return metamask
- }
-
- private static async getBrowser(): Promise {
- let browser: Browser
- let options: LaunchOptions = {
- metamaskVersion: 'v10.1.1',
- headless: false,
- defaultViewport: null,
- args: ['--no-sandbox'],
- }
-
- if (process.env.CI === 'true') {
- options.slowMo = 3
- options.executablePath = process.env.TEST_PUPPETEER_EXEC_PATH
- }
-
- try {
- browser = await launch(puppeteer, options)
- } catch (error) {
- console.log('Error occurred launching Puppeteer')
- throw error
- }
-
- return browser
- }
-
- private static async getPage(browser: Browser): Promise {
- let page: Page
-
- try {
- page = await browser.newPage()
-
- await page.setDefaultTimeout(180000)
-
- await page.setUserAgent(
- 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
- )
- } catch (error) {
- console.log('Error occurred creating new page')
- throw error
- }
-
- return page
- }
-}
diff --git a/test/e2e/interfaces/ILiquidityInfo.ts b/test/e2e/interfaces/ILiquidityInfo.ts
deleted file mode 100644
index 46f86c6456..0000000000
--- a/test/e2e/interfaces/ILiquidityInfo.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface ILiquidityInfo {
- assetA: string
- assetB: string
- amountA: number
- amountB: number
- slpAmount?: number
-}
diff --git a/test/e2e/pages/App.ts b/test/e2e/pages/App.ts
deleted file mode 100644
index 85d4517d49..0000000000
--- a/test/e2e/pages/App.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { Page } from 'puppeteer'
-
-import { AddLiquidityPage } from './pools/AddLiquidityPage'
-import { CreatePoolPage } from './pools/CreatePoolPage'
-import { LiquidityPoolsPage } from './pools/LiquidityPoolsPage'
-import { PoolPage } from './pools/PoolPage'
-import { RemoveLiquidityPage } from './pools/RemoveLiquidityPage'
-import { SwapPage } from './swap/SwapPage'
-
-export class App {
- public SwapPage: SwapPage
- public LiquidityPoolsPage: LiquidityPoolsPage
- public AddLiquidityPage: AddLiquidityPage
- public RemoveLiquidityPage: RemoveLiquidityPage
- public PoolPage: PoolPage
- public CreatePoolPage: CreatePoolPage
-
- constructor(page: Page, metamask: Dappeteer, baseUrl: string) {
- this.SwapPage = new SwapPage(page, metamask, baseUrl)
- this.LiquidityPoolsPage = new LiquidityPoolsPage(page, metamask, baseUrl)
- this.AddLiquidityPage = new AddLiquidityPage(page, metamask, baseUrl)
- this.RemoveLiquidityPage = new RemoveLiquidityPage(page, metamask, baseUrl)
- this.PoolPage = new PoolPage(page, metamask, baseUrl)
- this.CreatePoolPage = new CreatePoolPage(page, metamask, baseUrl)
- }
-}
diff --git a/test/e2e/pages/AppPage.ts b/test/e2e/pages/AppPage.ts
deleted file mode 100644
index 0494b4707f..0000000000
--- a/test/e2e/pages/AppPage.ts
+++ /dev/null
@@ -1,184 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { ElementHandle, Page } from 'puppeteer'
-
-export abstract class AppPage {
- public Metamask: Dappeteer
-
- protected BaseUrl: string
- protected Page: Page
- protected Route: string = ''
-
- protected WalletConnectSelector: string = '#connect-wallet'
- protected WalletOptionMetamaskSelector: string = '#wallet-option-MetaMask'
-
- private ci: string = process.env.CI || 'false'
-
- constructor(page: Page, metamask: Dappeteer, baseUrl: string = '') {
- this.Page = page
- this.BaseUrl = baseUrl
- this.Metamask = metamask
- }
-
- public async navigateTo(): Promise {
- await this.bringToFront()
- if (this.BaseUrl && this.Route) {
- await this.Page.goto(this.BaseUrl + this.Route)
- } else {
- console.warn('Page has no URL and cannot be navigated to')
- }
- return this.Page
- }
-
- public async bringToFront(): Promise {
- await this.Page.bringToFront()
- return this.Page
- }
-
- public async evaluateAndClick(btnSelector: string): Promise {
- await this.Page.evaluate((selector) => {
- return document.querySelector(selector).click()
- }, btnSelector)
- }
-
- public async connectMetamaskWallet(): Promise {
- await await this.blockingWait(1, true)
-
- const web3Connected = await this.Page.$('#web3-status-connected')
- if (web3Connected) return
-
- const btnConnectWallet = await this.Page.waitForSelector(this.WalletConnectSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await btnConnectWallet.click()
-
- const metamaskButton = await this.Page.waitForSelector(this.WalletOptionMetamaskSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await metamaskButton.click()
- await this.Metamask.approve()
- await this.bringToFront()
- }
-
- public async addTokenToMetamask(tokenAddress: string): Promise {
- await await this.blockingWait(2)
- await this.Metamask.page.bringToFront()
-
- await this.closeMetamaskWhatsNew()
-
- const addTokenButton = await this.Metamask.page.waitForSelector('.add-token-button > button')
- // @ts-ignore TYPE NEEDS FIXING
- await addTokenButton.click()
-
- const addressInput = await this.Metamask.page.waitForSelector('#custom-address')
- // @ts-ignore TYPE NEEDS FIXING
- addressInput.type(tokenAddress)
-
- await this.Metamask.page.waitForTimeout(4000)
-
- this.Metamask.page.waitForSelector(`button[data-testid='page-container-footer-next']:not([disabled])`)
- const nextButton = await this.Metamask.page.waitForSelector(`button[data-testid='page-container-footer-next']`)
- // @ts-ignore TYPE NEEDS FIXING
- await nextButton.click()
-
- const buttons = await this.Metamask.page.$$('footer > button')
- await buttons[1].click()
-
- await this.Metamask.page.reload()
- }
-
- public async getMetamaskTokenBalance(tokenSymbol: string): Promise {
- await this.Metamask.page.bringToFront()
- await this.blockingWait(1, true)
-
- await this.closeMetamaskWhatsNew()
-
- const assetMenutButton = await this.Metamask.page.waitForSelector(`li[data-testid="home__asset-tab"]`)
- // @ts-ignore TYPE NEEDS FIXING
- await assetMenutButton.click()
- await this.blockingWait(1, true)
-
- const assetListItems = await this.Metamask.page.$$('.asset-list-item__token-button')
-
- for (let index = 0; index < assetListItems.length; index++) {
- const assetListItem = assetListItems[index]
-
- const titleAttributeValue: string = await this.Metamask.page.evaluate(
- (item) => item.getAttribute('title'),
- assetListItem
- )
-
- if (titleAttributeValue.split(' ')[1].toUpperCase() === tokenSymbol.toUpperCase()) {
- const balance = titleAttributeValue.split(' ')[0]
- this.Page.bringToFront()
- return parseFloat(balance)
- }
- }
-
- return 0
- }
-
- public async closeMetamaskWhatsNew(): Promise {
- await this.blockingWait(1, true)
- const closeWhatsNewButton = await this.Metamask.page.$(
- '#popover-content > div > div > section > header > div > button'
- )
- if (closeWhatsNewButton) {
- await closeWhatsNewButton.click()
- }
- }
-
- public async confirmMetamaskTransaction(): Promise {
- await this.blockingWait(4)
-
- try {
- await this.Metamask.confirmTransaction()
-
- // Try to confirm transaction again
- await this.Metamask.confirmTransaction()
- await this.blockingWait(3)
-
- //Check if we're still at confirm transaction page. When gas estimation takes longer initial confirm does not work
- const mmFooterButtons = await this.Metamask.page.$$('footer > button')
- if (mmFooterButtons && mmFooterButtons[1]) {
- const confirmButton = mmFooterButtons[1]
- await confirmButton.click()
- }
- } catch (error) {}
-
- await this.blockingWait(1)
- await this.Page.bringToFront()
- await this.blockingWait(1, true)
- }
-
- // @ts-ignore TYPE NEEDS FIXING
- public async blockingWait(seconds, checkCi: boolean = false): Promise {
- let waitSeconds = seconds
-
- if (checkCi && this.ci === 'true') {
- waitSeconds = seconds * 2
- }
-
- var waitTill = new Date(new Date().getTime() + waitSeconds * 1000)
- while (waitTill > new Date()) {}
- }
-
- protected async getSwitchElement(switchId: string): Promise> {
- await this.Page.waitForSelector(switchId)
- const switchElement = await this.Page.$(switchId)
-
- // @ts-ignore TYPE NEEDS FIXING
- const buttonElement = (await switchElement.$x('..'))[0]
- if (!buttonElement) {
- throw new Error(`Switch with id ${switchId} not found on the page. Check selector is valid.`)
- }
-
- return buttonElement
- }
-
- protected async isSwitchChecked(switchId: string): Promise {
- let checked: boolean
-
- const checkedValue = await this.Page.$eval(switchId, (button) => button.getAttribute('aria-checked'))
- checked = checkedValue === 'true'
-
- return checked
- }
-}
diff --git a/test/e2e/pages/AppPageComponent.ts b/test/e2e/pages/AppPageComponent.ts
deleted file mode 100644
index f4e840c7da..0000000000
--- a/test/e2e/pages/AppPageComponent.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Page } from 'puppeteer'
-
-export abstract class AppPageComponent {
- protected Page: Page
-
- private ci: string = process.env.CI || 'false'
-
- constructor(page: Page) {
- this.Page = page
- }
-
- // @ts-ignore TYPE NEEDS FIXING
- public async blockingWait(seconds, checkCi: boolean = false): Promise {
- let waitSeconds = seconds
-
- if (checkCi && this.ci === 'true') {
- waitSeconds = seconds * 2
- }
-
- var waitTill = new Date(new Date().getTime() + waitSeconds * 1000)
- while (waitTill > new Date()) {}
- }
-}
diff --git a/test/e2e/pages/balances/AssetBalancesComponent.ts b/test/e2e/pages/balances/AssetBalancesComponent.ts
deleted file mode 100644
index 2dea0de19e..0000000000
--- a/test/e2e/pages/balances/AssetBalancesComponent.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { AppPageComponent } from '../AppPageComponent'
-
-export class AssetBalancesComponent extends AppPageComponent {
- private AssetBalancesTableBodySelector: string = '#asset-portfolio-table > tbody'
-
- public async getAssetBalances(): Promise> {
- let balances: Record = {}
-
- await this.Page.waitForSelector(this.AssetBalancesTableBodySelector)
- const balancesList = await this.Page.$$(this.AssetBalancesTableBodySelector + ' > tr')
-
- for (const balanceRow of balancesList) {
- let assetSymbol: string = ''
- let assetBalance: number = 0
-
- const balanceCells = await balanceRow.$$('td')
-
- for (let cellIndex = 0; cellIndex < balanceCells.length - 1; cellIndex++) {
- const balanceCell = balanceCells[cellIndex]
- const cellText = await this.Page.evaluate((item) => item.innerText, balanceCell)
-
- if (cellIndex === 0) {
- assetSymbol = cellText
- } else if (cellIndex === 1) {
- assetBalance = parseFloat(cellText)
- }
- }
-
- balances[assetSymbol] = assetBalance
- }
-
- return balances
- }
-}
diff --git a/test/e2e/pages/balances/MyBentoBoxPage.ts b/test/e2e/pages/balances/MyBentoBoxPage.ts
deleted file mode 100644
index 03f4f4d466..0000000000
--- a/test/e2e/pages/balances/MyBentoBoxPage.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { Page } from 'puppeteer'
-
-import { AppPage } from '../AppPage'
-import { AssetBalancesComponent } from './AssetBalancesComponent'
-
-export class MyBentoBoxPage extends AppPage {
- protected Route: string = '/portfolio/bentobox'
- private AssetBalances: AssetBalancesComponent
-
- constructor(page: Page, metamask: Dappeteer, baseUrl: string) {
- super(page, metamask, baseUrl)
-
- this.AssetBalances = new AssetBalancesComponent(page)
- }
-
- public async getBentoBalances(): Promise> {
- return await this.AssetBalances.getAssetBalances()
- }
-}
diff --git a/test/e2e/pages/balances/MyWalletPage.ts b/test/e2e/pages/balances/MyWalletPage.ts
deleted file mode 100644
index 4134209da5..0000000000
--- a/test/e2e/pages/balances/MyWalletPage.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { Page } from 'puppeteer'
-
-import { AppPage } from '../AppPage'
-import { AssetBalancesComponent } from './AssetBalancesComponent'
-
-export class MyWalletPage extends AppPage {
- protected Route: string = '/portfolio/wallet'
- private AssetBalances: AssetBalancesComponent
-
- constructor(page: Page, metamask: Dappeteer, baseUrl: string) {
- super(page, metamask, baseUrl)
-
- this.AssetBalances = new AssetBalancesComponent(page)
- }
-
- public async getWalletBalances(): Promise> {
- return await this.AssetBalances.getAssetBalances()
- }
-}
diff --git a/test/e2e/pages/pools/AddLiquidityPage.ts b/test/e2e/pages/pools/AddLiquidityPage.ts
deleted file mode 100644
index 7841cb2070..0000000000
--- a/test/e2e/pages/pools/AddLiquidityPage.ts
+++ /dev/null
@@ -1,193 +0,0 @@
-import { ElementHandle } from 'puppeteer'
-
-import { AppPage } from '../AppPage'
-
-export class AddLiquidityPage extends AppPage {
- private ConfirmDepositButtonSelector: string = '#btn-ConfirmDeposit'
- private ModalConfirmDepositButtonSelector: string = '#btn-modal-confirm-deposit'
- private TxStatusDivSelector: string = 'div-tx-status'
- private ApproveButtonSelector: string = '#btn-approve'
- private FixedRatioCheckboxSelector: string = '#chk-fixed-ratio-deposit'
-
- // Transaction Details Selctors
- private MinReceivedSelector: string = '#text-liquidity-minted'
-
- // Asset input selectors
- private SpendFromWalletASelector: string = '.switch-spend-from-wallet-a'
- private SpendFromWalletBSelector: string = '.switch-spend-from-wallet-b'
- private AssetInputALabelSelector: string = '#asset-input-a'
- private AssetInputBLabelSelector: string = '#asset-input-b'
- private AssetInputABalanceSelector: string = '#asset-input-a-balance'
- private AssetInputBBalanceSelector: string = '#asset-input-b-balance'
-
- public async addLiquidity(
- t0Amount: string,
- spendFromWalletA: boolean = true,
- spendFromWalletB: boolean = true,
- t1Amount: string = '',
- fixedRatio: boolean = false
- ): Promise {
- await this.setFixedRatio(fixedRatio)
-
- await this.setAssetADepositAmount(parseFloat(t0Amount))
- await this.setAssetBDepositAmount(parseFloat(t1Amount))
-
- await this.setAssetAFundFromWallet(spendFromWalletA)
- await this.setAssetBFundFromWallet(spendFromWalletB)
-
- await this.confirmDeposit()
- }
-
- public async confirmDeposit(): Promise {
- await this.blockingWait(1, true)
- const approveButton = await this.Page.$(this.ApproveButtonSelector)
- if (approveButton) {
- await approveButton.click()
- await this.Metamask.confirmTransaction()
- await this.Metamask.page.waitForTimeout(1000)
- await this.bringToFront()
- }
-
- const confirmDepositButton = await this.Page.waitForSelector(this.ConfirmDepositButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await confirmDepositButton.click()
-
- const modalConfirmDepositButton = await this.Page.waitForSelector(this.ModalConfirmDepositButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await modalConfirmDepositButton.click()
-
- await this.confirmMetamaskTransaction()
-
- await this.Page.waitForXPath(`//div[@id='${this.TxStatusDivSelector}' and contains(., 'Success')]`)
-
- await this.blockingWait(5)
- }
-
- public async getAssetABalance(fromWallet: boolean = true): Promise {
- return await this.getAssetBalance(this.SpendFromWalletASelector, this.AssetInputABalanceSelector, fromWallet)
- }
-
- public async getAssetBBalance(fromWallet: boolean = true): Promise {
- return await this.getAssetBalance(this.SpendFromWalletBSelector, this.AssetInputBBalanceSelector, fromWallet)
- }
-
- public async setFixedRatio(fixedRatio: boolean): Promise {
- await this.blockingWait(1, true)
- const fixedRatioCheckbox = await this.getFixedRatioCheckbox()
-
- if (fixedRatio && !(await this.isFixedRatioChecked())) {
- await fixedRatioCheckbox.click()
- } else if (!fixedRatio && (await this.isFixedRatioChecked())) {
- await fixedRatioCheckbox.click()
- }
- }
-
- public async setAssetADepositAmount(depositAmount: number): Promise {
- await this.blockingWait(1, true)
- const inputs = await this.Page.$$('input[type=text]')
- if (inputs.length !== 2) throw new Error('Expected 2 text inputs on add liquidity page')
-
- await inputs[0].type(depositAmount.toString())
- }
-
- public async setAssetBDepositAmount(depositAmount: number): Promise {
- await this.blockingWait(1, true)
- const inputs = await this.Page.$$('input[type=text]')
- if (inputs.length !== 2) throw new Error('Expected 2 text inputs on add liquidity page')
-
- await inputs[1].type(depositAmount.toString())
- }
-
- public async setAssetAFundFromWallet(fromWallet: boolean = true): Promise {
- await this.setFundingSource(this.SpendFromWalletASelector, fromWallet)
- }
-
- public async setAssetBFundFromWallet(fromWallet: boolean = true): Promise {
- await this.setFundingSource(this.SpendFromWalletBSelector, fromWallet)
- }
-
- public async getAssetBDepositAmount(): Promise {
- await this.blockingWait(1, true)
- const inputs = await this.Page.$$('input[type=text]')
-
- const assetBInput = inputs[1]
-
- const depositAmount = (await (await assetBInput.getProperty('value')).jsonValue()) as string
- return parseFloat(depositAmount)
- }
-
- public async getAssetADepositAmount(): Promise {
- await this.blockingWait(1, true)
- const inputs = await this.Page.$$('input[type=text]')
-
- const assetBInput = inputs[0]
-
- const depositAmount = (await (await assetBInput.getProperty('value')).jsonValue()) as string
- return parseFloat(depositAmount)
- }
-
- public async getMinReceivedAmount(): Promise {
- await this.Page.waitForSelector(this.MinReceivedSelector)
- const minReceivedText = await this.Page.$eval(this.MinReceivedSelector, (el) => el.textContent)
-
- if (minReceivedText) {
- const balance = minReceivedText.split(' ')[0]
- return parseFloat(balance)
- }
-
- return 0
- }
-
- private async setFundingSource(switchSelector: string, fromWallet: boolean = true): Promise {
- const isSpendFromWalletAChecked = await this.isSwitchChecked(switchSelector)
- const spendFromWalletASwitch = await this.getSwitchElement(switchSelector)
- if (fromWallet && !isSpendFromWalletAChecked) {
- await spendFromWalletASwitch.click()
- } else if (!fromWallet && isSpendFromWalletAChecked) {
- await spendFromWalletASwitch.click()
- }
- }
-
- private async getAssetBalance(
- spendFromSwitchSelector: string,
- balanceSelector: string,
- fromWallet: boolean = true
- ): Promise {
- await this.blockingWait(5, true)
-
- const isSpendFromWalletChecked = await this.isSwitchChecked(spendFromSwitchSelector)
- const spendFromWalletSwitch = await this.getSwitchElement(spendFromSwitchSelector)
- if (fromWallet && !isSpendFromWalletChecked) {
- await spendFromWalletSwitch.click()
- } else if (!fromWallet && isSpendFromWalletChecked) {
- await spendFromWalletSwitch.click()
- }
-
- await this.Page.waitForSelector(balanceSelector)
- const assetBalanceText = await this.Page.$eval(balanceSelector, (el) => el.textContent)
-
- if (assetBalanceText) {
- const balance = assetBalanceText.split(' ')[0]
- return parseFloat(balance)
- }
-
- return 0
- }
-
- private async getFixedRatioCheckbox(): Promise> {
- await this.Page.waitForSelector(this.FixedRatioCheckboxSelector)
- const fixedRateCheckbox = await this.Page.$(this.FixedRatioCheckboxSelector)
-
- // @ts-ignore TYPE NEEDS FIXING
- return fixedRateCheckbox
- }
-
- private async isFixedRatioChecked(): Promise {
- let fixedRatioChecked: boolean
-
- const fixedRatioCheckbox = await this.getFixedRatioCheckbox()
- fixedRatioChecked = (await (await fixedRatioCheckbox.getProperty('checked')).jsonValue()) as boolean
-
- return fixedRatioChecked
- }
-}
diff --git a/test/e2e/pages/pools/CreatePoolPage.ts b/test/e2e/pages/pools/CreatePoolPage.ts
deleted file mode 100644
index 0feb333861..0000000000
--- a/test/e2e/pages/pools/CreatePoolPage.ts
+++ /dev/null
@@ -1,145 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { Page } from 'puppeteer'
-
-import { AppPage } from '../AppPage'
-import { CurrencySelectComponent } from '../shared/CurrencySelectComponent'
-
-export class CreatePoolPage extends AppPage {
- // Page components
- private CurrencySelectModal: CurrencySelectComponent
-
- // Page selectors
- private ClassicContinueButtonSelector: string = '#btn-classic-continue'
- private ClassicWithdrawFromSelector: string = '.switch-classic-withdraw-from-'
- private PoolTypeButtonSelector: string = '#pool-select-'
- private TokenSelectTriggerSelector: string = '.token-select-trigger'
- private TokenAmountInputSelector: string = '.swap-panel-input input'
- private FeeTierSelector: string = '#fee-tier-'
- private ApproveButtonSelector: string = '#btn-approve'
- private ReviewConfirmButtonSelector: string = '#btn-review-confirm'
- private ConfirmCreationButtonSelector: string = '#btn-confirm-pool-creation'
- private SuccessIconSelector: string = '#pool-creation-success'
-
- constructor(page: Page, metamask: Dappeteer, baseUrl: string) {
- super(page, metamask, baseUrl)
-
- this.CurrencySelectModal = new CurrencySelectComponent(page)
- }
-
- public async createPool(
- poolType: string,
- assetA: string,
- assetB: string,
- payAssetAFromWallet: boolean,
- payAssetBFromWallet: boolean,
- amountInA: string,
- amountInB: string,
- fee: number
- ): Promise {
- // await this.setPoolType(poolType)
- // await this.clickContinueButton()
- await this.setAssetA(assetA, payAssetAFromWallet)
- await this.setAssetB(assetB, payAssetBFromWallet)
- await this.setAssetAAmountIn(amountInA)
- await this.setAssetBAmountIn(amountInB)
- await this.setPoolFee(fee)
- await this.confirmCreate()
- }
-
- public async setAssetA(symbol: string, payFromWallet: boolean): Promise {
- await this.setAsset(symbol, 0)
- await this.setAssetPayFromWallet(payFromWallet, 0)
- }
-
- public async setAssetB(symbol: string, payFromWallet: boolean): Promise {
- await this.setAsset(symbol, 1)
- await this.setAssetPayFromWallet(payFromWallet, 1)
- }
-
- private async setAssetPayFromWallet(payFromWallet: boolean, assetIndex: number): Promise {
- const selector = this.ClassicWithdrawFromSelector + assetIndex
-
- await this.Page.waitForSelector(selector)
- const isSelectorChecked = await this.isSwitchChecked(selector)
- const switchElement = await this.getSwitchElement(selector)
- if (payFromWallet && !isSelectorChecked) {
- await switchElement.click()
- } else if (!payFromWallet && isSelectorChecked) {
- await switchElement.click()
- }
- }
-
- private async setAsset(symbol: string, assetIndex: number): Promise {
- await this.Page.waitForSelector(this.TokenSelectTriggerSelector)
-
- const tokenSelectTriggers = await this.Page.$$(this.TokenSelectTriggerSelector)
- if (tokenSelectTriggers.length > 1) {
- await tokenSelectTriggers[assetIndex].click()
- } else {
- await tokenSelectTriggers[0].click()
- }
-
- await this.CurrencySelectModal.selectToken(symbol)
- }
-
- public async setAssetAAmountIn(amountIn: string): Promise {
- await this.setAssetAmountIn(amountIn, 0)
- }
-
- public async setAssetBAmountIn(amountIn: string): Promise {
- await this.setAssetAmountIn(amountIn, 1)
- }
-
- public async setPoolFee(fee: number): Promise {
- const feeTierButton = await this.Page.waitForSelector(this.FeeTierSelector + fee)
- // @ts-ignore TYPE NEEDS FIXING
- await feeTierButton.click()
- }
-
- public async setPoolType(poolType: string): Promise {
- const poolTypeButton = await this.Page.waitForSelector(this.PoolTypeButtonSelector + poolType)
- // @ts-ignore TYPE NEEDS FIXING
- await poolTypeButton.click()
- }
-
- public async clickContinueButton(): Promise {
- const continueButton = await this.Page.waitForSelector(this.ClassicContinueButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await continueButton.click()
- }
-
- public async confirmCreate(): Promise {
- await this.blockingWait(3, true)
- let approveButton = await this.Page.$(this.ApproveButtonSelector)
- while (approveButton) {
- await approveButton.click()
- await this.Metamask.confirmTransaction()
- await this.bringToFront()
- await this.blockingWait(3, true)
- approveButton = await this.Page.$(this.ApproveButtonSelector)
- }
-
- const btnReviewConfirm = await this.Page.waitForSelector(this.ReviewConfirmButtonSelector)
-
- const confirmButtonText = await this.Page.$eval(this.ReviewConfirmButtonSelector, (el) => el.textContent)
- if (confirmButtonText === 'Pool already exists') {
- return
- }
-
- // @ts-ignore TYPE NEEDS FIXING
- await btnReviewConfirm.click()
-
- const btnConfirmCreation = await this.Page.waitForSelector(this.ConfirmCreationButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await btnConfirmCreation.click()
-
- await this.confirmMetamaskTransaction()
- await this.Page.waitForSelector(this.SuccessIconSelector)
- }
-
- private async setAssetAmountIn(amountIn: string, assetIndex: number): Promise {
- await this.Page.waitForSelector(this.TokenAmountInputSelector)
- const tokenAmountInputs = await this.Page.$$(this.TokenAmountInputSelector)
- await tokenAmountInputs[assetIndex].type(amountIn)
- }
-}
diff --git a/test/e2e/pages/pools/LiquidityPoolsPage.ts b/test/e2e/pages/pools/LiquidityPoolsPage.ts
deleted file mode 100644
index a0985a96e1..0000000000
--- a/test/e2e/pages/pools/LiquidityPoolsPage.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { AppPage } from '../AppPage'
-
-export class LiquidityPoolsPage extends AppPage {
- protected Route: string = '/trident/pools'
-
- private CreateNewPoolButtonSelector: string = '#btn-create-new-pool'
-
- public async clickCreateNewPoolButton(): Promise {
- const createNewPoolButton = await this.Page.waitForSelector(this.CreateNewPoolButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await createNewPoolButton.click()
- }
-
- public async goToPool(poolName: string): Promise {
- if (!poolName) throw new Error('Pool name is required')
-
- const poolButton = await this.Page.waitForSelector(`#pool-${poolName}`)
-
- if (!poolButton) throw new Error(`Pool ${poolName} not found`)
- await poolButton.click()
-
- await this.Page.waitForSelector(`#pool-title-${poolName}`)
- }
-}
diff --git a/test/e2e/pages/pools/PoolPage.ts b/test/e2e/pages/pools/PoolPage.ts
deleted file mode 100644
index 56870b3031..0000000000
--- a/test/e2e/pages/pools/PoolPage.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { ILiquidityInfo } from '../../interfaces/ILiquidityInfo'
-import { AppPage } from '../AppPage'
-export class PoolPage extends AppPage {
- private DepositButtonSelector: string = '#btn-deposit > a'
- private AddLiquidityButtonSelector: string = '#btn-add-stake-liquidity > a'
- private RemoveLiquidityButtonSelector: string = '#btn-remove-liquidity > a'
-
- private PositionSlpSelector: string = '#my-position-header > div.flex.flex-col.text-right > div'
- private Position0Selector: string = '#my-position-0'
- private Position1Selector: string = '#my-position-1'
-
- public async clickAddLiquidityButton(): Promise {
- const depositButton = await this.Page.$(this.DepositButtonSelector)
- const addLiquidityButton = await this.Page.$(this.AddLiquidityButtonSelector)
-
- if (depositButton) {
- await this.evaluateAndClick(this.DepositButtonSelector)
- } else if (addLiquidityButton) {
- await this.evaluateAndClick(this.AddLiquidityButtonSelector)
- } else {
- throw new Error('No button found')
- }
- await this.Page.waitForNavigation()
- }
-
- public async clickRemoveLiquidityButton(): Promise {
- const removeLiquidityButton = await this.Page.waitForSelector(this.RemoveLiquidityButtonSelector)
-
- if (removeLiquidityButton) {
- await this.evaluateAndClick(this.RemoveLiquidityButtonSelector)
- } else {
- throw new Error('No button found')
- }
-
- await this.Page.waitForNavigation()
- }
-
- public async getPoolPosition(): Promise {
- let poolPosition: ILiquidityInfo = {
- assetA: '',
- assetB: '',
- amountA: 0,
- amountB: 0,
- slpAmount: 0,
- }
-
- const position0Element = await this.Page.waitForSelector(this.Position0Selector)
- const position0Text = await this.Page.evaluate((element) => element.textContent, position0Element)
- const position1Element = await this.Page.waitForSelector(this.Position1Selector)
- const position1Text = await this.Page.evaluate((element) => element.textContent, position1Element)
- const positionSlpElements = await this.Page.$$(this.PositionSlpSelector)
- const positionSlpText = await this.Page.evaluate((element) => element.textContent, positionSlpElements[1])
-
- poolPosition.assetA = position0Text.split(' ')[1].split('$')[0]
- poolPosition.amountA = parseFloat(position0Text.split(' ')[0])
- poolPosition.assetB = position1Text.split(' ')[1].split('$')[0]
- poolPosition.amountB = parseFloat(position1Text.split(' ')[0])
- poolPosition.slpAmount = parseFloat(positionSlpText.split(' ')[0])
-
- return poolPosition
- }
-}
diff --git a/test/e2e/pages/pools/RemoveLiquidityPage.ts b/test/e2e/pages/pools/RemoveLiquidityPage.ts
deleted file mode 100644
index f47931aece..0000000000
--- a/test/e2e/pages/pools/RemoveLiquidityPage.ts
+++ /dev/null
@@ -1,132 +0,0 @@
-import { ElementHandle } from 'puppeteer'
-
-import { ILiquidityInfo } from '../../interfaces/ILiquidityInfo'
-import { AppPage } from '../AppPage'
-
-export class RemoveLiquidityPage extends AppPage {
- private TxStatusDivSelector: string = 'div-tx-status'
- private BackToPoolsButtonSelector: string = '#btn-withdraw-success-back'
- private ModalConfirmWithdrawButtonSelector: string = '#btn-modal-confirm-withdrawal'
- private ReviewAndConfirmButtonSelector: string = '#btn-confirm-remove-liquidity'
-
- private ApproveButtonSelector: string = '#btn-approve'
- private FixedRatioCheckboxSelector: string = '#chk-fixed-ratio-withdraw'
- private RemovePercentSelector: string = '#radio-option-'
-
- private WithdrawToSelector: string = '#txt-withdraw-to'
- private CheckOutputToWalletSelector: string = '#chk-output-to-wallet'
-
- private EstimatedOutputTextSelector: string = '-min-liquidity-output'
-
- public async removeLiquidity(percent: number, outputToWallet: boolean, fixedRatio: boolean = false): Promise {
- await this.setRemovePercent(percent)
- await this.setFixedRatio(fixedRatio)
- await this.setWithdrawToWallet(outputToWallet)
- await this.confirmWithdrawal()
- }
-
- public async getMinLiquidityOutput(poolName: string): Promise {
- await this.blockingWait(1, true)
-
- const assets = poolName.toLowerCase().split('-')
- const assetA = assets[0]
- const assetB = assets[1]
-
- const estimatedOutput: ILiquidityInfo = {
- assetA: assetA,
- assetB: assetB,
- amountA: await this.getEstimatedOutputForAsset(assetA),
- amountB: await this.getEstimatedOutputForAsset(assetB),
- }
-
- return estimatedOutput
- }
-
- private async getEstimatedOutputForAsset(asset: string): Promise {
- const selector = `#` + asset + this.EstimatedOutputTextSelector
- await this.Page.waitForSelector(selector)
-
- const assetAEstimatedOutputDiv = await this.Page.$(selector)
- const estimatedOutputString = (await // @ts-ignore TYPE NEEDS FIXING
- (await assetAEstimatedOutputDiv.getProperty('textContent')).jsonValue()) as string
-
- return parseFloat(estimatedOutputString)
- }
-
- public async setFixedRatio(fixedRatio: boolean): Promise {
- await this.blockingWait(1, true)
- const fixedRatioCheckbox = await this.getFixedRatioCheckbox()
-
- if (fixedRatio && !(await this.isFixedRatioChecked())) {
- await fixedRatioCheckbox.click()
- } else if (!fixedRatio && (await this.isFixedRatioChecked())) {
- await fixedRatioCheckbox.click()
- }
- }
-
- public async confirmWithdrawal(): Promise {
- await this.blockingWait(1, true)
- const approveButton = await this.Page.$(this.ApproveButtonSelector)
- if (approveButton) {
- await approveButton.click()
- await this.Metamask.sign()
- await this.Metamask.page.waitForTimeout(1000)
- await this.bringToFront()
- }
-
- const reviewConfirmButton = await this.Page.waitForSelector(this.ReviewAndConfirmButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await reviewConfirmButton.click()
- await this.Page.waitForTimeout(500)
-
- const modalConfirmWithdrawButton = await this.Page.waitForSelector(this.ModalConfirmWithdrawButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await modalConfirmWithdrawButton.click()
-
- await this.confirmMetamaskTransaction()
-
- await this.Page.waitForXPath(`//div[@id='${this.TxStatusDivSelector}' and contains(., 'Success')]`)
-
- await this.blockingWait(5)
- }
-
- public async setWithdrawToWallet(withdrawToWallet: boolean): Promise {
- await this.blockingWait(1, true)
- const withdrawToElement = await this.Page.waitForSelector(this.WithdrawToSelector)
- const withdrawTo = await this.Page.evaluate((el) => el.textContent, withdrawToElement)
-
- const outputSelector = await this.Page.waitForSelector(this.CheckOutputToWalletSelector)
- // @ts-ignore TYPE NEEDS FIXING
- const outputSelectorButton = (await outputSelector.$x('..'))[0]
-
- if (withdrawToWallet && withdrawTo.toLowerCase() !== 'wallet') {
- await outputSelectorButton.click()
- } else if (!withdrawToWallet && withdrawTo.toLowerCase() !== 'bentobox') {
- await outputSelectorButton.click()
- }
- }
-
- public async setRemovePercent(percent: number): Promise {
- await this.blockingWait(1, true)
- const percentSelectionButton = await this.Page.waitForSelector(this.RemovePercentSelector + percent.toString())
- // @ts-ignore TYPE NEEDS FIXING
- await percentSelectionButton.click()
- }
-
- private async getFixedRatioCheckbox(): Promise> {
- await this.Page.waitForSelector(this.FixedRatioCheckboxSelector)
- const fixedRateCheckbox = await this.Page.$(this.FixedRatioCheckboxSelector)
-
- // @ts-ignore TYPE NEEDS FIXING
- return fixedRateCheckbox
- }
-
- private async isFixedRatioChecked(): Promise {
- let fixedRatioChecked: boolean
-
- const fixedRatioCheckbox = await this.getFixedRatioCheckbox()
- fixedRatioChecked = (await (await fixedRatioCheckbox.getProperty('checked')).jsonValue()) as boolean
-
- return fixedRatioChecked
- }
-}
diff --git a/test/e2e/pages/shared/CurrencySelectComponent.ts b/test/e2e/pages/shared/CurrencySelectComponent.ts
deleted file mode 100644
index 6e366e4af6..0000000000
--- a/test/e2e/pages/shared/CurrencySelectComponent.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { AppPageComponent } from '../AppPageComponent'
-
-export class CurrencySelectComponent extends AppPageComponent {
- // Selectors
- private SelectTokenInputSelector: string = '#txt-select-token'
- private AllCurrenciesListSelector: string = '#all-currencies-list'
- private SelectTokenResultsSelector: string = '.token-'
-
- public async selectToken(tokenSymbol: string): Promise {
- await this.Page.waitForSelector(this.AllCurrenciesListSelector)
- await this.blockingWait(3)
-
- const tokenSelector = this.SelectTokenResultsSelector + tokenSymbol
-
- const tokenButton = await this.Page.$(tokenSelector)
-
- if (tokenButton) {
- // @ts-ignore TYPE NEEDS FIXING
- await tokenButton.click()
- }
- }
-}
diff --git a/test/e2e/pages/swap/SwapPage.ts b/test/e2e/pages/swap/SwapPage.ts
deleted file mode 100644
index cafdde5569..0000000000
--- a/test/e2e/pages/swap/SwapPage.ts
+++ /dev/null
@@ -1,426 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { ElementHandle, Page } from 'puppeteer'
-
-import { SwapType } from '../../enums/SwapType'
-import { AppPage } from '../AppPage'
-import { CurrencySelectComponent } from '../shared/CurrencySelectComponent'
-
-export class SwapPage extends AppPage {
- protected Route: string = '/trident/swap'
-
- // Components
- private CurrencySelectModal: CurrencySelectComponent
-
- constructor(page: Page, metamask: Dappeteer, baseUrl: string) {
- super(page, metamask, baseUrl)
-
- this.CurrencySelectModal = new CurrencySelectComponent(page)
- }
-
- // Main swap panel selectors
- private TokenInputSelector: string = '.swap-panel-input input'
- private PayFromWalletSelector: string = '.chk-pay-from-wallet'
- private ReceiveToWalletSelector: string = '.chk-receive-to-wallet'
- private SwapButtonSelector: string = '#swap-button'
- private WrapButtonSelector: string = '#wrap-button'
- private UseMaxButtonSelector: string = '.btn-max'
- private BalanceLabelSelector: string = '#text-balance-'
- private SwitchCurrenciesButtonSelector: string = '#btn-switch-currencies'
-
- // Swap rate selectors
- private ExchangeRateButtonSelector: string = '#btn-exchange-rate'
-
- // Swap review modal selectors
- private ConfirmSwapButtonSelector: string = '#confirm-swap-or-send'
- private TxSubmittedSelector: string = '#text-transaction-submitted'
-
- // Token selector &
- private InTokenButtonSelector: string = '#asset-select-trigger-0'
- private OutTokenButtonSelector: string = '#asset-select-trigger-1'
-
- // Tx settings
- private TxSettingsButtonSelector: string = '#btn-transaction-settings'
- private SlippageInputSelector: string = '#text-slippage'
- private ExpertModeToggleSelector: string = '#toggle-expert-mode-button'
-
- //Confirm expert Mode Modal
- private ConfirmExpertModeSelector: string = '#confirm-expert-mode'
-
- // Add recipient
- private AddRecipientButtonSelector: string = '#btn-add-recipient'
- private RecipientInputSelector: string = '#recipient-input'
-
- private ApproveButtonSelector: string = '#btn-approve'
-
- private TradeTypeSelector: string = '#trade-type'
-
- public async swapTokens(
- inTokenSymbol: string,
- outTokenSymbol: string,
- inTokenAmount: string,
- payFromWallet: boolean,
- receiveToWallet: boolean
- ): Promise {
- await this.setInputToken(inTokenSymbol)
- await this.setOutputToken(outTokenSymbol)
- await this.setAmountIn(inTokenAmount)
-
- const isPayFromWalletChecked = await this.isSwitchChecked(this.PayFromWalletSelector)
- const payFromWalletSwitch = await this.getSwitchElement(this.PayFromWalletSelector)
- if (payFromWallet && !isPayFromWalletChecked) {
- await payFromWalletSwitch.click()
- } else if (!payFromWallet && isPayFromWalletChecked) {
- await payFromWalletSwitch.click()
- }
-
- const isReceiveToWalletChecked = await this.isSwitchChecked(this.ReceiveToWalletSelector)
- const receiveToWalletSwitch = await this.getSwitchElement(this.ReceiveToWalletSelector)
- if (receiveToWallet && !isReceiveToWalletChecked) {
- await receiveToWalletSwitch.click()
- } else if (!receiveToWallet && isReceiveToWalletChecked) {
- await receiveToWalletSwitch.click()
- }
-
- await this.confirmSwap(inTokenSymbol, outTokenSymbol)
- }
-
- // Swap Rate Component
- public async getExchangeRate(): Promise {
- await this.blockingWait(1, true)
- await this.Page.waitForSelector(this.ExchangeRateButtonSelector)
- const rate = await this.Page.$(this.ExchangeRateButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- const rateText = (await (await rate.getProperty('textContent')).jsonValue()) as string
- return rateText
- }
-
- // Swap Asset Panel
- public async setInputToken(tokenSymbol: string): Promise {
- await this.blockingWait(1, true)
-
- const selectedInToken = await this.getSelectedInputToken()
- if (selectedInToken === tokenSymbol) {
- return
- }
-
- const inputTokenButton = await this.Page.waitForSelector(this.InTokenButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await inputTokenButton.click()
- await this.selectToken(tokenSymbol)
- }
-
- public async setOutputToken(tokenSymbol: string): Promise {
- await this.blockingWait(1, true)
-
- const selectedOutToken = await this.getSelectedOutputToken()
- if (selectedOutToken === tokenSymbol) {
- return
- }
-
- const outputTokenButton = await this.Page.waitForSelector(this.OutTokenButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await outputTokenButton.click()
- await this.selectToken(tokenSymbol)
- }
-
- private async selectToken(tokenSymbol: string): Promise {
- await this.CurrencySelectModal.selectToken(tokenSymbol)
- }
-
- public async setAmountIn(inTokenAmount: string): Promise {
- await this.Page.waitForTimeout(500)
- const tokenAmountInput = await this.Page.waitForSelector(this.TokenInputSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await tokenAmountInput.type(inTokenAmount)
- }
-
- public async getInputTokenAmount(): Promise {
- await this.blockingWait(1, true)
- await this.Page.waitForSelector(this.TokenInputSelector)
- const tokenInput = await this.Page.$(this.TokenInputSelector)
-
- // @ts-ignore TYPE NEEDS FIXING
- const inTokenAmount = (await (await tokenInput.getProperty('value')).jsonValue()) as string
- return inTokenAmount
- }
-
- public async getMinOutputAmount(): Promise {
- await this.blockingWait(1, true)
- await this.Page.waitForSelector(this.TokenInputSelector)
- const tokenOutput = await this.Page.$$(this.TokenInputSelector)
-
- const outTokenAmount = (await (await tokenOutput[1].getProperty('value')).jsonValue()) as string
- return outTokenAmount
- }
-
- public async setPayFromWallet(payFromWallet: boolean): Promise {
- await this.setFunding(payFromWallet, this.PayFromWalletSelector)
- }
-
- public async setReceiveToWallet(receiveToWallet: boolean): Promise {
- await this.setFunding(receiveToWallet, this.ReceiveToWalletSelector)
- }
-
- private async setFunding(useFundingMethod: boolean, selector: string): Promise {
- await this.blockingWait(3, true)
- const isSelectorChecked = await this.isSwitchChecked(selector)
- const switchElement = await this.getSwitchElement(selector)
- if (useFundingMethod && !isSelectorChecked) {
- await switchElement.click()
- } else if (!useFundingMethod && isSelectorChecked) {
- await switchElement.click()
- }
- }
-
- public async getSelectedInputToken(): Promise {
- return await this.getSelectedToken(this.InTokenButtonSelector)
- }
-
- public async getSelectedOutputToken(): Promise {
- return await this.getSelectedToken(this.OutTokenButtonSelector)
- }
-
- private async getSelectedToken(selector: string): Promise {
- await this.blockingWait(1, true)
- await this.Page.waitForSelector(selector)
- const tokenButton = await this.Page.$(selector)
- // @ts-ignore TYPE NEEDS FIXING
- const selectedToken = (await (await tokenButton.getProperty('textContent')).jsonValue()) as string
- return selectedToken
- }
-
- public async getInputTokenBalance(): Promise {
- await this.blockingWait(3, true)
- await this.Page.waitForSelector(this.InTokenButtonSelector)
- const inputTokenLabel = await this.Page.$(this.InTokenButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- const inToken = (await (await inputTokenLabel.getProperty('textContent')).jsonValue()) as string
-
- const balanceLabel = await this.Page.waitForSelector(`#text-balance-${inToken}`)
- // @ts-ignore TYPE NEEDS FIXING
- const inTokenBalance = (await (await balanceLabel.getProperty('textContent')).jsonValue()) as string
-
- return inTokenBalance
- }
-
- public async getTokenBalance(tokenSymbol: string, fromWallet: boolean = true): Promise {
- await this.blockingWait(1, true)
-
- await this.setInputToken(tokenSymbol)
- await this.setPayFromWallet(fromWallet)
-
- const balance = await this.getInputTokenBalance()
-
- return parseFloat(balance)
- }
-
- // Swap Review Component
- public async confirmSwap(inTokenSymbol: string, outTokenSymbol: string): Promise {
- await this.blockingWait(1)
-
- const swapType: SwapType = this.getSwapType(inTokenSymbol, outTokenSymbol)
-
- switch (swapType) {
- case SwapType.Wrap:
- case SwapType.Unwrap:
- const wrapButon = await this.Page.waitForSelector(this.WrapButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await wrapButon.click()
-
- await this.blockingWait(1)
- break
-
- case SwapType.Normal:
- default:
- const swapButon = await this.Page.waitForSelector(this.SwapButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await swapButon.click()
-
- await this.blockingWait(1)
- const confirmSwapButton = await this.Page.waitForSelector(this.ConfirmSwapButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await confirmSwapButton.click()
- break
- }
-
- await this.confirmMetamaskTransaction()
-
- if (swapType === SwapType.Normal) {
- await this.Page.waitForSelector(this.TxSubmittedSelector)
- await this.blockingWait(5) // wait for tx
- }
- }
-
- // Settings Tab
- public async toggleExpertMode(): Promise {
- await this.blockingWait(1, true)
-
- const TxSettingsButtonSelector = await this.Page.waitForSelector(this.TxSettingsButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await TxSettingsButtonSelector.click()
-
- const expertModeToggle = await this.Page.waitForSelector(this.ExpertModeToggleSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await expertModeToggle.click()
-
- const confirmExpertModeButton = await this.Page.$(this.ConfirmExpertModeSelector)
- if (confirmExpertModeButton) {
- await confirmExpertModeButton.click()
- }
- }
-
- public async setSlippage(slippage: string): Promise {
- await this.blockingWait(1, true)
-
- const TxSettingsButtonSelector = await this.Page.waitForSelector(this.TxSettingsButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await TxSettingsButtonSelector.click()
-
- const slippageInput = await this.Page.waitForSelector(this.SlippageInputSelector)
-
- // @ts-ignore TYPE NEEDS FIXING
- await slippageInput.click({ clickCount: 3 })
- // @ts-ignore TYPE NEEDS FIXING
- await slippageInput.type(slippage)
-
- // @ts-ignore TYPE NEEDS FIXING
- await TxSettingsButtonSelector.click()
- }
-
- public async getSlippage(): Promise {
- await this.blockingWait(1, true)
-
- const TxSettingsButtonSelector = await this.Page.waitForSelector(this.TxSettingsButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await TxSettingsButtonSelector.click()
-
- await this.Page.waitForSelector(this.SlippageInputSelector)
-
- const slippageInputTextBox = await this.Page.$(this.SlippageInputSelector)
- // @ts-ignore TYPE NEEDS FIXING
- const slippage = (await (await slippageInputTextBox.getProperty('value')).jsonValue()) as string
- return slippage
- }
-
- // Recipient Panel
- public async setRecipient(recipient: string): Promise {
- await this.blockingWait(1, true)
-
- const addRecipientButton = await this.Page.waitForSelector(this.AddRecipientButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- addRecipientButton.click()
-
- const recipientInput = await this.Page.waitForSelector(this.RecipientInputSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await recipientInput.type(recipient)
- }
-
- public async getRecipient(): Promise {
- await this.blockingWait(1, true)
-
- let recipientInputBox: ElementHandle
- // @ts-ignore TYPE NEEDS FIXING
- recipientInputBox = await this.Page.$(this.RecipientInputSelector)
-
- if (!recipientInputBox) {
- return ''
- }
-
- const recipient = (await (await recipientInputBox.getProperty('value')).jsonValue()) as string
- return recipient
- }
-
- public async clickSwitchCurrenciesButton(): Promise {
- await this.blockingWait(1, true)
- const switchCurrenciesButton = await this.Page.waitForSelector(this.SwitchCurrenciesButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await switchCurrenciesButton.click()
- await this.blockingWait(1, true)
- }
-
- public async getSwapButtonText(): Promise {
- await this.blockingWait(1, true)
-
- await this.Page.waitForSelector(this.SwapButtonSelector)
- const swapButton = await this.Page.$(this.SwapButtonSelector)
-
- // @ts-ignore TYPE NEEDS FIXING
- const swapButtonText = (await (await swapButton.getProperty('textContent')).jsonValue()) as string
- return swapButtonText
- }
-
- public async clickMaxButton(): Promise {
- await this.blockingWait(3, true)
- await this.Page.waitForSelector(this.UseMaxButtonSelector)
- const useMaxButton = await this.Page.$$(this.UseMaxButtonSelector)
- await useMaxButton[1].click()
- await this.blockingWait(1, true)
- }
-
- public async clickInvertRateButton(): Promise {
- await this.blockingWait(1, true)
- const invertRateButton = await this.Page.waitForSelector(this.ExchangeRateButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await invertRateButton.click()
- }
-
- public async getBentoBalance(tokenSymbol: string): Promise {
- await this.blockingWait(1, true)
- await this.Page.bringToFront()
- await this.setInputToken(tokenSymbol)
-
- await this.setPayFromWallet(false)
-
- const balance = await this.getInputTokenBalance()
-
- return balance
- }
-
- public async getWalletBalance(tokenSymbol: string): Promise {
- await this.blockingWait(1, true)
- await this.Page.bringToFront()
- await this.setInputToken(tokenSymbol)
-
- await this.setPayFromWallet(true)
-
- const balance = await this.getInputTokenBalance()
-
- return balance
- }
-
- public async requiresApproval(): Promise {
- await this.blockingWait(1, true)
- const approveButton = await this.Page.$(this.ApproveButtonSelector)
- return approveButton !== null
- }
-
- public async approveToken(): Promise {
- await this.blockingWait(1, true)
- const approveButton = await this.Page.waitForSelector(this.ApproveButtonSelector)
- // @ts-ignore TYPE NEEDS FIXING
- await approveButton.click()
- await this.Metamask.confirmTransaction()
- await this.Metamask.page.waitForTimeout(1000)
- await this.bringToFront()
- await this.blockingWait(5, true)
- }
-
- private getSwapType(inTokenSymbol: string, outTokenSymbol: string): SwapType {
- if (inTokenSymbol === 'ETH' && outTokenSymbol === 'WETH') {
- return SwapType.Wrap
- } else if (inTokenSymbol === 'WETH' && outTokenSymbol === 'ETH') {
- return SwapType.Unwrap
- } else {
- return SwapType.Normal
- }
- }
-
- public async getTradeType(): Promise {
- await this.Page.waitForSelector(this.TradeTypeSelector)
-
- const tradeTypeInput = await this.Page.$(this.TradeTypeSelector)
- // @ts-ignore TYPE NEEDS FIXING
- const tradeType = (await (await tradeTypeInput.getProperty('textContent')).jsonValue()) as string
- return tradeType.toLowerCase()
- }
-}
diff --git a/test/e2e/portfolio.test.ts b/test/e2e/portfolio.test.ts
deleted file mode 100644
index f87bd9a57c..0000000000
--- a/test/e2e/portfolio.test.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { closeValues } from '@sushiswap/trident-sdk'
-import { Browser, Page } from 'puppeteer'
-
-import { ADDRESSES } from './constants/Index'
-import { BentoHelper } from './helpers/BentoHelper'
-import { TestHelper } from './helpers/TestHelper'
-import { MyBentoBoxPage } from './pages/balances/MyBentoBoxPage'
-import { MyWalletPage } from './pages/balances/MyWalletPage'
-
-let browser: Browser
-let page: Page
-let metamask: Dappeteer
-
-let myWalletPage: MyWalletPage
-let myBentoBoxPage: MyBentoBoxPage
-let bentoHelper: BentoHelper
-
-require('dotenv').config()
-
-let baseUrl: string = process.env.TEST_BASE_URL || 'http://localhost:3000'
-
-jest.retryTimes(1)
-
-describe('Balances:', () => {
- beforeAll(async () => {
- ;[metamask, browser, page] = await TestHelper.initDappeteer()
- myWalletPage = new MyWalletPage(page, metamask, baseUrl)
- myBentoBoxPage = new MyBentoBoxPage(page, metamask, baseUrl)
- bentoHelper = new BentoHelper()
-
- await myWalletPage.addTokenToMetamask(ADDRESSES.WETH)
- await myWalletPage.addTokenToMetamask(ADDRESSES.USDC)
- await myWalletPage.addTokenToMetamask(ADDRESSES.BAT)
- await myWalletPage.addTokenToMetamask(ADDRESSES.USDT)
- await myWalletPage.addTokenToMetamask(ADDRESSES.DAI)
- await myWalletPage.addTokenToMetamask(ADDRESSES.COMP)
-
- await page.goto(baseUrl)
- await page.bringToFront()
-
- await myWalletPage.connectMetamaskWallet()
- })
-
- beforeEach(async () => {})
-
- afterAll(async () => {
- browser.close()
- })
-
- test('Should get correct wallet balances', async () => {
- await myWalletPage.navigateTo()
- const appBalances = await myWalletPage.getWalletBalances()
-
- for (let balance in appBalances) {
- const tokenSymbol = balance.toUpperCase()
- const appBalance = appBalances[balance]
- const mmBalance = await myWalletPage.getMetamaskTokenBalance(tokenSymbol)
-
- expect(closeValues(appBalance, mmBalance, 1e-5)).toBe(true)
- }
- })
-
- test('Should get correct BentoBox balances', async () => {
- await myBentoBoxPage.navigateTo()
- const appBalances = await myBentoBoxPage.getBentoBalances()
-
- for (let balance in appBalances) {
- const tokenSymbol = balance.toUpperCase()
- const appBalance = appBalances[balance]
- const bentoBalance = await bentoHelper.getBentoBalance(tokenSymbol)
-
- expect(closeValues(appBalance, bentoBalance, 1e-5)).toBe(true)
- }
- })
-})
diff --git a/test/e2e/removeLiquidity.test.ts b/test/e2e/removeLiquidity.test.ts
deleted file mode 100644
index 479b9141b9..0000000000
--- a/test/e2e/removeLiquidity.test.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { closeValues } from '@sushiswap/trident-sdk'
-import { Browser, Page } from 'puppeteer'
-
-import { FUNDING_SOURCE, RATIO } from './constants/Index'
-import { TestHelper } from './helpers/TestHelper'
-import { AddLiquidityPage } from './pages/pools/AddLiquidityPage'
-import { LiquidityPoolsPage } from './pages/pools/LiquidityPoolsPage'
-import { PoolPage } from './pages/pools/PoolPage'
-import { RemoveLiquidityPage } from './pages/pools/RemoveLiquidityPage'
-
-require('dotenv').config()
-
-let baseUrl: string = process.env.TEST_BASE_URL || 'http://localhost:3000'
-
-let browser: Browser
-let page: Page
-let metamask: Dappeteer
-
-let liquidityPoolsPage: LiquidityPoolsPage
-let removeLiquidityPage: RemoveLiquidityPage
-let addLiquidityPage: AddLiquidityPage
-let poolPage: PoolPage
-
-async function initPages() {
- liquidityPoolsPage = new LiquidityPoolsPage(page, metamask, baseUrl)
- poolPage = new PoolPage(page, metamask)
- addLiquidityPage = new AddLiquidityPage(page, metamask)
- removeLiquidityPage = new RemoveLiquidityPage(page, metamask)
-}
-
-jest.retryTimes(1)
-
-describe('Remove Liquidity:', () => {
- beforeAll(async () => {
- ;[metamask, browser, page] = await TestHelper.initDappeteer()
- await initPages()
- })
-
- afterAll(async () => {
- browser.close()
- })
-
- test.each([
- [25, RATIO.EQUAL, FUNDING_SOURCE.BENTO],
- [25, RATIO.EQUAL, FUNDING_SOURCE.WALLET],
- ])(`Remove %p percent in %p amounts and withdraw to %p`, async (removePercent, ratio, receiveTo) => {
- const targetPoolName = 'USDC-WETH'
- const fixedRatio = ratio === RATIO.EQUAL
- const withdrawToWallet = receiveTo === FUNDING_SOURCE.WALLET
- // USDC: Asset A
- // WETH: Asset B
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.connectMetamaskWallet()
- await liquidityPoolsPage.goToPool(targetPoolName)
-
- const poolLink = page.url()
-
- // Get position & balances before
- const positionBeforeWithdraw = await poolPage.getPoolPosition()
- expect(positionBeforeWithdraw.assetA).toEqual('USDC')
- expect(positionBeforeWithdraw.assetB).toEqual('WETH')
- expect(positionBeforeWithdraw.amountA || positionBeforeWithdraw.amountB).toBeGreaterThan(0)
-
- await poolPage.clickAddLiquidityButton()
-
- const usdcBalanceBefore = await addLiquidityPage.getAssetABalance(withdrawToWallet)
- const ethBalanceBefore = await addLiquidityPage.getAssetBBalance(withdrawToWallet)
-
- // Set up page before confirm
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.goToPool(targetPoolName)
- await poolPage.clickRemoveLiquidityButton()
-
- await removeLiquidityPage.setRemovePercent(removePercent)
- await removeLiquidityPage.setFixedRatio(fixedRatio)
- await removeLiquidityPage.setWithdrawToWallet(withdrawToWallet)
-
- const minLiquidityOutput = await removeLiquidityPage.getMinLiquidityOutput(targetPoolName)
-
- await removeLiquidityPage.confirmWithdrawal()
-
- await page.goto(poolLink)
- await page.waitForSelector(`#pool-title-${targetPoolName}`)
-
- // Get position & balances after
- const positionAfterDeposit = await poolPage.getPoolPosition()
- expect(positionAfterDeposit.assetA).toEqual('USDC')
- expect(positionAfterDeposit.assetB).toEqual('WETH')
-
- await poolPage.clickAddLiquidityButton()
-
- const usdcBalanceAfter = await addLiquidityPage.getAssetABalance(withdrawToWallet)
- const ethBalanceAfter = await addLiquidityPage.getAssetBBalance(withdrawToWallet)
-
- const usdcBalanceDiff = usdcBalanceAfter - usdcBalanceBefore
- const ethBalanceDiff = ethBalanceAfter - ethBalanceBefore
-
- expect(closeValues(usdcBalanceDiff, minLiquidityOutput.amountA, 1e-9)).toBe(true)
- expect(closeValues(ethBalanceDiff, minLiquidityOutput.amountB, 1e-9)).toBe(true)
- })
-})
diff --git a/test/e2e/swap.test.ts b/test/e2e/swap.test.ts
deleted file mode 100644
index a902476518..0000000000
--- a/test/e2e/swap.test.ts
+++ /dev/null
@@ -1,430 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { closeValues } from '@sushiswap/trident-sdk'
-import { Browser, Page } from 'puppeteer'
-
-import { ADDRESSES, FUNDING_SOURCE } from './constants/Index'
-import { ApprovalHelper } from './helpers/ApprovalHelper'
-import { TestHelper } from './helpers/TestHelper'
-import { SwapPage } from './pages/swap/SwapPage'
-
-let browser: Browser
-let page: Page
-let metamask: Dappeteer
-
-let swapPage: SwapPage
-
-require('dotenv').config()
-
-let baseUrl: string = process.env.TEST_BASE_URL || 'http://localhost:3000'
-let account2PubKey: string = process.env.TEST_ACCOUNT2_PUB_KEY || ''
-let approvalHelper: ApprovalHelper
-let depositPercentage = 0.01
-
-const cases = [
- ['ETH', FUNDING_SOURCE.WALLET, 'USDC', FUNDING_SOURCE.WALLET],
- ['WETH', FUNDING_SOURCE.WALLET, 'USDC', FUNDING_SOURCE.WALLET],
- ['USDC', FUNDING_SOURCE.WALLET, 'ETH', FUNDING_SOURCE.WALLET],
- ['USDC', FUNDING_SOURCE.WALLET, 'WETH', FUNDING_SOURCE.WALLET],
- ['ETH', FUNDING_SOURCE.WALLET, 'WETH', FUNDING_SOURCE.WALLET],
- ['WETH', FUNDING_SOURCE.WALLET, 'ETH', FUNDING_SOURCE.WALLET],
-]
-
-const currencySelectCases = [
- ['ETH', 'DAI'],
- ['WETH', 'USDC'],
- ['BAT', 'SUSHI'],
-]
-
-jest.retryTimes(1)
-
-describe('Swap:', () => {
- beforeAll(async () => {
- ;[metamask, browser, page] = await TestHelper.initDappeteer()
- swapPage = new SwapPage(page, metamask, baseUrl)
- approvalHelper = new ApprovalHelper()
-
- await page.goto(baseUrl)
- await page.bringToFront()
-
- await swapPage.connectMetamaskWallet()
- await swapPage.addTokenToMetamask(ADDRESSES.WETH)
- await swapPage.addTokenToMetamask(ADDRESSES.USDC)
- await swapPage.addTokenToMetamask(ADDRESSES.BAT)
- })
-
- beforeEach(async () => {
- await swapPage.navigateTo()
- await swapPage.blockingWait(2, true)
- })
-
- afterAll(async () => {
- browser.close()
- })
-
- test.each(cases)(`Should swap from %p %p to %p %p`, async (inToken, payFrom, outToken, receiveTo) => {
- const payFromWallet = payFrom === FUNDING_SOURCE.WALLET ? true : false
- const receiveToWallet = receiveTo === FUNDING_SOURCE.WALLET ? true : false
- const inputTokenBalanceBefore = await swapPage.getTokenBalance(inToken, payFromWallet)
- const outputTokenBalanceBefore = await swapPage.getTokenBalance(outToken, receiveToWallet)
-
- if (!(inputTokenBalanceBefore > 0)) throw new Error(`${inToken} wallet balance is 0. Can't execute swap`)
-
- const swapAmount = (inputTokenBalanceBefore * depositPercentage).toFixed(5)
-
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(payFromWallet)
- await swapPage.setReceiveToWallet(receiveToWallet)
-
- const minOutputAmount = await swapPage.getMinOutputAmount()
- await swapPage.confirmSwap(inToken, outToken)
-
- await swapPage.navigateTo()
-
- const inputTokenBalanceAfter = await swapPage.getTokenBalance(inToken, payFromWallet)
- const outputTokenBalanceAfter = await swapPage.getTokenBalance(outToken, receiveToWallet)
-
- const intputTokenBalanceDiff = inputTokenBalanceBefore - inputTokenBalanceAfter
- const outputTokenBalanceDiff = outputTokenBalanceAfter - outputTokenBalanceBefore
-
- expect(closeValues(intputTokenBalanceDiff, parseFloat(swapAmount), 1e-9)).toBe(true)
- expect(closeValues(outputTokenBalanceDiff, parseFloat(minOutputAmount), 1e-9)).toBe(true)
- })
-
- test('Should click max button for wallet', async () => {
- await swapPage.setInputToken('USDC')
-
- const inputTokenBalance = await swapPage.getInputTokenBalance()
-
- await page.evaluate(() => {
- // @ts-ignore
- document.querySelector('#text-balance-USDC').click()
- })
-
- const inputTokenAmount = await swapPage.getInputTokenAmount()
-
- expect(closeValues(parseFloat(inputTokenBalance), parseFloat(inputTokenAmount), 1e-3)).toBe(true)
- })
-
- test('Should click max button for bento', async () => {
- await swapPage.setPayFromWallet(false)
-
- await swapPage.setInputToken('USDC')
-
- const inputTokenBalance = await swapPage.getInputTokenBalance()
-
- await page.evaluate(() => {
- // @ts-ignore
- document.querySelector('#text-balance-USDC').click()
- })
-
- const inputTokenAmount = await swapPage.getInputTokenAmount()
-
- expect(closeValues(parseFloat(inputTokenBalance), parseFloat(inputTokenAmount), 1e-3)).toBe(true)
- })
-
- test('Should switch currencies', async () => {
- await swapPage.setInputToken('USDC')
- await swapPage.setOutputToken('WETH')
-
- const selectedInputTokenBefore = await swapPage.getSelectedInputToken()
- const selectedOutputTokenBefore = await swapPage.getSelectedOutputToken()
-
- expect(selectedInputTokenBefore).toBe('USDC')
- expect(selectedOutputTokenBefore).toBe('WETH')
-
- await swapPage.clickSwitchCurrenciesButton()
-
- const selectedInputTokenAfter = await swapPage.getSelectedInputToken()
- const selectedOutputTokenAfter = await swapPage.getSelectedOutputToken()
-
- expect(selectedInputTokenAfter).toBe('WETH')
- expect(selectedOutputTokenAfter).toBe('USDC')
- })
-
- test.each(currencySelectCases)(`Should select %p as input and %p as output`, async (inToken, outToken) => {
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
-
- const selectedInputTokenBefore = await swapPage.getSelectedInputToken()
- const selectedOutputTokenBefore = await swapPage.getSelectedOutputToken()
-
- expect(selectedInputTokenBefore).toBe(inToken)
- expect(selectedOutputTokenBefore).toBe(outToken)
- })
-
- test('Should invert rate', async () => {
- const inputAmount = 500
-
- await swapPage.setInputToken('ETH')
- await swapPage.setOutputToken('USDC')
-
- await swapPage.setAmountIn(inputAmount.toString())
-
- const outputAmount = await swapPage.getMinOutputAmount()
-
- const usdcWethRateDisplayed = await swapPage.getExchangeRate()
- const usdcWethRateExpected = parseFloat(outputAmount) / inputAmount
- const usdcWethRate = usdcWethRateDisplayed.split('=')[1].trim().split(' ')[0]
-
- expect(closeValues(usdcWethRateExpected, parseFloat(usdcWethRate), 1e-3)).toBe(true)
-
- await swapPage.clickInvertRateButton()
- const wethUsdcRateDispayed = await swapPage.getExchangeRate()
- const wethUsdcRateExpected = inputAmount / parseFloat(outputAmount)
- const wethUsdcRate = wethUsdcRateDispayed.split('=')[1].trim().split(' ')[0]
-
- expect(closeValues(wethUsdcRateExpected, parseFloat(wethUsdcRate), 1e-3)).toBe(true)
- })
-
- test('Should change slippage', async () => {
- await swapPage.setSlippage('25.00')
-
- const slippage = await swapPage.getSlippage()
-
- expect(slippage).toBe('25.00')
- })
-
- test.skip('Should swap ETH from wallet to USDC bento with other recipient', async () => {
- const inToken = 'ETH'
- const outToken = 'USDC'
-
- let recipientBrowser: Browser
- let recipientPage: Page
- let recipientMetamask: Dappeteer
- ;[recipientMetamask, recipientBrowser, recipientPage] = await TestHelper.initDappeteer(
- process.env.TEST_SEED2,
- process.env.TEST_PASS
- )
-
- try {
- const recipientSwapPage = new SwapPage(recipientPage, recipientMetamask, baseUrl)
- await recipientPage.goto(baseUrl)
- await recipientPage.bringToFront()
- await recipientSwapPage.connectMetamaskWallet()
-
- await recipientSwapPage.navigateTo()
- const account2BentoBalanceBefore = await recipientSwapPage.getBentoBalance(outToken)
-
- const tokenWalletBalance = await swapPage.getMetamaskTokenBalance(inToken)
- if (!(tokenWalletBalance > 0))
- throw new Error(`${inToken} wallet balance is 0 or could not be read from Metamask`)
-
- const swapAmount = (tokenWalletBalance * 0.01).toFixed(5)
-
- await swapPage.navigateTo()
- await swapPage.toggleExpertMode()
- await swapPage.setRecipient(account2PubKey)
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(true)
- await swapPage.setReceiveToWallet(false)
-
- const expectedOutputAmount = await swapPage.getMinOutputAmount()
- await swapPage.confirmSwap(inToken, outToken)
-
- const account2BentoBalanceAfter = await recipientSwapPage.getBentoBalance(outToken)
- expect(account2BentoBalanceAfter !== account2BentoBalanceBefore).toBe(true)
-
- const account2BalanceDifference = parseFloat(account2BentoBalanceAfter) - parseFloat(account2BentoBalanceBefore)
- expect(closeValues(parseFloat(expectedOutputAmount), account2BalanceDifference, 1e-3)).toBe(true)
- } catch (error) {
- throw error
- } finally {
- await recipientBrowser.close()
- }
- })
-
- test.skip.each([
- ['USDC', FUNDING_SOURCE.WALLET, 'ETH', FUNDING_SOURCE.BENTO],
- ['USDC', FUNDING_SOURCE.BENTO, 'ETH', FUNDING_SOURCE.BENTO],
- ])(`Should add WETH to Bento when swapping from %p %p to %p %p`, async (inToken, payFrom, outToken, receiveTo) => {
- const tokenWalletBalance = await swapPage.getMetamaskTokenBalance(inToken)
- if (!(tokenWalletBalance > 0)) throw new Error(`${inToken} wallet balance is 0 or could not be read from Metamask`)
-
- await swapPage.navigateTo()
-
- const swapAmount = (tokenWalletBalance * 0.01).toFixed(5)
- const payFromWallet = payFrom === FUNDING_SOURCE.WALLET ? true : false
- const receiveToWallet = receiveTo === FUNDING_SOURCE.WALLET ? true : false
-
- const wethBentoBalanceBefore = await swapPage.getBentoBalance('WETH')
-
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(payFromWallet)
- await swapPage.setReceiveToWallet(receiveToWallet)
-
- const expectedOutputAmount = await swapPage.getMinOutputAmount()
- await swapPage.confirmSwap(inToken, outToken)
-
- await swapPage.navigateTo()
- const wethBentoBalanceAfter = await swapPage.getBentoBalance('WETH')
- expect(wethBentoBalanceAfter !== wethBentoBalanceBefore).toBe(true)
-
- const wethBalanceDiff = parseFloat(wethBentoBalanceAfter) - parseFloat(wethBentoBalanceBefore)
- expect(closeValues(parseFloat(expectedOutputAmount), wethBalanceDiff, 1e-3)).toBe(true)
- })
-
- test('Should swap ETH from wallet to USDC wallet with other recipient', async () => {
- const inToken = 'ETH'
- const outToken = 'USDC'
-
- let recipientBrowser: Browser
- let recipientPage: Page
- let recipientMetamask: Dappeteer
- ;[recipientMetamask, recipientBrowser, recipientPage] = await TestHelper.initDappeteer(
- process.env.TEST_SEED2,
- process.env.TEST_PASS
- )
-
- try {
- const recipientSwapPage = new SwapPage(recipientPage, recipientMetamask, baseUrl)
- await recipientPage.goto(baseUrl)
- await recipientPage.bringToFront()
- await recipientSwapPage.connectMetamaskWallet()
-
- await recipientSwapPage.navigateTo()
- const account2BentoBalanceBefore = await recipientSwapPage.getWalletBalance(outToken)
-
- const tokenWalletBalance = await swapPage.getMetamaskTokenBalance(inToken)
- if (!(tokenWalletBalance > 0))
- throw new Error(`${inToken} wallet balance is 0 or could not be read from Metamask`)
-
- const swapAmount = (tokenWalletBalance * 0.01).toFixed(5)
-
- await swapPage.toggleExpertMode()
- await swapPage.setRecipient(account2PubKey)
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(true)
- await swapPage.setReceiveToWallet(true)
-
- const expectedOutputAmount = await swapPage.getMinOutputAmount()
- await swapPage.confirmSwap(inToken, outToken)
-
- const account2BentoBalanceAfter = await recipientSwapPage.getWalletBalance(outToken)
- expect(account2BentoBalanceAfter !== account2BentoBalanceBefore).toBe(true)
-
- const account2BalanceDifference = parseFloat(account2BentoBalanceAfter) - parseFloat(account2BentoBalanceBefore)
-
- expect(closeValues(parseFloat(expectedOutputAmount), account2BalanceDifference, 1e-3)).toBe(true)
- } catch (error) {
- throw error
- } finally {
- await recipientBrowser.close()
- }
- })
-
- test('Should reset recipient address when expert mode is disabled', async () => {
- await swapPage.toggleExpertMode() // enable expert mode
- await swapPage.setRecipient('potato')
-
- const recipientAddressBefore = await swapPage.getRecipient()
- expect(recipientAddressBefore).toBe('potato')
- await swapPage.toggleExpertMode() // disable expert mode
-
- await page.click('body') // click to dismiss tx settings modal
-
- await swapPage.toggleExpertMode() // enable expert mode
- const recipientAddressAfter = await swapPage.getRecipient()
- expect(recipientAddressAfter).toBe('')
- })
-
- test('Should require approval of token when swapping from wallet', async () => {
- await approvalHelper.approveRouter(ADDRESSES.BAT, 0)
-
- const inToken = 'BAT'
- const outToken = 'ETH'
-
- const tokenWalletBalance = await swapPage.getMetamaskTokenBalance(inToken)
- if (!(tokenWalletBalance > 0)) throw new Error(`${inToken} wallet balance is 0 or could not be read from Metamask`)
-
- const swapAmount = (tokenWalletBalance * 0.01).toFixed(5)
-
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(true)
- await swapPage.setReceiveToWallet(true)
-
- const requiresApprovalBefore = await swapPage.requiresApproval()
- expect(requiresApprovalBefore).toBe(true)
-
- await swapPage.approveToken()
- await swapPage.confirmSwap(inToken, outToken)
-
- await swapPage.navigateTo()
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(true)
- await swapPage.setReceiveToWallet(true)
-
- const requiresApprovalAfter = await swapPage.requiresApproval()
- expect(requiresApprovalAfter).toBe(false)
- })
-
- test('Should require approval once when swapping from BentoBox', async () => {
- await approvalHelper.approveRouter(ADDRESSES.USDC, 0)
-
- const inToken = 'USDC'
- const outToken = 'ETH'
-
- const tokenWalletBalance = await swapPage.getMetamaskTokenBalance(inToken)
- if (!(tokenWalletBalance > 0)) throw new Error(`${inToken} wallet balance is 0 or could not be read from Metamask`)
-
- const swapAmount = (tokenWalletBalance * 0.01).toFixed(5)
-
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(false)
- await swapPage.setReceiveToWallet(true)
-
- const requiresApprovalBefore = await swapPage.requiresApproval()
- expect(requiresApprovalBefore).toBe(true)
-
- await swapPage.approveToken()
- await swapPage.confirmSwap(inToken, outToken)
-
- await swapPage.navigateTo()
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(true)
- await swapPage.setReceiveToWallet(true)
-
- const requiresApprovalAfter = await swapPage.requiresApproval()
- expect(requiresApprovalAfter).toBe(false)
-
- await approvalHelper.approveRouter(ADDRESSES.USDC, 2 ^ (256 - 1))
- })
-
- test.each([['ETH', FUNDING_SOURCE.WALLET, 'USDC', FUNDING_SOURCE.WALLET]])(
- `Should display insufficient balance when not enough %p in %p`,
- async (inToken, payFrom, outToken, receiveTo) => {
- const tokenWalletBalance = await swapPage.getMetamaskTokenBalance(inToken)
- if (!(tokenWalletBalance > 0))
- throw new Error(`${inToken} wallet balance is 0 or could not be read from Metamask`)
-
- const swapAmount = (tokenWalletBalance * 100).toFixed(5)
- const payFromWallet = payFrom === FUNDING_SOURCE.WALLET ? true : false
- const receiveToWallet = receiveTo === FUNDING_SOURCE.WALLET ? true : false
-
- await swapPage.setInputToken(inToken)
- await swapPage.setOutputToken(outToken)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(payFromWallet)
- await swapPage.setReceiveToWallet(receiveToWallet)
-
- const swapButtonText = await swapPage.getSwapButtonText()
-
- expect(swapButtonText).toBe(`Insufficient Balance`)
- }
- )
-})
diff --git a/test/e2e/tridentSwap.test.ts b/test/e2e/tridentSwap.test.ts
deleted file mode 100644
index 26a3d5d952..0000000000
--- a/test/e2e/tridentSwap.test.ts
+++ /dev/null
@@ -1,228 +0,0 @@
-import { Dappeteer } from '@chainsafe/dappeteer'
-import { closeValues, Fee } from '@sushiswap/trident-sdk'
-import { Browser, Page } from 'puppeteer'
-
-import { ADDRESSES, FUNDING_SOURCE, POOL_TYPE } from './constants/Index'
-import { TestHelper } from './helpers/TestHelper'
-import { CreatePoolPage } from './pages/pools/CreatePoolPage'
-import { LiquidityPoolsPage } from './pages/pools/LiquidityPoolsPage'
-import { SwapPage } from './pages/swap/SwapPage'
-
-let browser: Browser
-let page: Page
-let metamask: Dappeteer
-
-let swapPage: SwapPage
-let liquidityPoolsPage: LiquidityPoolsPage
-let createPoolPage: CreatePoolPage
-let depositPercentage = 0.2
-let swapPercentage = 0.01
-
-require('dotenv').config()
-
-let baseUrl: string = process.env.TEST_BASE_URL || 'http://localhost:3000'
-
-const bentoSwapCases = [
- ['ETH', FUNDING_SOURCE.WALLET, 'USDC', FUNDING_SOURCE.BENTO],
- ['WETH', FUNDING_SOURCE.WALLET, 'USDC', FUNDING_SOURCE.BENTO],
- ['ETH', FUNDING_SOURCE.BENTO, 'USDC', FUNDING_SOURCE.WALLET],
- ['WETH', FUNDING_SOURCE.BENTO, 'ETH', FUNDING_SOURCE.WALLET],
- ['ETH', FUNDING_SOURCE.BENTO, 'USDC', FUNDING_SOURCE.BENTO],
- ['USDC', FUNDING_SOURCE.WALLET, 'WETH', FUNDING_SOURCE.BENTO],
- ['USDC', FUNDING_SOURCE.BENTO, 'WETH', FUNDING_SOURCE.BENTO],
- ['USDC', FUNDING_SOURCE.BENTO, 'ETH', FUNDING_SOURCE.WALLET],
- ['USDC', FUNDING_SOURCE.BENTO, 'WETH', FUNDING_SOURCE.WALLET],
-]
-
-jest.retryTimes(1)
-
-describe('Trident Swap:', () => {
- beforeAll(async () => {
- ;[metamask, browser, page] = await TestHelper.initDappeteer()
-
- swapPage = new SwapPage(page, metamask, baseUrl)
- liquidityPoolsPage = new LiquidityPoolsPage(page, metamask, baseUrl)
- createPoolPage = new CreatePoolPage(page, metamask, baseUrl)
-
- await page.goto(baseUrl)
- await page.bringToFront()
-
- await swapPage.connectMetamaskWallet()
- await swapPage.addTokenToMetamask(ADDRESSES.USDT)
- })
-
- beforeEach(async () => {})
-
- afterAll(async () => {
- browser.close()
- })
-
- test.each([['ETH', FUNDING_SOURCE.WALLET, 'USDT', FUNDING_SOURCE.WALLET]])(
- `Complex Path: Should swap from %p %p to %p %p`,
- async (assetA, payFromA, assetB, payFromB) => {
- const payAFromWallet = payFromA === FUNDING_SOURCE.WALLET
- const payBFromWallet = payFromB === FUNDING_SOURCE.WALLET
-
- await swapPage.navigateTo()
-
- const assetABalance = await swapPage.getTokenBalance(assetA, payAFromWallet)
- const assetBBalance = await swapPage.getTokenBalance(assetB, payBFromWallet)
- const assetADepositAmount = (assetABalance * depositPercentage).toFixed(5)
- const assetBDepositAmount = (assetBBalance * depositPercentage).toFixed(5)
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.clickCreateNewPoolButton()
- await createPoolPage.createPool(
- POOL_TYPE.CLASSIC,
- assetA,
- assetB,
- payAFromWallet,
- payBFromWallet,
- assetADepositAmount,
- assetBDepositAmount,
- Fee.LOW
- )
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.clickCreateNewPoolButton()
- await createPoolPage.createPool(
- POOL_TYPE.CLASSIC,
- assetA,
- assetB,
- payAFromWallet,
- payBFromWallet,
- assetADepositAmount,
- assetBDepositAmount,
- Fee.MEDIUM
- )
-
- await swapPage.navigateTo()
-
- const inputTokenBalanceBefore = await swapPage.getTokenBalance(assetA, payAFromWallet)
- const outputTokenBalanceBefore = await swapPage.getTokenBalance(assetB, payBFromWallet)
- if (!(inputTokenBalanceBefore > 0)) throw new Error(`${assetA} wallet balance is 0. Can't execute swap`)
-
- const swapAmount = (inputTokenBalanceBefore * swapPercentage).toFixed(5)
-
- await swapPage.setInputToken(assetA)
- await swapPage.setOutputToken(assetB)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(payAFromWallet)
- await swapPage.setReceiveToWallet(payBFromWallet)
-
- const tradeType = await swapPage.getTradeType()
- expect(tradeType).toBe('trident')
-
- const minOutputAmount = await swapPage.getMinOutputAmount()
-
- await swapPage.confirmSwap(assetA, assetB)
- await swapPage.navigateTo()
-
- const inputTokenBalanceAfter = await swapPage.getTokenBalance(assetA, payAFromWallet)
- const outputTokenBalanceAfter = await swapPage.getTokenBalance(assetB, payBFromWallet)
-
- const intputTokenBalanceDiff = inputTokenBalanceBefore - inputTokenBalanceAfter
- const outputTokenBalanceDiff = outputTokenBalanceAfter - outputTokenBalanceBefore
-
- expect(closeValues(intputTokenBalanceDiff, parseFloat(swapAmount), 1e-9)).toBe(true)
- expect(closeValues(outputTokenBalanceDiff, parseFloat(minOutputAmount), 1e-9)).toBe(true)
- }
- )
-
- test.each([
- ['ETH', FUNDING_SOURCE.WALLET, 'BAT', FUNDING_SOURCE.WALLET, swapPercentage],
- ['ETH', FUNDING_SOURCE.WALLET, 'BAT', FUNDING_SOURCE.WALLET, 0.8],
- ])(`Single Pool: Should swap from %p %p to %p %p`, async (assetA, payFromA, assetB, payFromB, swapPercent) => {
- const payAFromWallet = payFromA === FUNDING_SOURCE.WALLET
- const payBFromWallet = payFromB === FUNDING_SOURCE.WALLET
-
- await swapPage.navigateTo()
-
- const assetABalance = await swapPage.getTokenBalance(assetA, payAFromWallet)
- const assetBBalance = await swapPage.getTokenBalance(assetB, payBFromWallet)
- const assetADepositAmount = (assetABalance * depositPercentage).toFixed(5)
- const assetBDepositAmount = (assetBBalance * 0.7).toFixed(5)
-
- await liquidityPoolsPage.navigateTo()
- await liquidityPoolsPage.clickCreateNewPoolButton()
- await createPoolPage.createPool(
- POOL_TYPE.CLASSIC,
- assetA,
- assetB,
- payAFromWallet,
- payBFromWallet,
- assetADepositAmount,
- assetBDepositAmount,
- Fee.LOW
- )
-
- await swapPage.navigateTo()
-
- const inputTokenBalanceBefore = await swapPage.getTokenBalance(assetA, payAFromWallet)
- const outputTokenBalanceBefore = await swapPage.getTokenBalance(assetB, payBFromWallet)
- if (!(inputTokenBalanceBefore > 0)) throw new Error(`${assetA} wallet balance is 0. Can't execute swap`)
-
- const swapAmount = (inputTokenBalanceBefore * swapPercent).toFixed(5)
-
- await swapPage.setInputToken(assetA)
- await swapPage.setOutputToken(assetB)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(payAFromWallet)
- await swapPage.setReceiveToWallet(payBFromWallet)
-
- const tradeType = await swapPage.getTradeType()
- expect(tradeType).toBe('trident')
-
- const minOutputAmount = await swapPage.getMinOutputAmount()
-
- await swapPage.confirmSwap(assetA, assetB)
- await swapPage.navigateTo()
-
- const inputTokenBalanceAfter = await swapPage.getTokenBalance(assetA, payAFromWallet)
- const outputTokenBalanceAfter = await swapPage.getTokenBalance(assetB, payBFromWallet)
-
- const intputTokenBalanceDiff = inputTokenBalanceBefore - inputTokenBalanceAfter
- const outputTokenBalanceDiff = outputTokenBalanceAfter - outputTokenBalanceBefore
-
- expect(closeValues(intputTokenBalanceDiff, parseFloat(swapAmount), 1e-9)).toBe(true)
- expect(closeValues(outputTokenBalanceDiff, parseFloat(minOutputAmount), 1e-9)).toBe(true)
- })
-
- test.each([['BAT', FUNDING_SOURCE.WALLET, 'USDT', FUNDING_SOURCE.WALLET, swapPercentage]])(
- `Single Path: Should swap from %p %p to %p %p`,
- async (assetA, payFromA, assetB, payFromB, swapPercent) => {
- const payAFromWallet = payFromA === FUNDING_SOURCE.WALLET
- const payBFromWallet = payFromB === FUNDING_SOURCE.WALLET
-
- await swapPage.navigateTo()
- const inputTokenBalanceBefore = await swapPage.getTokenBalance(assetA, payAFromWallet)
- const outputTokenBalanceBefore = await swapPage.getTokenBalance(assetB, payBFromWallet)
- if (!(inputTokenBalanceBefore > 0)) throw new Error(`${assetA} wallet balance is 0. Can't execute swap`)
-
- const swapAmount = (inputTokenBalanceBefore * swapPercent).toFixed(5)
-
- await swapPage.setInputToken(assetA)
- await swapPage.setOutputToken(assetB)
- await swapPage.setAmountIn(swapAmount)
- await swapPage.setPayFromWallet(payAFromWallet)
- await swapPage.setReceiveToWallet(payBFromWallet)
-
- const tradeType = await swapPage.getTradeType()
- expect(tradeType).toBe('trident')
-
- const minOutputAmount = await swapPage.getMinOutputAmount()
-
- await swapPage.confirmSwap(assetA, assetB)
- await swapPage.navigateTo()
-
- const inputTokenBalanceAfter = await swapPage.getTokenBalance(assetA, payAFromWallet)
- const outputTokenBalanceAfter = await swapPage.getTokenBalance(assetB, payBFromWallet)
-
- const intputTokenBalanceDiff = inputTokenBalanceBefore - inputTokenBalanceAfter
- const outputTokenBalanceDiff = outputTokenBalanceAfter - outputTokenBalanceBefore
-
- expect(closeValues(intputTokenBalanceDiff, parseFloat(swapAmount), 1e-9)).toBe(true)
- expect(closeValues(outputTokenBalanceDiff, parseFloat(minOutputAmount), 1e-9)).toBe(true)
- }
- )
-})