visus-web 0.3.2__tar.gz → 0.3.3__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.
- {visus_web-0.3.2 → visus_web-0.3.3}/PKG-INFO +1 -1
- {visus_web-0.3.2 → visus_web-0.3.3}/RELEASING.md +5 -2
- {visus_web-0.3.2 → visus_web-0.3.3}/pyproject.toml +1 -1
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/__init__.py +1 -1
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/js/bundle.js +10 -12
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/SKILL.md +1 -1
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_page_ops.py +8 -2
- {visus_web-0.3.2 → visus_web-0.3.3}/.claude/skills/developing-visus-web/SKILL.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/.github/dependabot.yml +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/.github/workflows/ci.yml +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/.github/workflows/publish.yml +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/.gitignore +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/.pre-commit-config.yaml +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/CONTRIBUTING.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/LICENSE +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/NOTICE +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/README.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/SECURITY.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/TESTING.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/coverage-floors.json +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/docs/agent-skill.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/examples/demo_rpa.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/examples/dolar.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/examples/login.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/examples/login_mcp.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/examples/login_rpa.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/mkdocs.yml +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/page.pdf +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/page.png +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/scripts/check_coverage.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/_htmlsel.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/_steps.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/assertions.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/browser.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/context.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/devices.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/events.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/fields.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/frame_locator.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/input.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/locator.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/page.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/api/route.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/async_api/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/base.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/browsers/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/browsers/_ie_preflight.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/browsers/chrome.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/browsers/edge.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/browsers/edge_ie.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/browsers/firefox.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/_diagnostics.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/actionability.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/cdp_fetch.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/driver_delegate.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/expect_engine.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/js/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium/resolver.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/backends/selenium_backend.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/__main__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/_entry.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/codegen.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/compact.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/config.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/console.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/fleet.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/main.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/output.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/session_client.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/session_server.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/skill_check.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/cli/skills.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/config.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/engine.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/errors.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/mcp/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/mcp/server.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/mcp/session.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/network.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/observability/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/observability/recorder.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/observability/report.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/observability/video.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/ops/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/ops/captcha.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/ops/dates.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/ops/registry.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/ops/remote.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/ops/targeting.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/py.typed +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/pytest_plugin.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/registry.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/rpa.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-commands.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-json-and-piping.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-repl.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-session.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-targeting.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/library-api.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/mcp-tools.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/pytest-plugin.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/tracing-reports.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/troubleshooting.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/vision.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/windows-shell.md +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/tracing.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/vision/__init__.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/vision/_images.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/vision/imaging.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/vision/ocr.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/conftest.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/actions.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/agent_page.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/backtrack.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/backtrack_depth.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/captcha.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/captcha_turnstile.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/captcha_v3.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/clickables.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/datepicker.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/datepicker_form.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/deep.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/delayed.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/download.txt +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/downloads.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/dropzone.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/duplicates.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/expects.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/fields.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/forms.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/frames.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/hidden_duplicates.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/imagetarget.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/index.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/inner.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/input.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/interactions.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/links.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/locators.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/mouse.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/network.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/nullvsempty.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/overlay.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/page2.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/popups.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/route_fetch.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/rpa.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/shadow.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/shadow_click.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/smartsel.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/snapshot_tree.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/stale_a.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/stale_b.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/storage.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/upload_single.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/fixtures/visible_text.html +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_api_wiring.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_async_api_unit.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_backend_protocols.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_browsers_chrome.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_browsers_edge.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_browsers_edge_ie.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_browsers_firefox.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_captcha_service.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_ci_workflows.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_agent_loop.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_agent_matrix.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_attach.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_batch.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_compact.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_config.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_devtools.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_drop_upload.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_e2e_practice_login.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_emulation.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_fleet.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_index_resolution.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_input_devices.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_nth.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_output.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_positional_targets.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_repl_parity.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_route.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_run_code.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_session.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_session_flag_placement.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_sessions_named.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_skills.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_tabs_state.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_tracing.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_visible_text.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_vision_targeting.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_cli_wait.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_codegen.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_config.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_console_scripts.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_coverage_floors.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_daemon_command_override.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_diagnostics.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_download_partial_files.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_driver_handle_inheritance.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_actions.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_actions_more.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_async.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_async_more.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_async_parity.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_backtrack.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_cli_session.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_contexts.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_downloads.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_edge.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_edge_ie.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_edge_rpa.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_errors.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_events.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_expect.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_expect_more.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_fields.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_firefox.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_frames.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_input.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_launch.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_locators.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_locators_more.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_mcp.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_navigation.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_network.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_observability.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_rpa.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_rpa_basics.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_smartsel.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_e2e_vision.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_engine.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_errors.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_events.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_expect_engine_unit.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_htmlsel.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_http_site_e2e.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_input_wiring.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_installed_entry_points.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_list_clickables.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_locator_steps.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_mcp_attach.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_mcp_index.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_mcp_list_fields.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_mcp_nth.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_mcp_server.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_mcp_tracing.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_network_capture.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_network_capture_cdp.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_no_console_window.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_ops_registry.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_ops_remote.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_ops_targeting.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_pick_date.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_pytest_config.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_pytest_plugin.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_registry.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_repo_hygiene.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_repo_metadata.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_report_copy.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_route.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_selenium_backend_protocol.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_skill_check_binary_rename.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_skill_commands_parse.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_skill_docs.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_steps_backtrack.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_tracing_unit.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_translation.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_unique_locators.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_vision.py +0 -0
- {visus_web-0.3.2 → visus_web-0.3.3}/tests/test_window_maximized.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: visus-web
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: Modern, Playwright-style web automation on a pure Selenium engine, with BotCity RPA reach.
|
|
5
5
|
Project-URL: Homepage, https://github.com/botvisus/visus-framework-web
|
|
6
6
|
Project-URL: Repository, https://github.com/botvisus/visus-framework-web.git
|
|
@@ -11,11 +11,14 @@ branch to PyPI, unversioned and untested.
|
|
|
11
11
|
|
|
12
12
|
## Steps
|
|
13
13
|
|
|
14
|
-
1. **Bump the version in
|
|
15
|
-
sync — a release that bumps only one ships a package whose `visus version` lies.
|
|
14
|
+
1. **Bump the version in ALL THREE places.** They are duplicated and nothing keeps them
|
|
15
|
+
in sync — a release that bumps only one ships a package whose `visus version` lies.
|
|
16
16
|
|
|
17
17
|
- `pyproject.toml` → `[project] version = "X.Y.Z"` (line 7)
|
|
18
18
|
- `src/visus/web/__init__.py` → `__version__ = "X.Y.Z"` (line 17)
|
|
19
|
+
- `src/visus/web/skills/visus-web/SKILL.md` → frontmatter `version: "X.Y.Z"` (line 5;
|
|
20
|
+
`tests/test_skill_docs.py` fails the CI gate when it lags — that stopped v0.3.3's
|
|
21
|
+
first publish)
|
|
19
22
|
|
|
20
23
|
Verify: `uv run python -c "import visus.web; print(visus.web.__version__)"`
|
|
21
24
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "visus-web"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.3"
|
|
8
8
|
description = "Modern, Playwright-style web automation on a pure Selenium engine, with BotCity RPA reach."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -455,27 +455,25 @@
|
|
|
455
455
|
return out;
|
|
456
456
|
}
|
|
457
457
|
|
|
458
|
+
// The visus-studio highlight: brand green #2ea043, a 2px rounded border, a
|
|
459
|
+
// translucent green fill and a soft glow -- the same box the Studio draws.
|
|
460
|
+
var HIGHLIGHT_LOOK =
|
|
461
|
+
"border:2px solid #2ea043;background:rgba(46,160,67,0.14);" +
|
|
462
|
+
"box-shadow:0 0 0 1px rgba(46,160,67,0.35),0 0 14px rgba(46,160,67,0.55);";
|
|
463
|
+
|
|
458
464
|
function highlight(el, style) {
|
|
459
465
|
unhighlight();
|
|
460
466
|
if (!el || !el.getBoundingClientRect) return null;
|
|
461
467
|
var r = el.getBoundingClientRect();
|
|
462
|
-
// `style` (optional) replaces the default border
|
|
463
|
-
var
|
|
464
|
-
? "border:" + style + ";"
|
|
465
|
-
: "border:3px solid #cc785c;box-shadow:0 0 0 2px rgba(204,120,92,.35);";
|
|
468
|
+
// `style` (optional) replaces the default border, fill and glow, e.g. "2px dashed #0a0".
|
|
469
|
+
var look = style ? "border:" + style + ";" : HIGHLIGHT_LOOK;
|
|
466
470
|
var box = document.createElement("div");
|
|
467
471
|
box.setAttribute("data-visus-highlight", "1");
|
|
468
472
|
box.style.cssText =
|
|
469
|
-
"position:fixed;z-index:2147483647;pointer-events:none;box-sizing:border-box;" +
|
|
473
|
+
"position:fixed;z-index:2147483647;pointer-events:none;box-sizing:border-box;" +
|
|
474
|
+
"border-radius:3px;" + look +
|
|
470
475
|
"left:" + r.left + "px;top:" + r.top + "px;width:" + r.width + "px;height:" + r.height + "px;";
|
|
471
|
-
var cx = document.createElement("div");
|
|
472
|
-
cx.setAttribute("data-visus-highlight", "1");
|
|
473
|
-
cx.style.cssText =
|
|
474
|
-
"position:fixed;z-index:2147483647;pointer-events:none;width:10px;height:10px;" +
|
|
475
|
-
"border:2px solid #cc785c;border-radius:50%;" +
|
|
476
|
-
"left:" + (r.left + r.width / 2 - 5) + "px;top:" + (r.top + r.height / 2 - 5) + "px;";
|
|
477
476
|
document.documentElement.appendChild(box);
|
|
478
|
-
document.documentElement.appendChild(cx);
|
|
479
477
|
return { x: Math.round(r.left), y: Math.round(r.top), w: Math.round(r.width), h: Math.round(r.height) };
|
|
480
478
|
}
|
|
481
479
|
function unhighlight() {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: visus-web
|
|
3
3
|
description: Drive a real browser from the shell with the `visus` CLI — session daemon, list-fields/act-by-index, role/name targeting, expect-text, codegen, vision. Use when automating or testing a web page.
|
|
4
4
|
allowed-tools: Bash(visus:*) Bash(visus-web-mcp:*) Bash(pip:*) Bash(uvx:*)
|
|
5
|
-
version: "0.3.
|
|
5
|
+
version: "0.3.3"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# visus-web
|
|
@@ -120,8 +120,14 @@ def test_highlight_draws_and_hides_a_box_on_a_real_page(base_url: str) -> None:
|
|
|
120
120
|
|
|
121
121
|
try:
|
|
122
122
|
assert h.handle("highlight", {"selector": "#btn"})["ok"] is True
|
|
123
|
-
# highlight() appends
|
|
124
|
-
|
|
123
|
+
# highlight() appends ONE tagged box, in the visus-studio look: green #2ea043,
|
|
124
|
+
# 2px rounded border, a translucent green fill.
|
|
125
|
+
assert js("() => document.querySelectorAll('[data-visus-highlight]').length") == 1
|
|
126
|
+
look = js(
|
|
127
|
+
"() => { const s = document.querySelector('[data-visus-highlight]').style;"
|
|
128
|
+
" return [s.borderTopColor, s.borderTopWidth, s.backgroundColor, s.borderRadius]; }"
|
|
129
|
+
)
|
|
130
|
+
assert look == ["rgb(46, 160, 67)", "2px", "rgba(46, 160, 67, 0.14)", "3px"]
|
|
125
131
|
|
|
126
132
|
styled = h.handle("highlight", {"selector": "#btn", "style": "2px dashed rgb(0, 170, 0)"})
|
|
127
133
|
assert styled["ok"] is True, styled
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-commands.md
RENAMED
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-json-and-piping.md
RENAMED
|
File without changes
|
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-session.md
RENAMED
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/cli-targeting.md
RENAMED
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/library-api.md
RENAMED
|
File without changes
|
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/pytest-plugin.md
RENAMED
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/tracing-reports.md
RENAMED
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/troubleshooting.md
RENAMED
|
File without changes
|
|
File without changes
|
{visus_web-0.3.2 → visus_web-0.3.3}/src/visus/web/skills/visus-web/references/windows-shell.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|