feat: 增加邮箱重试逻辑,优化步骤4失败后的处理方式

This commit is contained in:
QLHazyCoder
2026-04-17 16:24:25 +08:00
parent 78d6e94213
commit f2a1a4d7bf
6 changed files with 338 additions and 6 deletions
@@ -0,0 +1,51 @@
const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const source = fs.readFileSync('background/steps/fill-password.js', 'utf8');
const globalScope = {};
const api = new Function('self', `${source}; return self.MultiPageBackgroundStep3;`)(globalScope);
test('step 3 reuses existing generated password when rerunning the same email flow', async () => {
const events = {
passwordStates: [],
messages: [],
};
const executor = api.createStep3Executor({
addLog: async () => {},
chrome: { tabs: { update: async () => {} } },
ensureContentScriptReadyOnTab: async () => {},
generatePassword: () => 'Generated-Should-Not-Be-Used',
getTabId: async () => 88,
isTabAlive: async () => true,
sendToContentScript: async (_source, message) => {
events.messages.push(message);
},
setPasswordState: async (password) => {
events.passwordStates.push(password);
},
setState: async () => {},
SIGNUP_PAGE_INJECT_FILES: [],
});
await executor.executeStep3({
email: 'keep@example.com',
password: 'Secret123!',
customPassword: '',
accounts: [],
});
assert.deepStrictEqual(events.passwordStates, ['Secret123!']);
assert.deepStrictEqual(events.messages, [
{
type: 'EXECUTE_STEP',
step: 3,
source: 'background',
payload: {
email: 'keep@example.com',
password: 'Secret123!',
},
},
]);
});