fix: 恢复 step4 提交后的原有资料页识别

This commit is contained in:
EmptyDust
2026-05-02 12:39:36 +08:00
parent 0a17d95f44
commit 17cefe8b2a
2 changed files with 46 additions and 4 deletions
+5 -4
View File
@@ -1144,10 +1144,11 @@ function isLikelyLoggedInChatgptHomeUrl(rawUrl = location.href) {
}
}
function getStep4PostVerificationState() {
function getStep4PostVerificationState(options = {}) {
const { ignoreVerificationVisibility = false } = options;
// Newer auth flows can briefly render profile fields before the email-verification
// form fully exits. Do not advance to Step 5 while verification UI is still present.
if (isVerificationPageStillVisible()) {
if (!ignoreVerificationVisibility && isVerificationPageStillVisible()) {
return null;
}
@@ -2388,7 +2389,7 @@ async function waitForVerificationSubmitOutcome(step, timeout) {
}
if (step === 4) {
const postVerificationState = getStep4PostVerificationState();
const postVerificationState = getStep4PostVerificationState({ ignoreVerificationVisibility: true });
if (postVerificationState?.state === 'logged_in_home') {
return {
success: true,
@@ -2423,7 +2424,7 @@ async function waitForVerificationSubmitOutcome(step, timeout) {
throw createSignupUserAlreadyExistsError();
}
const postVerificationState = getStep4PostVerificationState();
const postVerificationState = getStep4PostVerificationState({ ignoreVerificationVisibility: true });
if (postVerificationState?.state === 'logged_in_home') {
return {
success: true,
+41
View File
@@ -198,3 +198,44 @@ return {
url: 'https://chatgpt.com/',
});
});
test('waitForVerificationSubmitOutcome treats step 5 as success after submit even when verification ui residue remains', async () => {
const api = new Function(`
const location = { href: 'https://auth.openai.com/email-verification/register' };
function throwIfStopped() {}
function log() {}
function getVerificationErrorText() { return ''; }
function isStep5Ready() { return true; }
function isStep8Ready() { return false; }
function isAddPhonePageReady() { return false; }
function isVerificationPageStillVisible() { return true; }
function createSignupUserAlreadyExistsError() {
return new Error('SIGNUP_USER_ALREADY_EXISTS::步骤 4:检测到 user_already_exists,说明当前用户已存在,当前轮将直接停止。');
}
function getCurrentAuthRetryPageState() {
return null;
}
async function recoverCurrentAuthRetryPage() {
throw new Error('should not recover retry page');
}
async function sleep() {}
${extractFunction('isSignupProfilePageUrl')}
${extractFunction('isLikelyLoggedInChatgptHomeUrl')}
${extractFunction('getStep4PostVerificationState')}
${extractFunction('waitForVerificationSubmitOutcome')}
return {
run() {
return waitForVerificationSubmitOutcome(4, 1000);
},
};
`)();
const result = await api.run();
assert.deepStrictEqual(result, {
success: true,
});
});