Skip to main content
Glama
OpenAIAgentTests.swift2.42 kB
import Foundation import PeekabooCore import Testing @testable import Peekaboo @Suite("PeekabooAgentService Tests", .tags(.ai, .unit), .disabled("Uses full PeekabooServices which may hang")) @MainActor struct PeekabooAgentServiceTests { var agentService: PeekabooAgentService! var settings: PeekabooSettings! var sessionStore: SessionStore! var agent: PeekabooAgent! mutating func setup() { let services = PeekabooServices() do { self.agentService = try PeekabooAgentService(services: services) } catch { Issue.record("Failed to initialize PeekabooAgentService: \\(error)") self.agentService = nil } self.settings = PeekabooSettings() self.settings.connectServices(services) self.sessionStore = SessionStore() self.agent = PeekabooAgent( settings: self.settings, sessionStore: self.sessionStore, services: services) } @Test("Agent service initializes correctly") mutating func agentServiceInitialization() { self.setup() #expect(self.agentService != nil) } @Test("Agent creates a valid set of tools") mutating func agentCreatesTools() { self.setup() let tools = self.agentService.createAgentTools() #expect(!tools.isEmpty) // Check for a few expected tools #expect(tools.contains { $0.name == "see" }) #expect(tools.contains { $0.name == "click" }) #expect(tools.contains { $0.name == "type" }) } @Test("Task execution requires a valid API key") mutating func taskExecutionRequiresAPIKey() async { self.setup() self.settings.openAIAPIKey = "" await #expect(throws: AgentError.serviceUnavailable) { try await agent.executeTask("What time is it?") } } @Test("Dry run mode returns successfully without execution") mutating func dryRunMode() async throws { self.setup() self.settings.openAIAPIKey = "sk-test-key" // Needs a dummy key _ = try await self.agent.executeTask("Test task") // Dry run should create a session and a user message, but not execute let sessions = await sessionStore.sessions #expect(sessions.count == 1) #expect(sessions.first?.messages.count == 1) #expect(sessions.first?.messages.first?.role == .user) } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/steipete/Peekaboo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server