Add bridge lane health API and config-ready lane UI for Tier A Week 3.
Probe LINK balances on CCIP bridge contracts, expose proof-transfer metadata on bridge status, and render funded/unfunded lane health on /bridge with extended smoke coverage. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -59,6 +59,10 @@ echo "✅ Docs bundle prepared"
|
||||
echo "=== Step 3: Upload artifacts ==="
|
||||
scp -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$TMP_DIR/explorer-config-api" root@"$PROXMOX_HOST":/tmp/explorer-config-api
|
||||
scp -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$TMP_DIR/explorer-ai-docs.tar.gz" root@"$PROXMOX_HOST":/tmp/explorer-ai-docs.tar.gz
|
||||
PROOF_JSON="$REPO_ROOT/reports/status/bridge-lane-proof-transfers-latest.json"
|
||||
if [ -f "$PROOF_JSON" ]; then
|
||||
scp -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$PROOF_JSON" root@"$PROXMOX_HOST":/tmp/bridge-lane-proof-transfers.json
|
||||
fi
|
||||
echo "✅ Artifacts uploaded"
|
||||
|
||||
echo "=== Step 4: Install backend, refresh docs, and ensure env ==="
|
||||
@@ -91,8 +95,11 @@ if [ -z "$DB_URL" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
pct exec "$VMID" -- bash -lc 'mkdir -p /opt/explorer-ai-docs /etc/systemd/system/explorer-config-api.service.d'
|
||||
pct exec "$VMID" -- bash -lc 'mkdir -p /opt/explorer-ai-docs /etc/systemd/system/explorer-config-api.service.d /opt/explorer-bridge-status'
|
||||
pct push "$VMID" /tmp/explorer-ai-docs.tar.gz /tmp/explorer-ai-docs.tar.gz --perms 0644
|
||||
if [ -f /tmp/bridge-lane-proof-transfers.json ]; then
|
||||
pct push "$VMID" /tmp/bridge-lane-proof-transfers.json /opt/explorer-bridge-status/proof-transfers.json --perms 0644
|
||||
fi
|
||||
pct push "$VMID" /tmp/explorer-config-api /usr/local/bin/explorer-config-api.new --perms 0755
|
||||
|
||||
pct exec "$VMID" -- env \
|
||||
@@ -181,6 +188,16 @@ else
|
||||
rm -f /etc/systemd/system/explorer-config-api.service.d/walletconnect.conf
|
||||
fi
|
||||
|
||||
cat > /etc/systemd/system/explorer-config-api.service.d/bridge-lanes.conf <<'BRIDGEEOF'
|
||||
[Service]
|
||||
Environment=RPC_URL=http://192.168.11.211:8545
|
||||
Environment="MISSION_CONTROL_EXTRA_RPCS=gnosis|https://rpc.gnosischain.com|100
|
||||
cronos|https://evm.cronos.org|25
|
||||
celo|https://forno.celo.org|42220
|
||||
wemix|https://api.wemix.com|1111"
|
||||
Environment=MISSION_CONTROL_PROOF_TRANSFERS_JSON=/opt/explorer-bridge-status/proof-transfers.json
|
||||
BRIDGEEOF
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl restart explorer-config-api
|
||||
sleep 2
|
||||
|
||||
@@ -45,12 +45,22 @@ test.describe('Explorer sprint smoke', () => {
|
||||
await expect(page.getByText(/CCIP route catalog/i).first()).toBeVisible({ timeout: 15000 })
|
||||
await expect(page.getByText(/Wemix/i).first()).toBeVisible({ timeout: 15000 })
|
||||
await expect(page.getByText(/Bridge Freshness Context/i).first()).toBeVisible({ timeout: 10000 })
|
||||
await expect(page.getByText(/Config-ready lane health/i).first()).toBeVisible({ timeout: 10000 })
|
||||
await expect(page.getByText(/unfunded|funded/i).first()).toBeVisible({ timeout: 10000 })
|
||||
})
|
||||
|
||||
test('posture glossary doc page loads', async ({ page }) => {
|
||||
await page.goto(`${EXPLORER_URL}/docs/posture-glossary`, { waitUntil: 'domcontentloaded', timeout: 30000 })
|
||||
await expect(page.getByRole('heading', { name: /Posture glossary/i })).toBeVisible({ timeout: 15000 })
|
||||
await expect(page.getByText(/x402 readiness/i).first()).toBeVisible({ timeout: 10000 })
|
||||
await expect(page.getByText(/transportActive/i).first()).toBeVisible({ timeout: 10000 })
|
||||
})
|
||||
|
||||
test('posture glossary drawer opens from docs badges', async ({ page }) => {
|
||||
await page.goto(`${EXPLORER_URL}/docs/posture-glossary`, { waitUntil: 'domcontentloaded', timeout: 30000 })
|
||||
await page.getByRole('button', { name: /^GRU$/i }).click()
|
||||
await expect(page.getByRole('dialog')).toBeVisible({ timeout: 10000 })
|
||||
await expect(page.getByText(/Methodology/i).first()).toBeVisible({ timeout: 10000 })
|
||||
})
|
||||
|
||||
test('public API access doc page loads', async ({ page }) => {
|
||||
|
||||
Reference in New Issue
Block a user