feat: 增强注册入口诊断功能,添加对可见操作的识别和筛选
This commit is contained in:
@@ -369,6 +369,25 @@ function getSignupEntryDiagnostics() {
|
||||
const actionCandidates = document.querySelectorAll(
|
||||
'a, button, [role="button"], [role="link"], input[type="button"], input[type="submit"]'
|
||||
);
|
||||
const allActions = Array.from(actionCandidates).map((el) => {
|
||||
const rect = typeof el?.getBoundingClientRect === 'function'
|
||||
? el.getBoundingClientRect()
|
||||
: null;
|
||||
const text = getActionText(el);
|
||||
return {
|
||||
tag: (el.tagName || '').toLowerCase(),
|
||||
type: el.getAttribute?.('type') || '',
|
||||
text: text.slice(0, 80),
|
||||
visible: isVisibleElement(el),
|
||||
enabled: isActionEnabled(el),
|
||||
rect: rect
|
||||
? {
|
||||
width: Math.round(rect.width || 0),
|
||||
height: Math.round(rect.height || 0),
|
||||
}
|
||||
: null,
|
||||
};
|
||||
});
|
||||
const visibleActions = Array.from(actionCandidates)
|
||||
.filter(isVisibleElement)
|
||||
.slice(0, 12)
|
||||
@@ -379,6 +398,9 @@ function getSignupEntryDiagnostics() {
|
||||
enabled: isActionEnabled(el),
|
||||
}))
|
||||
.filter((item) => item.text);
|
||||
const signupLikeActions = allActions
|
||||
.filter((item) => item.text && SIGNUP_ENTRY_TRIGGER_PATTERN.test(item.text))
|
||||
.slice(0, 12);
|
||||
|
||||
return {
|
||||
url: location.href,
|
||||
@@ -386,6 +408,8 @@ function getSignupEntryDiagnostics() {
|
||||
readyState: document.readyState || '',
|
||||
hasEmailInput: Boolean(getSignupEmailInput()),
|
||||
hasPasswordInput: Boolean(getSignupPasswordInput()),
|
||||
bodyContainsSignupText: SIGNUP_ENTRY_TRIGGER_PATTERN.test(getPageTextSnapshot()),
|
||||
signupLikeActions,
|
||||
visibleActions,
|
||||
bodyTextPreview: getPageTextSnapshot().slice(0, 240),
|
||||
};
|
||||
|
||||
@@ -52,7 +52,8 @@ function extractFunction(name) {
|
||||
}
|
||||
|
||||
test('signup entry diagnostics summarizes current page inputs and visible actions', () => {
|
||||
const api = new Function(`
|
||||
const api = new Function(`
|
||||
const SIGNUP_ENTRY_TRIGGER_PATTERN = /免费注册|立即注册|注册|sign\\s*up|register|create\\s*account|create\\s+account/i;
|
||||
const location = { href: 'https://chatgpt.com/' };
|
||||
const document = {
|
||||
title: 'ChatGPT',
|
||||
@@ -67,6 +68,9 @@ const document = {
|
||||
tagName: 'BUTTON',
|
||||
textContent: 'Get started',
|
||||
disabled: false,
|
||||
getBoundingClientRect() {
|
||||
return { width: 120, height: 40 };
|
||||
},
|
||||
getAttribute(name) {
|
||||
return name === 'type' ? 'button' : '';
|
||||
},
|
||||
@@ -75,6 +79,9 @@ const document = {
|
||||
tagName: 'A',
|
||||
textContent: 'Log in',
|
||||
disabled: false,
|
||||
getBoundingClientRect() {
|
||||
return { width: 96, height: 40 };
|
||||
},
|
||||
getAttribute() {
|
||||
return '';
|
||||
},
|
||||
@@ -129,6 +136,8 @@ return {
|
||||
assert.equal(result.readyState, 'complete');
|
||||
assert.equal(result.hasEmailInput, false);
|
||||
assert.equal(result.hasPasswordInput, false);
|
||||
assert.equal(result.bodyContainsSignupText, false);
|
||||
assert.deepStrictEqual(result.signupLikeActions, []);
|
||||
assert.deepStrictEqual(result.visibleActions, [
|
||||
{ tag: 'button', type: 'button', text: 'Get started', enabled: true },
|
||||
{ tag: 'a', type: '', text: 'Log in', enabled: true },
|
||||
|
||||
Reference in New Issue
Block a user