healix 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. healix-1.0.0/.env.example +9 -0
  2. healix-1.0.0/.gitignore +16 -0
  3. healix-1.0.0/ARCHITECTURE.md +957 -0
  4. healix-1.0.0/CHANGELOG.md +291 -0
  5. healix-1.0.0/CODE_OF_CONDUCT.md +69 -0
  6. healix-1.0.0/CONTRIBUTING.md +113 -0
  7. healix-1.0.0/LICENSE +21 -0
  8. healix-1.0.0/PKG-INFO +1414 -0
  9. healix-1.0.0/README.md +1356 -0
  10. healix-1.0.0/healix/__init__.py +37 -0
  11. healix-1.0.0/healix/__main__.py +5 -0
  12. healix-1.0.0/healix/auth/__init__.py +39 -0
  13. healix-1.0.0/healix/auth/forms.py +179 -0
  14. healix-1.0.0/healix/auth/login_handler.py +402 -0
  15. healix-1.0.0/healix/classification/__init__.py +19 -0
  16. healix-1.0.0/healix/classification/rules.py +714 -0
  17. healix-1.0.0/healix/cli.py +270 -0
  18. healix-1.0.0/healix/config.py +167 -0
  19. healix-1.0.0/healix/discovery/__init__.py +0 -0
  20. healix-1.0.0/healix/discovery/crawler.py +437 -0
  21. healix-1.0.0/healix/discovery/manifest.py +324 -0
  22. healix-1.0.0/healix/doctor.py +174 -0
  23. healix-1.0.0/healix/driver/__init__.py +24 -0
  24. healix-1.0.0/healix/driver/base.py +161 -0
  25. healix-1.0.0/healix/driver/diagnose.py +25 -0
  26. healix-1.0.0/healix/driver/factory.py +72 -0
  27. healix-1.0.0/healix/driver/frames.py +484 -0
  28. healix-1.0.0/healix/driver/playwright_adapter.py +267 -0
  29. healix-1.0.0/healix/driver/selenium_adapter.py +467 -0
  30. healix-1.0.0/healix/events/__init__.py +38 -0
  31. healix-1.0.0/healix/events/emitter.py +55 -0
  32. healix-1.0.0/healix/events/schema.py +104 -0
  33. healix-1.0.0/healix/events/webhook.py +173 -0
  34. healix-1.0.0/healix/extraction/__init__.py +19 -0
  35. healix-1.0.0/healix/extraction/element_extractor.py +447 -0
  36. healix-1.0.0/healix/fs.py +42 -0
  37. healix-1.0.0/healix/generation/__init__.py +11 -0
  38. healix-1.0.0/healix/generation/script_writer.py +585 -0
  39. healix-1.0.0/healix/generation/templates/_imports.j2 +24 -0
  40. healix-1.0.0/healix/generation/templates/_session.j2 +25 -0
  41. healix-1.0.0/healix/generation/templates/action.j2 +44 -0
  42. healix-1.0.0/healix/generation/templates/pom.j2 +50 -0
  43. healix-1.0.0/healix/generation/templates/test.j2 +39 -0
  44. healix-1.0.0/healix/healer.py +248 -0
  45. healix-1.0.0/healix/healing/__init__.py +143 -0
  46. healix-1.0.0/healix/healing/baseline.py +63 -0
  47. healix-1.0.0/healix/healing/fingerprint.py +138 -0
  48. healix-1.0.0/healix/healing/history.py +154 -0
  49. healix-1.0.0/healix/healing/postgres_store.py +269 -0
  50. healix-1.0.0/healix/healing/resolver.py +311 -0
  51. healix-1.0.0/healix/healing/roles.py +138 -0
  52. healix-1.0.0/healix/healing/scorer.py +314 -0
  53. healix-1.0.0/healix/healing/store.py +324 -0
  54. healix-1.0.0/healix/ids.py +40 -0
  55. healix-1.0.0/healix/log.py +91 -0
  56. healix-1.0.0/healix/platform_adapters/__init__.py +27 -0
  57. healix-1.0.0/healix/platform_adapters/base.py +26 -0
  58. healix-1.0.0/healix/platform_adapters/salesforce_lwc.py +41 -0
  59. healix-1.0.0/healix/platform_adapters/sap_ui5.py +45 -0
  60. healix-1.0.0/healix/py.typed +0 -0
  61. healix-1.0.0/healix/sdk.py +418 -0
  62. healix-1.0.0/healix/timeutil.py +14 -0
  63. healix-1.0.0/pyproject.toml +131 -0
  64. healix-1.0.0/tests/__init__.py +0 -0
  65. healix-1.0.0/tests/auth/__init__.py +0 -0
  66. healix-1.0.0/tests/auth/screens.py +81 -0
  67. healix-1.0.0/tests/auth/test_forms.py +196 -0
  68. healix-1.0.0/tests/auth/test_login_handler.py +419 -0
  69. healix-1.0.0/tests/classification/__init__.py +0 -0
  70. healix-1.0.0/tests/classification/test_rules.py +388 -0
  71. healix-1.0.0/tests/classification/test_rules_integration.py +46 -0
  72. healix-1.0.0/tests/conftest.py +261 -0
  73. healix-1.0.0/tests/discovery/__init__.py +0 -0
  74. healix-1.0.0/tests/discovery/test_crawler.py +395 -0
  75. healix-1.0.0/tests/discovery/test_crawler_integration.py +52 -0
  76. healix-1.0.0/tests/discovery/test_manifest.py +182 -0
  77. healix-1.0.0/tests/driver/__init__.py +0 -0
  78. healix-1.0.0/tests/driver/backends.py +47 -0
  79. healix-1.0.0/tests/driver/dynamic_site.py +68 -0
  80. healix-1.0.0/tests/driver/test_backend_parity.py +126 -0
  81. healix-1.0.0/tests/driver/test_driver_contract.py +173 -0
  82. healix-1.0.0/tests/driver/test_frames.py +80 -0
  83. healix-1.0.0/tests/driver/test_selenium_adapter.py +109 -0
  84. healix-1.0.0/tests/driver/test_waiting.py +62 -0
  85. healix-1.0.0/tests/elements.py +62 -0
  86. healix-1.0.0/tests/events/__init__.py +0 -0
  87. healix-1.0.0/tests/events/test_emitter.py +69 -0
  88. healix-1.0.0/tests/events/test_schema.py +138 -0
  89. healix-1.0.0/tests/events/test_webhook.py +141 -0
  90. healix-1.0.0/tests/extraction/__init__.py +0 -0
  91. healix-1.0.0/tests/extraction/test_element_extractor.py +377 -0
  92. healix-1.0.0/tests/extraction/test_element_extractor_integration.py +131 -0
  93. healix-1.0.0/tests/extraction/test_fingerprint_recording.py +125 -0
  94. healix-1.0.0/tests/fakes.py +93 -0
  95. healix-1.0.0/tests/fixtures/classify/case_checkout.html +10 -0
  96. healix-1.0.0/tests/fixtures/classify/case_cookie_banner_article.html +4 -0
  97. healix-1.0.0/tests/fixtures/classify/case_dashboard.html +9 -0
  98. healix-1.0.0/tests/fixtures/classify/case_form_contact.html +11 -0
  99. healix-1.0.0/tests/fixtures/classify/case_list_cards.html +4 -0
  100. healix-1.0.0/tests/fixtures/classify/case_list_table.html +5 -0
  101. healix-1.0.0/tests/fixtures/classify/case_login_basic.html +10 -0
  102. healix-1.0.0/tests/fixtures/classify/case_login_no_cues.html +7 -0
  103. healix-1.0.0/tests/fixtures/classify/case_minimal.html +3 -0
  104. healix-1.0.0/tests/fixtures/classify/case_modal_over_page.html +9 -0
  105. healix-1.0.0/tests/fixtures/classify/case_modal_standalone.html +5 -0
  106. healix-1.0.0/tests/fixtures/classify/case_nav_shell.html +3 -0
  107. healix-1.0.0/tests/fixtures/classify/case_prefilled_password.html +8 -0
  108. healix-1.0.0/tests/fixtures/classify/case_search.html +5 -0
  109. healix-1.0.0/tests/fixtures/classify/case_signup.html +11 -0
  110. healix-1.0.0/tests/fixtures/classify/oauth/authorize.html +6 -0
  111. healix-1.0.0/tests/fixtures/classify/products/123.html +6 -0
  112. healix-1.0.0/tests/fixtures/site/foreign.html +2 -0
  113. healix-1.0.0/tests/fixtures/site/form.html +9 -0
  114. healix-1.0.0/tests/fixtures/site/index.html +33 -0
  115. healix-1.0.0/tests/fixtures/site/panel.html +7 -0
  116. healix-1.0.0/tests/fixtures/site/parity.html +32 -0
  117. healix-1.0.0/tests/generation/__init__.py +0 -0
  118. healix-1.0.0/tests/generation/pages.py +69 -0
  119. healix-1.0.0/tests/generation/test_generated_scripts_run.py +134 -0
  120. healix-1.0.0/tests/generation/test_script_writer.py +392 -0
  121. healix-1.0.0/tests/healing/__init__.py +0 -0
  122. healix-1.0.0/tests/healing/pages.py +156 -0
  123. healix-1.0.0/tests/healing/site.py +152 -0
  124. healix-1.0.0/tests/healing/test_baseline.py +71 -0
  125. healix-1.0.0/tests/healing/test_fingerprint.py +112 -0
  126. healix-1.0.0/tests/healing/test_healing_integration.py +287 -0
  127. healix-1.0.0/tests/healing/test_history.py +121 -0
  128. healix-1.0.0/tests/healing/test_resolver.py +401 -0
  129. healix-1.0.0/tests/healing/test_roles.py +100 -0
  130. healix-1.0.0/tests/healing/test_scorer.py +260 -0
  131. healix-1.0.0/tests/healing/test_store.py +398 -0
  132. healix-1.0.0/tests/loginsite.py +369 -0
  133. healix-1.0.0/tests/platform_adapters/__init__.py +0 -0
  134. healix-1.0.0/tests/platform_adapters/pages.py +62 -0
  135. healix-1.0.0/tests/platform_adapters/test_platform_adapters.py +185 -0
  136. healix-1.0.0/tests/platform_adapters/test_platform_detection.py +116 -0
  137. healix-1.0.0/tests/test_architecture.py +76 -0
  138. healix-1.0.0/tests/test_backend_pipeline.py +70 -0
  139. healix-1.0.0/tests/test_cli.py +298 -0
  140. healix-1.0.0/tests/test_cli_generate.py +155 -0
  141. healix-1.0.0/tests/test_config.py +154 -0
  142. healix-1.0.0/tests/test_doctor.py +147 -0
  143. healix-1.0.0/tests/test_healer.py +235 -0
  144. healix-1.0.0/tests/test_ids.py +29 -0
  145. healix-1.0.0/tests/test_log.py +86 -0
  146. healix-1.0.0/tests/test_login_integration.py +327 -0
  147. healix-1.0.0/tests/test_sdk.py +323 -0
  148. healix-1.0.0/tests/test_sdk_cli_integration.py +163 -0
@@ -0,0 +1,9 @@
1
+ # Copy to .env (git-ignored) and fill in. Never commit real values.
2
+ # The healix CLI loads this file from the current directory (via python-dotenv).
3
+ WEBLIB_LOGIN_USERNAME=
4
+ WEBLIB_LOGIN_PASSWORD=
5
+ # A page classified as a login page is filled in with these; leave them empty to run
6
+ # without logging in (the run is then flagged "blocked on auth" if a login page is reached).
7
+
8
+ # Optional: sign webhook deliveries (HMAC-SHA256 of the body in X-Healix-Signature).
9
+ HEALIX_WEBHOOK_SECRET=
@@ -0,0 +1,16 @@
1
+ # Secrets — never commit
2
+ .env
3
+
4
+ # Python
5
+ __pycache__/
6
+ *.py[cod]
7
+ *.egg-info/
8
+ build/
9
+ dist/
10
+ .venv/
11
+ .pytest_cache/
12
+
13
+ # Healix run output
14
+ output/
15
+ healix.db
16
+ CLAUDE.md