本页由英文自动翻译。

阅读英文版
Proxy Mail QA

审查简单的注册表单:邮箱、密码,完成

简单表单可能出错的地方更少,但这些地方每个用户都会碰到。12 项检查就能覆盖。

更新于

先说我们的建议。 Proxy Mail QA 是我们做的,所以我们并不中立。对于简短的注册表单(一个邮箱、一个密码,可能还有姓名),我们只推荐它做一件事:每次尝试都提供一个新的测试地址,并接收随后的验证邮件,无论你是用 Proxy Mail QA for Chrome 手动检查、通过 AI 智能体,还是在自动化测试中。下面清单的大部分内容根本不需要任何产品。Proxy Mail QA 不审查布局或文案,也不会替智能体或测试填写或提交表单:它们会自己完成。

检查清单

邮箱字段

  1. 它是带有 autocomplete="email" 的 type="email",因此手机会显示带 @ 的键盘,浏览器会推荐正确的地址。
  2. 它接受有效但不常见的地址:大写字母、加号标签(jane+acme@mailclub.dev)、撇号(o'brien@mailclub.dev)。它拒绝没有 @ 或有两个 @ 的地址。
  3. 已注册的地址会得到合理的回应:要么是“你已经有账号了”并附带登录链接,要么如果你不想透露谁有账号,无论如何都显示“请查看你的邮箱”。

密码字段

  1. 规则在用户输入前就会显示,并且与服务器执行的规则一致。
  2. 它是带有 autocomplete="new-password" 的 type="password",允许粘贴,并且可以显示已输入的内容。
  3. 太短的密码会在字段处报错,并说明规则。(如果没有,请参阅 为什么我的注册表单不显示密码错误?)
  4. 长密码(64 个字符)会被接受,之后可以用它登录。

提交

  1. 点击一次只创建一个账号、只发送一封邮件,即使按钮被按了两次。
  2. 按钮会显示正在处理,服务器返回的错误会显示在页面上,而不是消失。

邮件

  1. 它会在一分钟内到达。
  2. 其中的链接指向你正在测试的网站,而不是 localhost 或生产环境,且其中声明的有效期属实。
  3. 验证码或链接可以完成注册,并且只能使用一次。

手动操作,大约十分钟

  1. 安装 Proxy Mail QA for Chrome,打开你的注册页面,并在其弹出窗口中选择 Turn on for this site。
  2. 点击邮箱字段中的 Proxy Mail QA 按钮,用一个新的测试账号填写表单:邮箱、姓名(如果有)以及符合该字段规则的密码。
  3. 对于检查 6 和 7,点击密码字段中的钥匙按钮,打开其卡片中的 Edge-case password 列表(“Should be accepted”、“Should be rejected”),然后试几个。对于检查 2,在提交前给字段中的地址加上加号标签:发往 +anything 的邮件仍会到达同一个测试收件箱,并显示在应用中而不是页面中。
  4. 提交。邮件到达后,验证码会显示在页面中并带有 Fill 和 Copy,或者链接会带有 Open。
  5. 在 应用 中完整阅读一遍邮件,指向 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 with
check_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) in
the 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 让等待忽略表单提交前发送的任何内容,因此重试永远不会取到旧链接。

本文不涵盖的内容

对于要求更多信息的表单(出生日期、国家、第二个页面),请参阅 审查多页注册表单。

在你的下一次注册测试中试试

免费版,无需信用卡。创建一个地址,看着验证码或链接送达。

免费创建账号打开应用

你的应用是用 AI 工具构建的?选择你的工具

对本页有疑问?

可以用任何语言提问。文档可以立即回答,你也可以把问题发给 Proxy Mail QA 团队,他们会用英文回复。