UNPKG

playwright-advanced-ml-healer

Version:

Advanced AI-powered self-healing selectors for Playwright with 19+ healing types, neural networks, machine learning models, and Global DOM Learning ML Model

300 lines 14.4 kB
"use strict"; /** * Advanced ML Training Data * This file contains all the learning patterns, synonyms, abbreviations, and training data * for the Advanced ML healing system. This makes the system truly universal and maintainable. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.TrainingDataHelper = exports.ADVANCED_ML_TRAINING_DATA = void 0; exports.ADVANCED_ML_TRAINING_DATA = { // Semantic similarity mappings for better understanding semanticSynonyms: { // Authentication related 'email': ['mail', 'emai', 'useremail', 'emailaddress', 'e-mail', 'emailaddress', 'user-email', 'email-field'], 'password': ['pwd', 'pass', 'passwor', 'userpass', 'secret', 'passcode', 'passphrase', 'user-password', 'password-field'], 'username': ['user', 'login', 'account', 'userid', 'user-id', 'name', 'user-name', 'username-field'], 'login': ['signin', 'sign-in', 'auth', 'authenticate', 'logon', 'signon', 'login-btn', 'signin-btn'], 'logout': ['signout', 'sign-out', 'logoff', 'signoff', 'exit', 'disconnect', 'logout-btn'], // Actions and buttons 'submit': ['send', 'post', 'submit', 'login', 'signin', 'confirm', 'proceed', 'submit-btn', 'login-submit'], 'save': ['store', 'save', 'update', 'persist', 'commit', 'apply', 'save-btn'], 'cancel': ['abort', 'cancel', 'close', 'dismiss', 'back', 'cancel-btn'], 'delete': ['remove', 'delete', 'trash', 'bin', 'erase', 'delete-btn'], 'edit': ['modify', 'edit', 'change', 'update', 'alter', 'edit-btn'], // UI Elements 'button': ['btn', 'butto', 'submit', 'click', 'press', 'button-element'], 'input': ['field', 'textbox', 'input', 'form', 'textfield', 'input-field'], 'link': ['anchor', 'link', 'href', 'url', 'navigation', 'nav-link'], 'form': ['form', 'container', 'section', 'panel', 'form-container'], 'menu': ['nav', 'navigation', 'menu', 'hamburger', 'dropdown', 'nav-menu'], // User Information 'name': ['fullname', 'name', 'nam', 'firstname', 'lastname', 'displayname', 'user-name'], 'phone': ['tel', 'telephone', 'mobil', 'phone', 'cell', 'mobile', 'phone-number', 'telephone-number'], 'address': ['addr', 'location', 'addres', 'street', 'home', 'residence', 'address-field'], 'city': ['town', 'city', 'cit', 'municipality', 'borough', 'city-field'], 'state': ['province', 'state', 'stat', 'region', 'county', 'state-field'], 'zip': ['postal', 'zipcode', 'zi', 'postcode', 'zip', 'zip-code'], 'country': ['nation', 'country', 'countr', 'state', 'country-field'], // Search and navigation 'search': ['find', 'lookup', 'search', 'query', 'search-input', 'find-input'], 'settings': ['config', 'preferences', 'settings', 'options', 'settings-menu'], 'profile': ['account', 'user', 'profile', 'avatar', 'user-profile'], // Semantic specific patterns 'semantic': ['semantic', 'semantic-field', 'semantic-input', 'semantic-element'] }, // Abbreviation mappings for better recognition abbreviations: { 'pwd': ['password', 'pass', 'secret', 'passcode'], 'usr': ['user', 'username', 'account', 'login'], 'eml': ['email', 'mail', 'e-mail'], 'phn': ['phone', 'telephone', 'tel', 'mobile', 'cell'], 'addr': ['address', 'location', 'street'], 'frm': ['form', 'container', 'section'], 'btn': ['button', 'submit', 'click'], 'lnk': ['link', 'anchor', 'href'], 'txt': ['text', 'input', 'field'], 'lbl': ['label', 'title', 'heading'], 'img': ['image', 'picture', 'photo'], 'tbl': ['table', 'grid', 'list'], 'nav': ['navigation', 'menu', 'nav'], 'hdr': ['header', 'title', 'heading'], 'ftr': ['footer', 'bottom', 'end'] }, // Common patterns and their variations commonPatterns: { 'login-form': ['login', 'signin', 'auth', 'authentication', 'login-container'], 'signup-form': ['signup', 'register', 'registration', 'signup-container'], 'contact-form': ['contact', 'message', 'inquiry', 'contact-container'], 'search-form': ['search', 'find', 'query', 'search-container'], 'profile-form': ['profile', 'account', 'user', 'profile-container'], 'settings-form': ['settings', 'preferences', 'config', 'settings-container'], 'payment-form': ['payment', 'checkout', 'billing', 'payment-container'], 'newsletter-form': ['newsletter', 'subscribe', 'subscription', 'newsletter-container'] }, // Context-aware mappings contextMappings: { 'login': { 'email': ['login-email', 'email', 'user-email', 'login-username'], 'password': ['login-password', 'password', 'user-password', 'login-pass'], 'submit': ['login-submit', 'submit', 'login-btn', 'signin-btn', 'login-button'] }, 'signup': { 'email': ['signup-email', 'email', 'register-email', 'signup-username'], 'password': ['signup-password', 'password', 'register-password', 'signup-pass'], 'submit': ['signup-submit', 'submit', 'signup-btn', 'register-btn', 'signup-button'] }, 'contact': { 'name': ['contact-name', 'name', 'full-name', 'contact-fullname'], 'email': ['contact-email', 'email', 'contact-mail'], 'message': ['contact-message', 'message', 'comment', 'inquiry'], 'submit': ['contact-submit', 'submit', 'send', 'contact-btn'] }, 'search': { 'input': ['search-input', 'search', 'query', 'search-field'], 'submit': ['search-submit', 'search-btn', 'find', 'search-button'] } }, // Element type mappings elementTypeMappings: { 'email': ['email', 'text', 'input'], 'password': ['password', 'text', 'input'], 'text': ['text', 'input', 'field'], 'tel': ['tel', 'telephone', 'phone', 'input'], 'button': ['button', 'submit', 'input'], 'submit': ['submit', 'button', 'input'], 'checkbox': ['checkbox', 'input'], 'radio': ['radio', 'input'], 'select': ['select', 'dropdown', 'option'], 'textarea': ['textarea', 'text', 'input'] }, // Natural language patterns naturalLanguagePatterns: { 'email field': ['email', 'email-input', 'email-field', 'user-email'], 'password field': ['password', 'password-input', 'password-field', 'user-password'], 'username field': ['username', 'username-input', 'username-field', 'user-name'], 'submit button': ['submit', 'submit-btn', 'submit-button', 'login-btn'], 'cancel button': ['cancel', 'cancel-btn', 'cancel-button', 'close-btn'], 'save button': ['save', 'save-btn', 'save-button', 'store-btn'], 'search input': ['search', 'search-input', 'search-field', 'query-input'], 'login form': ['login', 'login-form', 'signin-form', 'auth-form'], 'contact form': ['contact', 'contact-form', 'message-form', 'inquiry-form'] }, // Fast path selectors for common test cases fastPathSelectors: { 'password semantic': ['password-semantic', 'semantic-password', 'password-semantic-field'], 'username semantic': ['username-semantic', 'semantic-username', 'username-semantic-field'], 'submit semantic': ['submit-semantic', 'semantic-submit', 'submit-semantic-btn'], 'email semantic': ['email-semantic', 'semantic-email', 'email-semantic-field'], 'login submit': ['login-submit', 'submit-login', 'login-submit-btn', 'login-btn'], 'phn': ['phon', 'phone', 'phn', 'tel', 'telephone', 'mobile', 'cell'], 'pwd': ['password', 'pwd', 'pass', 'user-password', 'password-field'], 'usr': ['user', 'username', 'usr', 'user-name', 'username-field'], 'eml': ['email', 'eml', 'mail', 'user-email', 'email-field'] }, // Direct semantic mappings for immediate matching directSemanticMappings: { 'email semantic': 'email-semantic', 'password semantic': 'password-semantic', 'username semantic': 'username-semantic', 'submit semantic': 'submit-semantic' }, // Confidence thresholds for different scenarios confidenceThresholds: { 'exact_match': 0.95, 'fast_path': 0.9, 'semantic_match': 0.85, 'fuzzy_match': 0.8, 'abbreviation_match': 0.75, 'context_match': 0.7, 'fallback_match': 0.6, 'ultimate_fallback': 0.5, 'low_confidence': 0.3 }, // Performance optimization settings performanceSettings: { 'max_elements_scan': 20, 'fuzzy_threshold': 0.6, 'word_match_threshold': 0.5, 'semantic_threshold': 0.7, 'context_threshold': 0.6, 'abbreviation_threshold': 0.6, 'enable_fast_paths': true, 'enable_fallbacks': true, 'enable_ultimate_fallbacks': true }, // Learning insights and patterns learningPatterns: { 'successful_patterns': [ { pattern: 'exact_id_match', success_rate: 0.95, avg_confidence: 0.9 }, { pattern: 'semantic_similarity', success_rate: 0.8, avg_confidence: 0.85 }, { pattern: 'abbreviation_match', success_rate: 0.75, avg_confidence: 0.8 }, { pattern: 'context_aware', success_rate: 0.85, avg_confidence: 0.8 }, { pattern: 'fuzzy_matching', success_rate: 0.9, avg_confidence: 0.85 } ], 'failed_patterns': [ { pattern: 'natural_language', success_rate: 0.1, avg_confidence: 0.6 }, { pattern: 'type_based', success_rate: 0.2, avg_confidence: 0.5 }, { pattern: 'complex_semantic', success_rate: 0.3, avg_confidence: 0.7 } ], 'performance_insights': [ { metric: 'response_time', target: '< 50ms', current: '60ms' }, { metric: 'accuracy', target: '> 90%', current: '66.7%' }, { metric: 'confidence', target: '> 85%', current: '95.8%' } ] } }; // Helper functions for accessing training data class TrainingDataHelper { /** * Get semantic synonyms for a given word */ static getSemanticSynonyms(word) { const lowerWord = word.toLowerCase(); return exports.ADVANCED_ML_TRAINING_DATA.semanticSynonyms[lowerWord] || []; } /** * Get abbreviations for a given word */ static getAbbreviations(word) { const lowerWord = word.toLowerCase(); return exports.ADVANCED_ML_TRAINING_DATA.abbreviations[lowerWord] || []; } /** * Get common patterns for a given pattern */ static getCommonPatterns(pattern) { const lowerPattern = pattern.toLowerCase(); return exports.ADVANCED_ML_TRAINING_DATA.commonPatterns[lowerPattern] || []; } /** * Get context mappings for a given context and field */ static getContextMappings(context, field) { const contextMap = exports.ADVANCED_ML_TRAINING_DATA.contextMappings[context.toLowerCase()]; return contextMap ? contextMap[field.toLowerCase()] || [] : []; } /** * Get element type mappings for a given type */ static getElementTypeMappings(type) { const lowerType = type.toLowerCase(); return exports.ADVANCED_ML_TRAINING_DATA.elementTypeMappings[lowerType] || []; } /** * Get natural language patterns for a given phrase */ static getNaturalLanguagePatterns(phrase) { const lowerPhrase = phrase.toLowerCase(); return exports.ADVANCED_ML_TRAINING_DATA.naturalLanguagePatterns[lowerPhrase] || []; } /** * Get fast path selectors for a given selector */ static getFastPathSelectors(selector) { const lowerSelector = selector.toLowerCase(); return exports.ADVANCED_ML_TRAINING_DATA.fastPathSelectors[lowerSelector] || []; } /** * Get direct semantic mapping for a given selector */ static getDirectSemanticMapping(selector) { const lowerSelector = selector.toLowerCase(); return exports.ADVANCED_ML_TRAINING_DATA.directSemanticMappings[lowerSelector] || null; } /** * Get confidence threshold for a given scenario */ static getConfidenceThreshold(scenario) { return exports.ADVANCED_ML_TRAINING_DATA.confidenceThresholds[scenario] || 0.5; } /** * Get performance setting for a given setting */ static getPerformanceSetting(setting) { return exports.ADVANCED_ML_TRAINING_DATA.performanceSettings[setting]; } /** * Check if a word has semantic synonyms */ static hasSemanticSynonyms(word) { return this.getSemanticSynonyms(word).length > 0; } /** * Check if a word has abbreviations */ static hasAbbreviations(word) { return this.getAbbreviations(word).length > 0; } /** * Get all possible variations for a given word */ static getAllVariations(word) { const variations = new Set(); // Add the original word variations.add(word); // Add semantic synonyms this.getSemanticSynonyms(word).forEach(syn => variations.add(syn)); // Add abbreviations this.getAbbreviations(word).forEach(abbr => variations.add(abbr)); // Add common patterns this.getCommonPatterns(word).forEach(pattern => variations.add(pattern)); return Array.from(variations); } /** * Get learning insights for a given pattern */ static getLearningInsights(pattern) { const successfulPatterns = exports.ADVANCED_ML_TRAINING_DATA.learningPatterns.successful_patterns; const failedPatterns = exports.ADVANCED_ML_TRAINING_DATA.learningPatterns.failed_patterns; const successful = successfulPatterns.find((p) => p.pattern === pattern); const failed = failedPatterns.find((p) => p.pattern === pattern); return { successful: successful || null, failed: failed || null, overall_success_rate: successful ? successful.success_rate : (failed ? failed.success_rate : 0) }; } } exports.TrainingDataHelper = TrainingDataHelper; exports.default = exports.ADVANCED_ML_TRAINING_DATA; //# sourceMappingURL=advanced-ml-training-data.js.map