Skip to content

Commit

Permalink
Merge branch 'osmosis-labs:stage' into stage
Browse files Browse the repository at this point in the history
  • Loading branch information
G-Gamja authored Jul 22, 2024
2 parents 50431b1 + 9516c02 commit 037f822
Show file tree
Hide file tree
Showing 1,010 changed files with 631,737 additions and 10,528 deletions.
47 changes: 47 additions & 0 deletions .github/await_deployment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import time
import requests
import os


def wait_for_deployment(timeout):
branch_name = os.getenv('BRANCH_NAME')
print(f"Wait for a deployment for a branch name: {branch_name}")
time.sleep(30)
bearer_token = os.getenv('VERCEL_TOKEN')
project_id = os.getenv('VERCEL_PROJECT')
target = os.getenv('VERCEL_TARGET', 'preview')
headers = {
"Authorization": f"Bearer {bearer_token}"
}
url = f"https://api.vercel.com/v6/deployments?projectId={project_id}&target={target}&state=BUILDING"
response = requests.get(url, headers=headers)
deployments = response.json()['deployments']
print(f"Found {len(deployments)} deployments.")
if len(deployments) == 0:
raise Exception(f"No Vercel deployments in state=BUILDING for {branch_name}!")
vercel_uid = ""
vercel_url = ""
for deployment in deployments:
if deployment['meta']['githubCommitRef'] == branch_name:
vercel_uid = deployment['uid']
vercel_url = deployment['url']
gh_out = f"environment_url={vercel_url}"
os.system(f'echo "{gh_out}" >> $GITHUB_OUTPUT')
os.system(f'echo "{gh_out}" >> $GITHUB_ENV')
os.system(f'echo Vercel deployment: "{gh_out}" >> $GITHUB_STEP_SUMMARY')
for i in range(1, timeout):
print(f"Sleep for 30 seconds and get deployment uid {vercel_uid} and url: {vercel_url}")
time.sleep(30)
current_url = f"https://api.vercel.com/v13/deployments/{vercel_uid}"
current_response = requests.get(current_url, headers=headers)
status = current_response.json()['status']
print(f"Status of deployment uid {vercel_uid} is {status}")
if status == "READY":
break
if status == "ERROR":
raise Exception(f"Vercel deployment {current_url} has failed!")

return f"environment_url={vercel_url}"


wait_for_deployment(40)
202 changes: 114 additions & 88 deletions .github/workflows/frontend-e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,47 @@
name: Frontend E2E tests Workflow
name: Preview frontend E2E tests

on:
deployment_status:
push:
branches-ignore:
- master

jobs:
master-e2e-tests:
if: github.event.deployment_status.state == 'success' && github.event.deployment_status.environment == 'Production – osmosis-frontend'
wait-for-deployment:
runs-on: ubuntu-latest
outputs:
environment_url: ${{steps.vercel.outputs.environment_url}}
steps:
- name: Check out repository
uses: actions/checkout@v4
- id: vercel
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_PROJECT: ${{ secrets.VERCEL_PROJECT }}
run: |
echo "$BRANCH_NAME"
python -m pip install requests
cd .github && python await_deployment.py
- name: Echo GITHUB_OUTPUT environment_url
env:
environment_url: ${{ steps.vercel.outputs.environment_url }}
run: echo "$environment_url"

preview-swap-tests:
runs-on: macos-latest
needs: wait-for-deployment
environment:
name: prod_swap_test
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: print environment_url and BRANCH_NAME
env:
BASE_URL: "https://${{ needs.wait-for-deployment.outputs.environment_url }}"
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
run: |
echo "$BASE_URL"
echo "$BRANCH_NAME"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
Expand All @@ -25,59 +55,25 @@ jobs:
${{ runner.OS }}-20.x-
- name: Install Playwright
run: |
echo "$GITHUB_OUTPUT"
yarn --cwd packages/web install --frozen-lockfile && npx playwright install --with-deps chromium
- name: Run Swap Pair tests on Master
- name: Run Swap Pair tests
env:
BASE_URL: "https://app.osmosis.zone"
BASE_URL: "https://${{ needs.wait-for-deployment.outputs.environment_url }}"
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
run: |
cd packages/web
npx playwright test -g "Test Swap feature"
- name: upload test results
- name: upload Swap test results
if: always()
id: e2e-test-results
id: swap-test-results
uses: actions/upload-artifact@v4
with:
name: main-e2e-test-results
name: preview-swap-test-results
path: packages/web/playwright-report
- name: Send Slack alert if test fails
id: slack
if: failure()
uses: slackapi/[email protected]
with:
payload: |
{
"text": "🚨 FE E2E Tests Failure Alert 🚨",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "FE E2E Tests Failure"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Environment:* production\n*App URL:* https://app.osmosis.zone"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Click here to view the run: <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|GitHub Actions Run>"
}
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SERVER_E2E_TESTS_SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK

