Files
FlowPilot/tests/background-step5-submit-short-circuit.test.js
T
2026-05-15 17:41:35 +08:00

49 lines
1.4 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const source = fs.readFileSync('background/steps/fill-profile.js', 'utf8');
const globalScope = {};
const api = new Function('self', `${source}; return self.MultiPageBackgroundStep5;`)(globalScope);
test('step 5 forwards generated profile data and relies on completion signal flow', async () => {
const events = {
logs: [],
messages: [],
};
const executor = api.createStep5Executor({
addLog: async (message, level) => {
events.logs.push({ message, level: level || 'info' });
},
generateRandomBirthday: () => ({ year: 2003, month: 6, day: 19 }),
generateRandomName: () => ({ firstName: 'Test', lastName: 'User' }),
sendToContentScript: async (source, message) => {
events.messages.push({ source, message });
return { accepted: true };
},
});
await executor.executeStep5();
assert.deepStrictEqual(events.messages, [
{
source: 'signup-page',
message: {
type: 'EXECUTE_NODE',
nodeId: 'fill-profile',
step: 5,
source: 'background',
payload: {
firstName: 'Test',
lastName: 'User',
year: 2003,
month: 6,
day: 19,
},
},
},
]);
assert.ok(events.logs.some(({ message }) => /已生成姓名 Test User/.test(message)));
});