mission-control/tests/openclaw-harness.spec.ts

57 lines
1.9 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { API_KEY_HEADER } from './helpers'
const EXPECT_GATEWAY = process.env.E2E_GATEWAY_EXPECTED === '1'
test.describe('OpenClaw Offline Harness', () => {
test('capabilities expose OpenClaw state dir/config in offline test mode', async ({ request }) => {
const res = await request.get('/api/status?action=capabilities', {
headers: API_KEY_HEADER,
})
expect(res.status()).toBe(200)
const body = await res.json()
expect(body.openclawHome).toBe(true)
expect(Boolean(body.claudeHome)).toBeTruthy()
expect(Boolean(body.gateway)).toBe(EXPECT_GATEWAY)
})
test('sessions API reads fixture sessions without OpenClaw install', async ({ request }) => {
const res = await request.get('/api/sessions', {
headers: API_KEY_HEADER,
})
expect(res.status()).toBe(200)
const body = await res.json()
expect(Array.isArray(body.sessions)).toBe(true)
expect(body.sessions.length).toBeGreaterThan(0)
expect(body.sessions[0]).toHaveProperty('agent')
expect(body.sessions[0]).toHaveProperty('tokens')
})
test('cron API reads fixture jobs', async ({ request }) => {
const res = await request.get('/api/cron?action=list', {
headers: API_KEY_HEADER,
})
expect(res.status()).toBe(200)
const body = await res.json()
expect(Array.isArray(body.jobs)).toBe(true)
expect(body.jobs.length).toBeGreaterThan(0)
expect(body.jobs[0]).toHaveProperty('name')
expect(body.jobs[0]).toHaveProperty('schedule')
})
test('gateway config API reads fixture config', async ({ request }) => {
const res = await request.get('/api/gateway-config', {
headers: API_KEY_HEADER,
})
expect(res.status()).toBe(200)
const body = await res.json()
expect(typeof body.path).toBe('string')
expect(body.path.endsWith('openclaw.json')).toBe(true)
expect(body.config).toHaveProperty('agents')
})
})