visus-web 0.1.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 (155) hide show
  1. visus_web-0.1.0/.github/workflows/publish.yml +51 -0
  2. visus_web-0.1.0/.gitignore +60 -0
  3. visus_web-0.1.0/LICENSE +109 -0
  4. visus_web-0.1.0/PKG-INFO +1110 -0
  5. visus_web-0.1.0/README.md +963 -0
  6. visus_web-0.1.0/TESTING.md +46 -0
  7. visus_web-0.1.0/examples/demo_rpa.py +150 -0
  8. visus_web-0.1.0/examples/dolar.py +15 -0
  9. visus_web-0.1.0/examples/login.py +27 -0
  10. visus_web-0.1.0/examples/login_mcp.py +51 -0
  11. visus_web-0.1.0/examples/login_rpa.py +108 -0
  12. visus_web-0.1.0/mkdocs.yml +41 -0
  13. visus_web-0.1.0/pyproject.toml +102 -0
  14. visus_web-0.1.0/skills/developing-visus-web/SKILL.md +74 -0
  15. visus_web-0.1.0/skills/using-visus-web/SKILL.md +161 -0
  16. visus_web-0.1.0/src/visus/web/__init__.py +64 -0
  17. visus_web-0.1.0/src/visus/web/api/__init__.py +0 -0
  18. visus_web-0.1.0/src/visus/web/api/_htmlsel.py +175 -0
  19. visus_web-0.1.0/src/visus/web/api/_steps.py +235 -0
  20. visus_web-0.1.0/src/visus/web/api/assertions.py +257 -0
  21. visus_web-0.1.0/src/visus/web/api/browser.py +47 -0
  22. visus_web-0.1.0/src/visus/web/api/context.py +78 -0
  23. visus_web-0.1.0/src/visus/web/api/events.py +91 -0
  24. visus_web-0.1.0/src/visus/web/api/fields.py +41 -0
  25. visus_web-0.1.0/src/visus/web/api/frame_locator.py +51 -0
  26. visus_web-0.1.0/src/visus/web/api/input.py +70 -0
  27. visus_web-0.1.0/src/visus/web/api/locator.py +512 -0
  28. visus_web-0.1.0/src/visus/web/api/page.py +472 -0
  29. visus_web-0.1.0/src/visus/web/async_api/__init__.py +1205 -0
  30. visus_web-0.1.0/src/visus/web/backends/__init__.py +0 -0
  31. visus_web-0.1.0/src/visus/web/backends/base.py +161 -0
  32. visus_web-0.1.0/src/visus/web/backends/browsers/__init__.py +0 -0
  33. visus_web-0.1.0/src/visus/web/backends/browsers/_ie_preflight.py +127 -0
  34. visus_web-0.1.0/src/visus/web/backends/browsers/chrome.py +45 -0
  35. visus_web-0.1.0/src/visus/web/backends/browsers/edge.py +45 -0
  36. visus_web-0.1.0/src/visus/web/backends/browsers/edge_ie.py +102 -0
  37. visus_web-0.1.0/src/visus/web/backends/browsers/firefox.py +30 -0
  38. visus_web-0.1.0/src/visus/web/backends/selenium/__init__.py +0 -0
  39. visus_web-0.1.0/src/visus/web/backends/selenium/_diagnostics.py +179 -0
  40. visus_web-0.1.0/src/visus/web/backends/selenium/actionability.py +132 -0
  41. visus_web-0.1.0/src/visus/web/backends/selenium/driver_delegate.py +1319 -0
  42. visus_web-0.1.0/src/visus/web/backends/selenium/expect_engine.py +214 -0
  43. visus_web-0.1.0/src/visus/web/backends/selenium/js/__init__.py +7 -0
  44. visus_web-0.1.0/src/visus/web/backends/selenium/js/bundle.js +885 -0
  45. visus_web-0.1.0/src/visus/web/backends/selenium/resolver.py +68 -0
  46. visus_web-0.1.0/src/visus/web/backends/selenium_backend.py +193 -0
  47. visus_web-0.1.0/src/visus/web/cli/__init__.py +1 -0
  48. visus_web-0.1.0/src/visus/web/cli/codegen.py +86 -0
  49. visus_web-0.1.0/src/visus/web/cli/console.py +249 -0
  50. visus_web-0.1.0/src/visus/web/cli/main.py +906 -0
  51. visus_web-0.1.0/src/visus/web/cli/session_client.py +231 -0
  52. visus_web-0.1.0/src/visus/web/cli/session_server.py +777 -0
  53. visus_web-0.1.0/src/visus/web/config.py +13 -0
  54. visus_web-0.1.0/src/visus/web/engine.py +23 -0
  55. visus_web-0.1.0/src/visus/web/errors.py +31 -0
  56. visus_web-0.1.0/src/visus/web/mcp/__init__.py +1 -0
  57. visus_web-0.1.0/src/visus/web/mcp/server.py +761 -0
  58. visus_web-0.1.0/src/visus/web/mcp/session.py +160 -0
  59. visus_web-0.1.0/src/visus/web/network.py +444 -0
  60. visus_web-0.1.0/src/visus/web/observability/__init__.py +0 -0
  61. visus_web-0.1.0/src/visus/web/observability/recorder.py +225 -0
  62. visus_web-0.1.0/src/visus/web/observability/report.py +689 -0
  63. visus_web-0.1.0/src/visus/web/py.typed +0 -0
  64. visus_web-0.1.0/src/visus/web/pytest_plugin.py +115 -0
  65. visus_web-0.1.0/src/visus/web/registry.py +43 -0
  66. visus_web-0.1.0/src/visus/web/rpa.py +145 -0
  67. visus_web-0.1.0/src/visus/web/tracing.py +104 -0
  68. visus_web-0.1.0/src/visus/web/vision/__init__.py +6 -0
  69. visus_web-0.1.0/src/visus/web/vision/_images.py +42 -0
  70. visus_web-0.1.0/src/visus/web/vision/imaging.py +72 -0
  71. visus_web-0.1.0/src/visus/web/vision/ocr.py +46 -0
  72. visus_web-0.1.0/tests/conftest.py +56 -0
  73. visus_web-0.1.0/tests/fixtures/actions.html +28 -0
  74. visus_web-0.1.0/tests/fixtures/backtrack.html +11 -0
  75. visus_web-0.1.0/tests/fixtures/backtrack_depth.html +21 -0
  76. visus_web-0.1.0/tests/fixtures/deep.html +3 -0
  77. visus_web-0.1.0/tests/fixtures/download.txt +1 -0
  78. visus_web-0.1.0/tests/fixtures/downloads.html +5 -0
  79. visus_web-0.1.0/tests/fixtures/expects.html +21 -0
  80. visus_web-0.1.0/tests/fixtures/fields.html +88 -0
  81. visus_web-0.1.0/tests/fixtures/forms.html +16 -0
  82. visus_web-0.1.0/tests/fixtures/frames.html +5 -0
  83. visus_web-0.1.0/tests/fixtures/index.html +8 -0
  84. visus_web-0.1.0/tests/fixtures/inner.html +7 -0
  85. visus_web-0.1.0/tests/fixtures/input.html +14 -0
  86. visus_web-0.1.0/tests/fixtures/interactions.html +38 -0
  87. visus_web-0.1.0/tests/fixtures/locators.html +24 -0
  88. visus_web-0.1.0/tests/fixtures/network.html +13 -0
  89. visus_web-0.1.0/tests/fixtures/overlay.html +15 -0
  90. visus_web-0.1.0/tests/fixtures/page2.html +2 -0
  91. visus_web-0.1.0/tests/fixtures/popups.html +8 -0
  92. visus_web-0.1.0/tests/fixtures/rpa.html +13 -0
  93. visus_web-0.1.0/tests/fixtures/shadow.html +11 -0
  94. visus_web-0.1.0/tests/fixtures/smartsel.html +19 -0
  95. visus_web-0.1.0/tests/test_api_wiring.py +281 -0
  96. visus_web-0.1.0/tests/test_async_api_unit.py +1419 -0
  97. visus_web-0.1.0/tests/test_backend_protocols.py +239 -0
  98. visus_web-0.1.0/tests/test_browsers_chrome.py +22 -0
  99. visus_web-0.1.0/tests/test_browsers_edge.py +31 -0
  100. visus_web-0.1.0/tests/test_browsers_edge_ie.py +51 -0
  101. visus_web-0.1.0/tests/test_browsers_firefox.py +62 -0
  102. visus_web-0.1.0/tests/test_cli.py +197 -0
  103. visus_web-0.1.0/tests/test_cli_session.py +2024 -0
  104. visus_web-0.1.0/tests/test_codegen.py +93 -0
  105. visus_web-0.1.0/tests/test_config.py +18 -0
  106. visus_web-0.1.0/tests/test_diagnostics.py +179 -0
  107. visus_web-0.1.0/tests/test_e2e_actions.py +87 -0
  108. visus_web-0.1.0/tests/test_e2e_actions_more.py +78 -0
  109. visus_web-0.1.0/tests/test_e2e_async.py +179 -0
  110. visus_web-0.1.0/tests/test_e2e_async_more.py +533 -0
  111. visus_web-0.1.0/tests/test_e2e_async_parity.py +384 -0
  112. visus_web-0.1.0/tests/test_e2e_backtrack.py +77 -0
  113. visus_web-0.1.0/tests/test_e2e_cli_session.py +109 -0
  114. visus_web-0.1.0/tests/test_e2e_contexts.py +91 -0
  115. visus_web-0.1.0/tests/test_e2e_downloads.py +19 -0
  116. visus_web-0.1.0/tests/test_e2e_edge.py +14 -0
  117. visus_web-0.1.0/tests/test_e2e_edge_ie.py +35 -0
  118. visus_web-0.1.0/tests/test_e2e_edge_rpa.py +29 -0
  119. visus_web-0.1.0/tests/test_e2e_errors.py +40 -0
  120. visus_web-0.1.0/tests/test_e2e_events.py +47 -0
  121. visus_web-0.1.0/tests/test_e2e_expect.py +59 -0
  122. visus_web-0.1.0/tests/test_e2e_expect_more.py +93 -0
  123. visus_web-0.1.0/tests/test_e2e_fields.py +236 -0
  124. visus_web-0.1.0/tests/test_e2e_firefox.py +108 -0
  125. visus_web-0.1.0/tests/test_e2e_frames.py +49 -0
  126. visus_web-0.1.0/tests/test_e2e_input.py +90 -0
  127. visus_web-0.1.0/tests/test_e2e_launch.py +79 -0
  128. visus_web-0.1.0/tests/test_e2e_locators.py +108 -0
  129. visus_web-0.1.0/tests/test_e2e_locators_more.py +167 -0
  130. visus_web-0.1.0/tests/test_e2e_mcp.py +430 -0
  131. visus_web-0.1.0/tests/test_e2e_navigation.py +220 -0
  132. visus_web-0.1.0/tests/test_e2e_network.py +116 -0
  133. visus_web-0.1.0/tests/test_e2e_observability.py +178 -0
  134. visus_web-0.1.0/tests/test_e2e_rpa.py +65 -0
  135. visus_web-0.1.0/tests/test_e2e_rpa_basics.py +67 -0
  136. visus_web-0.1.0/tests/test_e2e_smartsel.py +50 -0
  137. visus_web-0.1.0/tests/test_e2e_vision.py +86 -0
  138. visus_web-0.1.0/tests/test_engine.py +26 -0
  139. visus_web-0.1.0/tests/test_errors.py +28 -0
  140. visus_web-0.1.0/tests/test_events.py +73 -0
  141. visus_web-0.1.0/tests/test_expect_engine_unit.py +88 -0
  142. visus_web-0.1.0/tests/test_htmlsel.py +99 -0
  143. visus_web-0.1.0/tests/test_input_wiring.py +224 -0
  144. visus_web-0.1.0/tests/test_locator_steps.py +291 -0
  145. visus_web-0.1.0/tests/test_mcp_list_fields.py +112 -0
  146. visus_web-0.1.0/tests/test_mcp_server.py +133 -0
  147. visus_web-0.1.0/tests/test_network_capture.py +152 -0
  148. visus_web-0.1.0/tests/test_network_capture_cdp.py +431 -0
  149. visus_web-0.1.0/tests/test_pytest_plugin.py +146 -0
  150. visus_web-0.1.0/tests/test_registry.py +26 -0
  151. visus_web-0.1.0/tests/test_selenium_backend_protocol.py +139 -0
  152. visus_web-0.1.0/tests/test_steps_backtrack.py +243 -0
  153. visus_web-0.1.0/tests/test_tracing_unit.py +268 -0
  154. visus_web-0.1.0/tests/test_translation.py +28 -0
  155. visus_web-0.1.0/tests/test_vision.py +175 -0
