先说我们的建议。 Proxy Mail QA 是我们做的,所以我们并不中立。对于简短的注册表单(一个邮箱、一个密码,可能还有姓名),我们只推荐它做一件事:每次尝试都提供一个新的测试地址,并接收随后的验证邮件,无论你是用 Proxy Mail QA for Chrome 手动检查、通过 AI 智能体,还是在自动化测试中。下面清单的大部分内容根本不需要任何产品。Proxy Mail QA 不审查布局或文案,也不会替智能体或测试填写或提交表单:它们会自己完成。
检查清单
邮箱字段
- 它是带有
autocomplete="email"的type="email",因此手机会显示带 @ 的键盘,浏览器会推荐正确的地址。 - 它接受有效但不常见的地址:大写字母、加号标签(
jane+acme@mailclub.dev)、撇号(o'brien@mailclub.dev)。它拒绝没有 @ 或有两个 @ 的地址。 - 已注册的地址会得到合理的回应:要么是“你已经有账号了”并附带登录链接,要么如果你不想透露谁有账号,无论如何都显示“请查看你的邮箱”。
密码字段
- 规则在用户输入前就会显示,并且与服务器执行的规则一致。
- 它是带有
autocomplete="new-password"的type="password",允许粘贴,并且可以显示已输入的内容。 - 太短的密码会在字段处报错,并说明规则。(如果没有,请参阅 为什么我的注册表单不显示密码错误?)
- 长密码(64 个字符)会被接受,之后可以用它登录。
提交
- 点击一次只创建一个账号、只发送一封邮件,即使按钮被按了两次。
- 按钮会显示正在处理,服务器返回的错误会显示在页面上,而不是消失。
邮件
- 它会在一分钟内到达。
- 其中的链接指向你正在测试的网站,而不是
localhost或生产环境,且其中声明的有效期属实。 - 验证码或链接可以完成注册,并且只能使用一次。
手动操作,大约十分钟
- 安装 Proxy Mail QA for Chrome,打开你的注册页面,并在其弹出窗口中选择 Turn on for this site。
- 点击邮箱字段中的 Proxy Mail QA 按钮,用一个新的测试账号填写表单:邮箱、姓名(如果有)以及符合该字段规则的密码。
- 对于检查 6 和 7,点击密码字段中的钥匙按钮,打开其卡片中的 Edge-case password 列表(“Should be accepted”、“Should be rejected”),然后试几个。对于检查 2,在提交前给字段中的地址加上加号标签:发往
+anything的邮件仍会到达同一个测试收件箱,并显示在应用中而不是页面中。 - 提交。邮件到达后,验证码会显示在页面中并带有 Fill 和 Copy,或者链接会带有 Open。
- 在 应用 中完整阅读一遍邮件,指向
localhost的链接会在该地址所在行被标记出来。
使用 AI 智能体
将 Proxy Mail QA 连接到你的智能体(在 Qoder 中,从 Marketplace 安装),然后提问:
Review the sign-up form at https://staging.acme.dev/signup with Proxy Mail QA.Sign up with a new address and finish the verification. Check the email withcheck_email (expect_host: staging.acme.dev) and count_emails: exactly one should come.Try get_address_variants and get_password_variants (min_length 8, max_length 64) inthe fields, using a plus tag on the address for each new account.Give me the twelve-point checklist below with pass or fail for each.把上面的检查清单粘贴在提示词下方,让智能体对照它进行报告。
在自动化测试中
使用 proxymail-qa npm 包和 Playwright,检查 8 到 12 会在每次改动时运行:
import { expect, test } from '@playwright/test';import { ProxyMailQA } from 'proxymail-qa';
const qa = new ProxyMailQA(); // reads PROXYMAIL_QA_API_KEY
test('sign-up sends one working verification link', async ({ page }) => { const { address, password } = await qa.createAddress({ password: true }); const submitted = new Date();
await page.goto('/signup'); await page.getByLabel('Email').fill(address); await page.getByLabel('Password').fill(password); await page.getByRole('button', { name: 'Sign up' }).click();
const { value: link } = await qa.waitForLink(address, { type: 'verify', since: submitted }); const check = await qa.checkEmail(address, { since: submitted, type: 'link', expectHost: 'staging.acme.dev' }); expect(check.failed).toEqual([]);
await page.goto(link); await expect(page).toHaveURL(/welcome/);
await new Promise((resolve) => setTimeout(resolve, 10_000)); // time for a duplicate expect((await qa.countEmails(address, { since: submitted, type: 'link' })).count).toBe(1);
await qa.deleteAddress(address);});since 让等待忽略表单提交前发送的任何内容,因此重试永远不会取到旧链接。
本文不涵盖的内容
- 表单的外观和文案。请自己看一看,也要在手机上看。
- 无障碍和速度:运行 Lighthouse 和 axe DevTools,并只用键盘填写表单。
- 短信验证码和社交登录:Proxy Mail QA 只接收邮件。
- 处于沙盒或测试模式的邮件服务商只会发送到你验证过的地址,因此在设置为生产环境之前,测试收件箱收不到任何邮件。
对于要求更多信息的表单(出生日期、国家、第二个页面),请参阅 审查多页注册表单。