E2E套件中,最易出错的测试莫过于"用户注册,通过邮件验证码完成引导"。何故?盖因邮件异步,测试运行者不得见,而两者之间的桥梁乃六十行轮询辅助程序,人人皆写一次,无人愿继之维护。
吾已将AssertKit交付,以绝此桥梁。
八行测试代码之戏言:
import { test } from "@assertkit/playwright";
test("signup with OTP", async ({ page, inbox }) => {
await page.goto("/signup");
await page.getByLabel("Email").fill(inbox.address);
await page.getByRole("button", { name: "Sign up" }).click();
const otp = await inbox.waitForOtp({ from: "noreply" });
await page.getByLabel("Code").fill(otp);
});
如是而已。无轮询。无正则。无瑕疵。
其理如何
inbox之设,予每试以独一易弃之址,若foo-1717xxx@assertkit.com是也。-
waitForOtp久候 AssertKit 之服务器,时达廿五秒之久。 - 服务器静待此地址之入信,析取 OTP 形之码,以类属之字段返之。
- 尔之测试得字符串,非解析之邮件体也。
Cypress 之用户: 同一包,同一形:
import "@assertkit/cypress";
cy.uniqueInbox().then((inbox) => {
cy.visit("/signup");
cy.get('input[name="email"]').type(inbox.address);
cy.get('button[type="submit"]').click();
cy.waitForOtp(inbox.local).then((otp) => {
cy.get('input[name="otp"]').type(otp);
});
});
试其现场演示(无需注册):
https://assertkit.com/demo
该演示启一真实长轮询,对真实等待端点。一
预制之电子邮件三秒后至。汝将睹OTP实时至.
免费试之:
- 二npm包皆MIT,无运行时依赖
- 免费公开API无需账户即用
- 订阅尚未开启——有/beta计划供早期访问,需管理员批准
技术栈(若有好奇者):Next.js 16 App Router,Drizzle +
Neon Postgres,Supabase Realtime以实现亚百毫秒广播,CloudMailin
用于入站MX,Resend用于出站(DKIM签名),Upstash KV用于
速率限制,argon2id + RFC 6238 TOTP用于认证。
独行创始人,乐应诸问。












