Skip to content

Commit

Permalink
feat(e2e): Update e2e tests for work with web-core (#614)
Browse files Browse the repository at this point in the history
  • Loading branch information
yagopv authored Jan 16, 2023
1 parent 9c44055 commit a8aec17
Show file tree
Hide file tree
Showing 16 changed files with 298 additions and 267 deletions.
58 changes: 29 additions & 29 deletions .github/workflows/safe-apps-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
baseUrl:
description: 'Safe Web URL'
required: true
default: 'http://gnosis-safe.io/app'
default: 'https://app.safe.global'
chainId:
description: 'Chain Id'
required: true
Expand All @@ -32,18 +32,18 @@ jobs:
# let's make sure our tests pass on Chrome browser
name: E2E on Chrome
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: Mainnet
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '1' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'eth' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0xfF501B324DC6d78dC9F983f140B9211c3EdB4dc7' }}
Expand All @@ -52,16 +52,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: Gnosis Chain
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '100' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'gno' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0xfca7Da0a0290D7BcBEcD93bE124756fC9B6F8E6A' }}
Expand All @@ -70,16 +70,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: Polygon
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '137' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'matic' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0x6D04edC44F7C88faa670683036edC2F6FC10b86e' }}
Expand All @@ -88,16 +88,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: BNB Smart Chain
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '56' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'bnb' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0x1D28a316431bAFf410Fe53398c6C5BD566032Eec' }}
Expand All @@ -106,16 +106,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: Arbitrum
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '42161' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'arb1' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0x82A604a3a4260ce16fA0257fBA96336Af3b63Dbc' }}
Expand All @@ -124,16 +124,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: Aurora
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '1313161554' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'aurora' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0xCEA454dD3d76Da856E72C3CBaDa8ee6A789aD167' }}
Expand All @@ -142,16 +142,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: Avalanche
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '43114' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'avax' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0x480e5A3E90a3fF4a16AECCB5d638fAba96a15c28' }}
Expand All @@ -160,16 +160,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: Optimism
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '10' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'oeth' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0xeb1116466B7eB1372cD1FAf5C26134db69A94cDA' }}
Expand All @@ -178,16 +178,16 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true

- uses: cypress-io/github-action@v2
- uses: cypress-io/github-action@v5
name: Volta
with:
browser: chrome
record: true
spec: cypress/integration/safe-apps-check.spec.js
spec: cypress/e2e/safe-apps-check.spec.cy.js
env:
CI: 'true'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://gnosis-safe.io/app' }}
CYPRESS_WEB_BASE_URL: ${{ github.event.inputs.baseUrl || 'http://app.safe.global' }}
CYPRESS_CHAIN_ID: ${{ github.event.inputs.chainId || '73799' }}
CYPRESS_NETWORK_PREFIX: ${{ github.event.inputs.networkPrefix || 'vt' }}
CYPRESS_TESTING_SAFE_ADDRESS: ${{ github.event.inputs.safeAddress || '0x6eaD891f8a756edBf248A5546ff51E01609C0DaB' }}
Expand Down
89 changes: 62 additions & 27 deletions .github/workflows/safe-apps-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,56 +5,91 @@ on:
branches:
- development
- main
schedule:
# At 9:00 on every day-of-week from Monday through Friday
- cron: '0 9 * * 1-5'

jobs:
safe-apps-e2e:
runs-on: ubuntu-20.04
# let's make sure our tests pass on Chrome browser
name: E2E on Chrome
e2e:
runs-on: ubuntu-latest
name: Execute E2E tests
steps:
- uses: actions/checkout@v2
- name: Cancel previous runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout web-core
uses: actions/checkout@v3
with:
repository: safe-global/web-core
ref: main
path: web-core

- name: Yarn install web-core
working-directory: web-core
run: yarn install

- name: Yarn cache web-core modules
uses: actions/cache@v3
with:
path: 'web-core/**/node_modules'
key: web-core-modules-${{ hashFiles('**/yarn.lock') }}

- name: Build web-core
working-directory: web-core
run: yarn build && yarn export
env:
NEXT_PUBLIC_INFURA_TOKEN: ${{ secrets.CYPRESS_INFURA_TOKEN }}
NEXT_PUBLIC_SAFE_APPS_INFURA_TOKEN: ${{ secrets.CYPRESS_INFURA_TOKEN }}
NEXT_PUBLIC_TENDERLY_ORG_NAME: ${{ secrets.REACT_APP_TENDERLY_ORG_NAME }}
NEXT_PUBLIC_TENDERLY_PROJECT_NAME: ${{ secrets.REACT_APP_TENDERLY_PROJECT_NAME }}
NEXT_PUBLIC_TENDERLY_SIMULATE_ENDPOINT_URL: ${{ secrets.REACT_APP_TENDERLY_SIMULATE_ENDPOINT_URL }}
NEXT_PUBLIC_CYPRESS_MNEMONIC: ${{ secrets.CYPRESS_MNEMONIC }}

- name: Serve web-core
working-directory: web-core
run: |
yarn serve &
- name: Set PR Safe Apps base URL
run: |
echo "SAFE_APPS_BASE_URL=https://pr${{ github.event.number }}--safereactapps.review-react-hr.5afe.dev" >> $GITHUB_ENV
echo "BASE_URL=https://safe-web.dev.5afe.dev/app" >> $GITHUB_ENV
if: github.ref != 'refs/heads/development'

- name: Set development Safe Apps base URL
run: |
echo "SAFE_APPS_BASE_URL=https://safe-apps.dev.5afe.dev" >> $GITHUB_ENV
echo "BASE_URL=https://safe-web.dev.5afe.dev/app" >> $GITHUB_ENV
if: github.ref == 'refs/heads/development'

- name: Set main Safe Apps base URL
run: |
echo "SAFE_APPS_BASE_URL=https://apps.gnosis-safe.io" >> $GITHUB_ENV
echo "BASE_URL=https://gnosis-safe.io/app" >> $GITHUB_ENV
if: ${{ github.ref == 'refs/heads/main' || github.event.schedule == '0 9 * * 1-5' }}
- uses: cypress-io/github-action@v2

- name: Checkout safe-react-apps
uses: actions/checkout@v3
with:
repository: safe-global/safe-react-apps
path: apps

- name: Execute E2E tests
uses: cypress-io/github-action@v5
with:
browser: chrome
record: true
spec: cypress/integration/drain-account/drain.spec.js,cypress/integration/tx-builder/tx-builder.spec.js
spec: cypress/e2e/drain-account/drain.spec.cy.js,cypress/e2e/tx-builder/tx-builder.spec.cy.js
wait-on: 'http://localhost:8080'
working-directory: apps
env:
CI: 'true'
CYPRESS_WEB_BASE_URL: 'http://localhost:8080'
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_BASE_URL: ${{env.BASE_URL}}
CYPRESS_SAFE_APPS_BASE_URL: ${{env.SAFE_APPS_BASE_URL}}
CYPRESS_CHAIN_ID: '4'
CYPRESS_NETWORK_PREFIX: 'rin'
CYPRESS_TESTING_SAFE_ADDRESS: '0x3bc83f41490BfD25bBB44eBCAc3761DFF4Ae50DA'
CYPRESS_CHAIN_ID: '5'
CYPRESS_NETWORK_PREFIX: 'gor'
CYPRESS_TESTING_SAFE_ADDRESS: '0x168ca275d1103cb0a30980813140053c7566932F'
CYPRESS_CLIENT_GATEWAY_BASE_URL: 'https://safe-client.safe.global'
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
- uses: actions/upload-artifact@v2
if: always()
with:
name: cypress-screenshots
path: cypress/screenshots
- uses: actions/upload-artifact@v2
if: always()
with:
name: cypress-videos
path: cypress/videos
CYPRESS_DRAIN_SAFE_URL: ${{ env.SAFE_APPS_BASE_URL }}/drain-safe
CYPRESS_TX_BUILDER_URL: ${{ env.SAFE_APPS_BASE_URL }}/tx-builder
continue-on-error: false
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ To run them it will be necessary to provide the following ENV parameters, that c
Example:

```
CYPRESS_BASE_URL=https://gnosis-safe.io/app
CYPRESS_WEB_BASE_URL=https://app.safe.global
CYPRESS_CHAIN_ID=1
CYPRESS_NETWORK_PREFIX=rin
CYPRESS_TESTING_SAFE_ADDRESS=0x0000000000000000000000000000000000000000
Expand Down
53 changes: 53 additions & 0 deletions cypress.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { defineConfig } from 'cypress'

const axios = require('axios')
const { sendSlackMessage } = require('./cypress/lib/slack')

require('dotenv').config()

export default defineConfig({
projectId: 'okn21k',
chromeWebSecurity: false,
modifyObstructiveCode: false,
video: true,
retries: {
runMode: 2,
openMode: 0,
},
env: {
SAFE_APPS_BASE_URL: process.env.CYPRESS_SAFE_APPS_BASE_URL,
CHAIN_ID: process.env.CYPRESS_CHAIN_ID,
NETWORK_PREFIX: process.env.CYPRESS_NETWORK_PREFIX,
TESTING_SAFE_ADDRESS: process.env.CYPRESS_TESTING_SAFE_ADDRESS,
DRAIN_SAFE_URL: process.env.CYPRESS_DRAIN_SAFE_URL,
TX_BUILDER_URL: process.env.CYPRESS_TX_BUILDER_URL,
},
e2e: {
baseUrl: process.env.CYPRESS_WEB_BASE_URL,
async setupNodeEvents(on, config) {
on('after:run', sendSlackMessage)
on('task', {
log(message) {
console.log(message)
return null
},
})

let safeAppsList

try {
safeAppsList = await axios.get(
`${process.env.CYPRESS_CLIENT_GATEWAY_BASE_URL}/v1/chains/${
process.env.CYPRESS_CHAIN_ID
}/safe-apps?client_url=${encodeURIComponent(process.env.CYPRESS_WEB_BASE_URL)}`,
)
} catch (e) {
console.log('Unable to fetch the default list: ', e)
}

config.env.SAFE_APPS_LIST = safeAppsList.data

return config
},
},
})
10 changes: 0 additions & 10 deletions cypress.json

This file was deleted.

Loading

0 comments on commit a8aec17

Please sign in to comment.