fix: 恢复 step4 提交后的原有资料页识别
This commit is contained in:
@@ -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
|
// 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.
|
// form fully exits. Do not advance to Step 5 while verification UI is still present.
|
||||||
if (isVerificationPageStillVisible()) {
|
if (!ignoreVerificationVisibility && isVerificationPageStillVisible()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2388,7 +2389,7 @@ async function waitForVerificationSubmitOutcome(step, timeout) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (step === 4) {
|
if (step === 4) {
|
||||||
const postVerificationState = getStep4PostVerificationState();
|
const postVerificationState = getStep4PostVerificationState({ ignoreVerificationVisibility: true });
|
||||||
if (postVerificationState?.state === 'logged_in_home') {
|
if (postVerificationState?.state === 'logged_in_home') {
|
||||||
return {
|
return {
|
||||||
success: true,
|
success: true,
|
||||||
@@ -2423,7 +2424,7 @@ async function waitForVerificationSubmitOutcome(step, timeout) {
|
|||||||
throw createSignupUserAlreadyExistsError();
|
throw createSignupUserAlreadyExistsError();
|
||||||
}
|
}
|
||||||
|
|
||||||
const postVerificationState = getStep4PostVerificationState();
|
const postVerificationState = getStep4PostVerificationState({ ignoreVerificationVisibility: true });
|
||||||
if (postVerificationState?.state === 'logged_in_home') {
|
if (postVerificationState?.state === 'logged_in_home') {
|
||||||
return {
|
return {
|
||||||
success: true,
|
success: true,
|
||||||
|
|||||||
@@ -198,3 +198,44 @@ return {
|
|||||||
url: 'https://chatgpt.com/',
|
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,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user