package main // Go 服务端入口,触发 Workflow import ( "context" "fmt" "log" "time" "server/gen/pb" // 替换为你的模块路径 "server/workflow" "github.com/google/uuid" "go.temporal.io/sdk/client" ) func main() { // 创建 Temporal 客户端 c, err := client.Dial(client.Options{ HostPort: client.Default : TemporalClientPort, // 根据你的 Temporal Server 配置 }) if err != nil { log.Fatalf("Unable to create Temporal client: %v", err) } defer c.Close() // 模拟一个触发测试的事件 (例如来自 Web UI 或 CI/CD) runID := uuid.New().String() testInput := &pb.TestRunInput{ RunId: runID, EnvironmentUrl: "https://example.com", Tags: []string{"smoke", "critical"}, RunApiTests: true, RunUiTests: true, } workflowOptions := client.StartWorkflowOptions{ ID: "test_workflow_" + runID, TaskQueue: "test-task-queue", // 保持与 Python Worker 一致 } fmt.Printf("Starting TestRunWorkflow for run ID: %s\n", runID) we, err := c.ExecuteWorkflow(context.Background(), workflowOptions, workflow.TestRunWorkflow, testInput) if err != nil { log.Fatalf("Unable to execute workflow: %v", err) } fmt.Printf("Workflow started. Workflow ID: %s, Run ID: %s\n", we.GetID(), we.GetRunID()) // 等待 Workflow 完成并获取结果 var result pb.TestRunOutput err = we.Get(context.Background(), &result) if err != nil { log.Fatalf("Unable to get workflow result: %v", err) } fmt.Printf("Workflow finished. Overall Success: %t, Message: %s\n", result.OverallSuccess, result.CompletionMessage) fmt.Printf("API Test Results: %+v\n", result.ApiResults) fmt.Printf("UI Test Results: %+v\n", result.UiResults) // 后续可以根据 result 生成报告、发送通知等 }