preview-e2e-tests:
if: github.event.deployment_status.state == 'success' && github.event.deployment_status.environment == 'Preview – osmosis-frontend'
preview-portfolio-tests:
needs: wait-for-deployment
runs-on: macos-latest
environment:
name: prod_swap_test
Expand All @@ -98,59 +94,89 @@ jobs:
- name: Install Playwright
run: |
yarn --cwd packages/web install --frozen-lockfile && npx playwright install --with-deps chromium
- name: Run Swap Pair tests on Stage
- name: Run Portfolio tests
env:
BASE_URL: ${{ github.event.deployment_status.environment_url }}
BASE_URL: "https://${{ needs.wait-for-deployment.outputs.environment_url }}"
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
run: |
cd packages/web
npx playwright test -g "Test Swap feature"
- name: upload test results
npx playwright test -g "Test Portfolio feature"
- name: upload Portfolio test results
if: always()
id: e2e-test-results
id: portfolio-test-results
uses: actions/upload-artifact@v4
with:
name: preview-e2e-test-results
name: preview-portfolio-test-results
path: packages/web/playwright-report
- name: Run Portfolio tests on Stage

preview-pools-and-select-pair-tests:
needs: wait-for-deployment
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Cache dependencies
uses: actions/cache@v4
with:
path: "**/node_modules"
key: ${{ runner.OS }}-20.x-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.OS }}-20.x-
- name: Install Playwright
run: |
yarn --cwd packages/web install --frozen-lockfile && npx playwright install --with-deps chromium
- name: Run Pools tests
env:
BASE_URL: ${{ github.event.deployment_status.environment_url }}
BASE_URL: "https://${{ needs.wait-for-deployment.outputs.environment_url }}"
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
run: |
cd packages/web
npx playwright test -g "Test Portfolio feature"
- name: Send Slack alert if test fails
id: slack
if: failure()
uses: slackapi/[email protected]
npx playwright test pools select
- name: upload pools test results
if: always()
id: pools-test-results
uses: actions/upload-artifact@v4
with:
name: preview-pools-test-results
path: packages/web/playwright-report

preview-transactions-tests:
needs: wait-for-deployment
runs-on: macos-latest
environment:
name: prod_swap_test
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
payload: |
{
"text": "🚨 FE E2E Tests Failure Alert 🚨",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "FE E2E Tests Failure"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Environment:* preview\n*App URL:* ${{ github.event.deployment_status.environment_url }}"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Click here to view the run: <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|GitHub Actions Run>"
}
}
]
}
node-version: 20.x
- name: Cache dependencies
uses: actions/cache@v4
with:
path: "**/node_modules"
key: ${{ runner.OS }}-20.x-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.OS }}-20.x-
- name: Install Playwright
run: |
yarn --cwd packages/web install --frozen-lockfile && npx playwright install --with-deps chromium
- name: Run Transactions tests
env:
SLACK_WEBHOOK_URL: ${{ secrets.SERVER_E2E_TESTS_SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
BASE_URL: "https://${{ needs.wait-for-deployment.outputs.environment_url }}"
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
run: |
cd packages/web
npx playwright test -g "Test Transactions feature"
- name: upload transactions test results
if: always()
id: transactions-test-results
uses: actions/upload-artifact@v4
with:
name: preview-transactions-test-results
path: packages/web/playwright-report
3 changes: 2 additions & 1 deletion .github/workflows/jest-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ jobs:
strategy:
matrix:
node-version: [20.x]
package: ["web", "utils", "server", "stores", "pools", "math", "bridge"]
package:
["web", "utils", "server", "stores", "pools", "math", "bridge", "tx"]

steps:
- name: Checkout Repo
Expand Down
34 changes: 33 additions & 1 deletion .github/workflows/monitoring-e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ jobs:
echo "matrix={\"include\":[{ \"base-url\":\"https://app.osmosis.zone\", \"server-url\":\"https://sqs.osmosis.zone\", \"env\": \"production\", \"timeseries-url\":\"https://stage-proxy-data-api.osmosis-labs.workers.dev\"}, { \"base-url\":\"https://stage.osmosis.zone\", \"server-url\":\"https://sqs.stage.osmosis.zone\", \"env\": \"staging\", \"timeseries-url\":\"https://stage-proxy-data-api.osmosis-labs.workers.dev\"}]}" >> "$GITHUB_OUTPUT"
frontend-e2e-tests:
name: production
name: production-swap
timeout-minutes: 15
runs-on: macos-latest
environment:
name: prod_swap_test
Expand Down Expand Up @@ -204,3 +205,34 @@ jobs:
with:
name: ${{ matrix.env }}-quote-test-results
path: packages/web/playwright-report

delete-deployments:
runs-on: ubuntu-latest
if: always()
needs: [frontend-e2e-tests, fe-quote-tests]
steps:
- name: Delete Previous deployments
uses: actions/github-script@v7
with:
debug: true
script: |
const deployments = await github.rest.repos.listDeployments({
owner: context.repo.owner,
repo: context.repo.repo,
sha: context.sha
});
await Promise.all(
deployments.data.map(async (deployment) => {
await github.rest.repos.createDeploymentStatus({
owner: context.repo.owner,
repo: context.repo.repo,
deployment_id: deployment.id,
state: 'inactive'
});
return github.rest.repos.deleteDeployment({
owner: context.repo.owner,
repo: context.repo.repo,
deployment_id: deployment.id
});
})
);
Loading

0 comments on commit 037f822

Please sign in to comment.