Files
FlowPilot/tests/background-logging-status-module.test.js
T
2026-05-29 10:09:26 +08:00

67 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
test('background imports logging/status module', () => {
const source = fs.readFileSync('background.js', 'utf8');
assert.match(source, /core\/flow-kernel\/logging-status\.js/);
});
test('logging/status module exposes a factory', () => {
const source = fs.readFileSync('core/flow-kernel/logging-status.js', 'utf8');
const globalScope = {};
const api = new Function('self', `${source}; return self.MultiPageBackgroundLoggingStatus;`)(globalScope);
assert.equal(typeof api?.createLoggingStatus, 'function');
});
test('logging/status add-phone detection ignores step 2 phone-entry switch failures', () => {
const source = fs.readFileSync('core/flow-kernel/logging-status.js', 'utf8');
const globalScope = {};
const api = new Function('self', `${source}; return self.MultiPageBackgroundLoggingStatus;`)(globalScope);
const loggingStatus = api.createLoggingStatus({
chrome: { runtime: { sendMessage() { return Promise.resolve(); } } },
DEFAULT_STATE: { stepStatuses: {} },
getState: async () => ({ stepStatuses: {} }),
isRecoverableStep9AuthFailure: () => false,
LOG_PREFIX: '[test]',
setState: async () => {},
STOP_ERROR_MESSAGE: 'stopped',
});
assert.equal(
loggingStatus.isAddPhoneAuthFailure('Step 2: the signup dialog is still in phone entry mode and has not switched back to email entry. URL: https://chatgpt.com/'),
false
);
assert.equal(
loggingStatus.isAddPhoneAuthFailure('Step 8: verification submitted but the auth flow entered the phone number page. URL: https://auth.openai.com/add-phone'),
true
);
assert.equal(
loggingStatus.isAddPhoneAuthFailure('Step 9: auth page entered phone verification page. URL: https://auth.openai.com/phone-verification'),
true
);
assert.equal(loggingStatus.getLoginAuthStateLabel('phone_verification_page'), '手机验证码页');
assert.equal(loggingStatus.getLoginAuthStateLabel('add_email_page'), '添加邮箱页');
assert.equal(loggingStatus.getLoginAuthStateLabel('oauth_consent_page'), 'OAuth 授权页');
assert.equal(loggingStatus.getLoginAuthStateLabel('choose_account_page'), 'OpenAI choose account page');
assert.equal(
loggingStatus.getErrorMessage(new Error('GPC_PAGE_FLOW_ENDED::步骤 7GPC 页面等待超时,未检测到订阅完成。')),
'步骤 7:GPC 页面等待超时,未检测到订阅完成。'
);
assert.equal(
loggingStatus.isKiroProxyFailure('Kiro 注册页出现 AWS 请求异常,通常是当前代理 IP 或出口区域异常,请先切换代理后再重试。'),
true
);
assert.equal(
loggingStatus.isKiroProxyFailure('Kiro 注册页返回 403CloudFront 拒绝请求),通常是当前代理 IP 或区域触发了 AWS 风控,请更换代理后重试。'),
true
);
assert.equal(
loggingStatus.isKiroProxyFailure('步骤 2:邮箱已提交,当前已进入姓名页。'),
false
);
});