test(electron): 多账号真实验收脚本(真起打包产物 + 两个真实账号)
test/manual/multi-account-verify.mjs:预置 accounts.json 后起打包产物, 判据落在**网络层**而不是"列表里有多少行" —— 收件箱按会话分组且默认折叠, DOM 行数 ≠ 邮件数,用行数当判据只会得到一条随折叠状态变化的假绿/假红。 21 项判据,实测 21/21: - 聚合 = 每个可用账号各一次收件箱请求、**各带自己的令牌**(抓请求头确认没串号) - 徽标的存在与否是单/聚合视图的确定性差异(单账号视图不该有徽标) - 切到单账号只问那一个账号、且带的是它的令牌 - 添加流程:无效密钥当场拒绝(不写进列表)、有效密钥写入并落盘 - 落盘 accounts.json 权限 600、内容与界面一致 ★ 修一处**判据自伤**:无效密钥那步故意发 401,最初我把它算成"页面错误"导致 假红;改成"断言这个 401 确实是本步造出来的"(直接过滤 401 会把真实的鉴权故障 一起放过去)。
This commit is contained in:
@ -253,6 +253,10 @@ try {
|
||||
await page.waitForTimeout(800);
|
||||
await page.click('[data-testid="account-add-toggle"]');
|
||||
await page.fill('[data-testid="account-gateway"]', GW);
|
||||
// 这一步**故意**发一个 401:把它和真正的页面错误分开统计。
|
||||
// 判据不是"过滤掉 401",而是"这个 401 确实是这一步造出来的"——
|
||||
// 直接无视 401 会把真实的鉴权故障也一起放过去。
|
||||
const beforeBad = consoleErrors.length;
|
||||
await page.fill('[data-testid="account-token"]', 'deadbeef'.repeat(8)); // 64 位但无效
|
||||
await page.fill('[data-testid="account-name"]', '坏账号');
|
||||
await page.click('[data-testid="account-add-submit"]');
|
||||
@ -263,6 +267,14 @@ try {
|
||||
check('无效密钥没有产生账号行', rowsAfterBad === 2, `实际 ${rowsAfterBad} 行`);
|
||||
await page.screenshot({ path: join(TMP, '40-bad-key.png') }).catch(() => {});
|
||||
|
||||
const badWindow = consoleErrors.slice(beforeBad);
|
||||
const intentional401 = badWindow.filter(t => /status of 401/.test(t));
|
||||
const unexpected = badWindow.filter(t => !/status of 401/.test(t));
|
||||
check('★ 这一步确实产生了 401(否则上面那条"被拒绝"是假绿)', intentional401.length >= 1, `实际 ${intentional401.length} 条`);
|
||||
check('这一步没有产生 401 以外的页面错误', unexpected.length === 0, unexpected.slice(0, 2).join(' | '));
|
||||
// 从总数里剔除**已确认由本步产生**的那几条
|
||||
consoleErrors.splice(beforeBad, intentional401.length);
|
||||
|
||||
// 有效密钥(新造一把,避免"重复添加"挡路)
|
||||
const key3 = await makeKeyForAcct1();
|
||||
await page.fill('[data-testid="account-token"]', key3);
|
||||
|
||||
Reference in New Issue
Block a user