SuperAPI AI 工具集

stably-sdk-rules

测试与质量

查看项目

更新于 10-16 02:12

技能介绍

用途 Stably SDK Rules 用于在编写或修改基于 Stably Playwright SDK 的测试时提供规则指导。

主要能力与规则 首选原生 Playwright 处理确定性的操作与断言,速度更快、成本更低;当 Playwright 变得脆弱时,优先考虑可靠性而非成本。 在画布(canvas)、基于坐标的拖拽/点击或不稳定的多步骤流程中,使用 agent.act()。 需要动态视觉断言时,使用 expect(...).aiAssert(),并保持提示词具体。 需要从视觉提取数据时,使用 page.extract() 或 locator.extract()。 标准定位器难以实现语义选择器时,使用 page.getLocatorsByAI(),该功能要求 Playwright >= 1.54.1。 使用 Inbox 处理 OTP、魔法链接、验证邮件等流程。 所有提示词必须自包含,不得依赖隐含的先前上下文。agent.act() 任务应保持小粒度,循环、计算与条件在代码中完成。 仅当视口外内容重要时才使用 fullPage: true。所有定位器交互都应加 .describe("..."),以便追踪可读性。 邮件隔离方面,每个测试使用唯一的 Inbox.build({ suffix }),并在结束后清理。

使用方式 安装命令:npm install -D @playwright/test @stablyai/playwright-test @stablyai/email 环境变量:export STABLY_API_KEY=YOUR_KEY、export STABLY_PROJECT_ID=YOUR_PROJECT_ID。也可通过 setApiKey("YOUR_KEY") 以编程方式设置 API key。 导入方式:从 "@stablyai/playwright-test" 导入 { test, expect },从 "@stablyai/email" 导入 { Inbox }。 断言选择:优先使用 Playwright 断言,动态或视觉密集型检查使用 aiAssert。交互选择:确定性步骤使用 Playwright,脆弱或语义任务(尤其 canvas/坐标)使用 agent.act。提示词需包含明确的目标、意图与约束,跨步骤数据通过变量传递,而非模糊引用。 提取示例:const orderId = await page.extract("Extract the order ID from the first row");带 schema 时可配合 zod 使用 page.extract("Get revenue and active users", { schema: Schema })。 agent.act 示例:await agent.act("Find the first pending order and mark it as shipped", { page })。 Google 认证流程推荐使用 import { authWithGoogle } from "@stablyai/playwright-test/auth",所需环境变量为 GOOGLE_AUTH_EMAIL、GOOGLE_AUTH_PASSWORD、GOOGLE_AUTH_OTP_SECRET,且仅应使用专用的测试 Google 账号。

Inbox 邮件隔离 安装:npm install -D @stablyai/email,需要 STABLY_API_KEY 与 STABLY_PROJECT_ID 环境变量(或传入 Inbox.build())。 构建:const inbox = await Inbox.build({ suffix: test-${Date.now()} }),地址形如 "my-org+test-1706621234567@mail.stably.ai"。Inbox.build 选项包括 suffix(字符串,用于测试隔离)、apiKey(默认取环境变量)、projectId(默认取环境变量)。每个测试都应使用唯一 suffix 以支持并行隔离,inbox 会自动过滤其创建时间之前收到的邮件。 等待邮件:inbox.waitForEmail({ from, subject, subjectMatch, timeoutMs, pollIntervalMs }),其中 subjectMatch 可为 "exact" 或 "contains"(默认),timeoutMs 默认 120000(2 分钟),pollIntervalMs 默认 3000(3 秒)。超时未匹配会抛出 EmailTimeoutError。 从邮件提取:返回 { data, reason },失败时抛出 EmailExtractionError。支持字符串提取,也支持配合 zod schema 的结构化提取。 Inbox 属性:address(完整邮箱地址,含 suffix)、suffix、createdAt(创建时间,之前邮件会被自动过滤)。 其他方法:listEmails(options) 支持 from、subject、subjectMatch、limit(默认 20,最大 100)、cursor、since、includeOlder;另有 getEmail(id)、deleteEmail(id)、deleteAllEmails()。 Email 对象属性包括 id、mailbox、from、to、subject、receivedAt、text、html。 Playwright Fixture 模式:通过 base.extend 定义 inbox fixture,在测试结束时调用 inbox.deleteAllEmails() 清理。

查找组织邮箱地址 邮箱地址可在 Stably 仪表盘的 Settings > Email Inbox 查看,含完整地址与复制按钮;代码中调用 Inbox.build() 后 inbox.address 返回完整地址。地址格式为 {org-name}@mail.stably.ai,如需加入允许列表应将 mail.stably.ai 加入邮件服务商允许列表。

适用场景 适用于编写或修改使用 Stably AI 功能的 Playwright 测试,包括视觉断言、画布交互、视觉数据提取、语义定位、邮件 OTP/验证流程以及 Google 认证流程。

限制 资料未说明该技能的收费、价格或其他平台支持情况,相关事实暂未提供。getLocatorsByAI 需 Playwright >= 1.54.1。aiAssert 可能较慢或不稳定,应限定定位器范围、收紧提示词并避免不必要的 fullPage: true。agent.act 失败时可拆分为更小任务、传入明确约束,仅在需要时提高 maxCycles。邮件超时应检查 subject/from 过滤并使用唯一的 inbox suffix。更多参考见 Stably 文档 https://docs.stably.ai 与技能内的完整参考文件。