@@ -0,0 +1,51 @@
1
+ name: Publish to PyPI
2
+
3
+ # Publishes to PyPI when you cut a GitHub Release (tag vX.Y.Z).
4
+ # A plain `git push` does NOT publish — only a published Release does.
5
+ # Auth is via PyPI Trusted Publishing (OIDC): no tokens, no secrets.
6
+
7
+ on:
8
+ release:
9
+ types: [published]
10
+ workflow_dispatch: # allow a manual run from the Actions tab
11
+
12
+ jobs:
13
+ build:
14
+ name: Build distribution
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.12"
22
+
23
+ - name: Build sdist + wheel and validate metadata
24
+ run: |
25
+ python -m pip install --upgrade pip build twine
26
+ python -m build
27
+ twine check dist/*
28
+
29
+ - uses: actions/upload-artifact@v4
30
+ with:
31
+ name: dist
32
+ path: dist/
33
+
34
+ publish:
35
+ name: Publish to PyPI
36
+ needs: build
37
+ runs-on: ubuntu-latest
38
+ # The environment name MUST match what you set on PyPI's trusted publisher.
39
+ environment:
40
+ name: pypi
41
+ url: https://pypi.org/p/visus-web
42
+ permissions:
43
+ id-token: write # required for OIDC / trusted publishing
44
+ steps:
45
+ - uses: actions/download-artifact@v4
46
+ with:
47
+ name: dist
48
+ path: dist/
49
+
50
+ - name: Publish to PyPI
51
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,60 @@
1
+ # ---- Reference clones (study material, NOT part of this project) ----
2
+ /playwright/
3
+ /playwright-python/
4
+ /botcity-framework-web-python/
5
+
6
+ # ---- Local-only planning docs (specs/plans kept on disk, NOT tracked) ----
7
+ /docs/
8
+
9
+ # ---- Workflow research temp files ----
10
+ _synthesis.tmp.md
11
+ _report_*.tmp.md
12
+ *.tmp.md
13
+
14
+ # ---- Python ----
15
+ __pycache__/
16
+ *.py[cod]
17
+ *$py.class
18
+ *.egg-info/
19
+ .eggs/
20
+ build/
21
+ dist/
22
+ wheels/
23
+ *.egg
24
+
25
+ # ---- Virtualenvs / tooling ----
26
+ .venv/
27
+ venv/
28
+ .env
29
+ .python-version
30
+ uv.lock
31
+
32
+ # ---- Caches ----
33
+ .pytest_cache/
34
+ .ruff_cache/
35
+ .mypy_cache/
36
+ .coverage
37
+ .coverage.*
38
+ htmlcov/
39
+ coverage.xml
40
+ .tox/
41
+ .nox/
42
+
43
+ # ---- Drivers / browser artifacts produced at runtime ----
44
+ # CLI session daemon dir (session.json, daemon.log) — at any depth
45
+ .visus/
46
+ downloads/
47
+ *.trace.zip
48
+ # rpa() default output folder (run.zip / report.html per run) — at any depth
49
+ visus-runs/
50
+ # WebDriver executables provided locally (e.g. the IE driver for Edge IE-mode) — never commit
51
+ IEDriverServer.exe
52
+ /*.exe
53
+ /drivers/
54
+
55
+ # ---- Editors / OS ----
56
+ .idea/
57
+ .vscode/
58
+ *.swp
59
+ .DS_Store
60
+ Thumbs.db
@@ -0,0 +1,109 @@
1
+ Licença de Software Proprietário — visus-web
2
+ Proprietary Software License — visus-web
3
+
4
+ Copyright (c) 2026 Matheus Pereira. Todos os direitos reservados. / All rights reserved.
5
+
6
+ ================================================================================
7
+ PORTUGUÊS
8
+ ================================================================================
9
+
10
+ Este software e o respectivo código-fonte ("Software") são de propriedade
11
+ exclusiva de Matheus Pereira ("Licenciante") e protegidos por leis de direitos
12
+ autorais e tratados internacionais. O Software NÃO é software livre nem de
13
+ código aberto.
14
+
15
+ 1. CONCESSÃO DE LICENÇA
16
+ Sujeito ao cumprimento integral destes termos, o Licenciante concede a você
17
+ ("Licenciado") uma licença pessoal, mundial, não exclusiva, intransferível e
18
+ revogável para INSTALAR e USAR o Software, na forma em que é distribuído, como
19
+ dependência em seus próprios projetos e aplicações.
20
+
21
+ 2. RESTRIÇÕES
22
+ Salvo autorização prévia e por escrito do Licenciante, é EXPRESSAMENTE
23
+ PROIBIDO:
24
+ (a) copiar, reproduzir ou publicar o código-fonte do Software, no todo ou em
25
+ parte, em qualquer meio ou repositório;
26
+ (b) redistribuir, sublicenciar, vender, alugar, emprestar, ceder ou de
27
+ qualquer forma disponibilizar o Software a terceiros, isoladamente ou
28
+ como parte de outro produto;
29
+ (c) modificar, adaptar, traduzir ou criar obras derivadas do Software;
30
+ (d) realizar engenharia reversa, descompilar, desmontar ou de outro modo
31
+ tentar obter o código-fonte a partir de versões compiladas;
32
+ (e) remover, ocultar ou alterar avisos de direitos autorais, marcas ou esta
33
+ licença;
34
+ (f) usar o Software para criar um produto ou serviço concorrente.
35
+
36
+ 3. PROPRIEDADE
37
+ O Software é licenciado, não vendido. O Licenciante retém todos os direitos,
38
+ títulos e interesses sobre o Software, incluindo todos os direitos de
39
+ propriedade intelectual. Nenhum direito é concedido por implicação.
40
+
41
+ 4. RESCISÃO
42
+ Esta licença é automaticamente rescindida, sem aviso, caso o Licenciado
43
+ descumpra qualquer destes termos. Na rescisão, o Licenciado deve cessar todo
44
+ uso e destruir todas as cópias do Software em sua posse.
45
+
46
+ 5. ISENÇÃO DE GARANTIAS
47
+ O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIAS DE
48
+ QUALQUER NATUREZA, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO SE LIMITANDO
49
+ A, GARANTIAS DE COMERCIABILIDADE, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO
50
+ VIOLAÇÃO.
51
+
52
+ 6. LIMITAÇÃO DE RESPONSABILIDADE
53
+ EM NENHUMA HIPÓTESE O LICENCIANTE SERÁ RESPONSÁVEL POR QUAISQUER DANOS
54
+ (DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS OU CONSEQUENCIAIS) DECORRENTES DO
55
+ USO OU DA IMPOSSIBILIDADE DE USO DO SOFTWARE.
56
+
57
+ Para licenças comerciais, de redistribuição ou usos não previstos acima, entre
58
+ em contato com o Licenciante.
59
+
60
+ ================================================================================
61
+ ENGLISH
62
+ ================================================================================
63
+
64
+ This software and its source code (the "Software") are the exclusive property of
65
+ Matheus Pereira (the "Licensor") and are protected by copyright law and
66
+ international treaties. The Software is NOT free or open-source software.
67
+
68
+ 1. LICENSE GRANT
69
+ Subject to full compliance with these terms, the Licensor grants you (the
70
+ "Licensee") a personal, worldwide, non-exclusive, non-transferable, revocable
71
+ license to INSTALL and USE the Software, as distributed, as a dependency in
72
+ your own projects and applications.
73
+
74
+ 2. RESTRICTIONS
75
+ Except with the Licensor's prior written permission, you may NOT:
76
+ (a) copy, reproduce, or publish the Software's source code, in whole or in
77
+ part, on any medium or repository;
78
+ (b) redistribute, sublicense, sell, rent, lease, lend, assign, or otherwise
79
+ make the Software available to third parties, alone or as part of another
80
+ product;
81
+ (c) modify, adapt, translate, or create derivative works of the Software;
82
+ (d) reverse engineer, decompile, disassemble, or otherwise attempt to derive
83
+ the source code from compiled forms;
84
+ (e) remove, obscure, or alter any copyright notices, trademarks, or this
85
+ license;
86
+ (f) use the Software to build a competing product or service.
87
+
88
+ 3. OWNERSHIP
89
+ The Software is licensed, not sold. The Licensor retains all right, title, and
90
+ interest in and to the Software, including all intellectual property rights.
91
+ No rights are granted by implication.
92
+
93
+ 4. TERMINATION
94
+ This license terminates automatically, without notice, if the Licensee
95
+ breaches any of these terms. Upon termination, the Licensee must cease all use
96
+ and destroy all copies of the Software in their possession.
97
+
98
+ 5. DISCLAIMER OF WARRANTY
99
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
100
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
101
+ FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
102
+
103
+ 6. LIMITATION OF LIABILITY
104
+ IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY DAMAGES (DIRECT, INDIRECT,
105
+ INCIDENTAL, SPECIAL, OR CONSEQUENTIAL) ARISING OUT OF THE USE OF OR INABILITY
106
+ TO USE THE SOFTWARE.
107
+
108
+ For commercial licenses, redistribution rights, or any use not permitted above,
109
+ please contact the Licensor.