Files
gridpilot.gg/tests/integration/infrastructure/automation/CarsFlow.integration.test.ts
2025-12-11 21:06:25 +01:00

38 lines
1.5 KiB
TypeScript

import { describe, test, expect } from 'vitest'
import { PlaywrightAutomationAdapter } from 'packages/automation/infrastructure/adapters/automation'
describe('CarsFlow integration', () => {
test('adapter emits panel-attached then action-started then action-complete for performAddCar', async () => {
const adapter = new PlaywrightAutomationAdapter({})
const received: Array<{ type: string }> = []
adapter.onLifecycle?.((e) => {
received.push({ type: (e as { type: string }).type })
})
// Use mock page fixture: minimal object with required methods
const mockPage = {
waitForSelector: async () => {},
evaluate: async () => {},
waitForTimeout: async () => {},
click: async () => {},
setDefaultTimeout: () => {},
}
// call attachPanel which emits panel-attached and then action-started
await adapter.attachPanel(mockPage, 'add-car')
// simulate complete event via internal lifecycle emitter
await (adapter as unknown as { emitLifecycle: (ev: { type: string; actionId: string; timestamp: number }) => Promise<void> }).emitLifecycle(
{
type: 'action-complete',
actionId: 'add-car',
timestamp: Date.now(),
},
)
const types = received.map(r => r.type)
expect(types.indexOf('panel-attached')).toBeGreaterThanOrEqual(0)
expect(types.indexOf('action-started')).toBeGreaterThanOrEqual(0)
expect(types.indexOf('action-complete')).toBeGreaterThanOrEqual(0)
})
})