Skip to content

Ship the listener inside the package, allow no-port URLs - #324

Merged
timdegroot1996 merged 1 commit into
mainfrom
listener-in-package
Sep 14, 2026
Merged

timdegroot1996 merged 1 commit into
mainfrom
listener-in-package

Conversation

@timdegroot1996

Copy link
Copy Markdown
Collaborator

Summary

Closes #317.

  • Moves the Robot Framework listener into robotframework_dashboard/robotdashboardlistener.py so it's available the moment the package is pip installed — no separate download from GitHub, which matters in closed-off/offline CI environments. Reference it via the dotted module path: --listener robotframework_dashboard.robotdashboardlistener.
  • Drops the requests dependency entirely: HTTP (multipart upload, JSON DELETE, HTTPS/SSL context, basic auth) is now implemented on urllib/ssl/json from the standard library, so the packaged listener adds zero runtime dependencies beyond Robot Framework itself.
  • Fixes the "no port" oversight raised in the issue: host/port listener args (and --host/--port on the standalone robotdashboardscript.py pusher) can omit the port entirely — pass port= (listener) or --port "" (script) — for servers reachable on the protocol's default port (80/443) or behind a reverse proxy that doesn't expose one.
  • example/listener/robotdashboardlistener.py is now a one-line re-export of the packaged module, kept for anyone who prefers pointing --listener at a local file path instead of the dotted import.
  • Docs and code now cross-link both ways (docs page ↔ canonical source file ↔ example re-export) so the implementation is easy to find from either side.

Test plan

  • bash scripts/python-tests.sh — 361/361 passing, robotdashboardlistener.py at 100% coverage (50 new tests mocking urlopen instead of requests)
  • Manual end-to-end smoke test against a real running dashboard server (not mocked): ran real Robot Framework suites through robot --listener robotframework_dashboard.robotdashboardlistener via the actually-pip installed package, confirming output upload, log upload + DB path linking, and the no-port path (server bound to port 80, listener with port=) all work over real HTTP with zero extra dependencies installed
  • npm run docs:build — docs build clean
  • Updated docs/listener-integration.md, docs/installation-version-info.md, .github/skills/listener-integration.md

🤖 Generated with Claude Code

- Move the Robot Framework listener into robotframework_dashboard/robotdashboardlistener.py
  so it's available the moment the package is pip-installed, with no separate download from
  GitHub needed (useful in closed-off/offline CI environments). Reference it via the dotted
  module path: --listener robotframework_dashboard.robotdashboardlistener
- Drop the 'requests' dependency entirely: HTTP (multipart upload, JSON DELETE, HTTPS/SSL
  context, basic auth) is now implemented on top of urllib/ssl/json from the standard library,
  so the listener adds zero runtime dependencies beyond Robot Framework itself.
- Allow omitting the port from the built URL (host/port args on the listener, and --host/--port
  on the standalone robotdashboardscript.py pusher): pass port= (listener) or --port "" (script)
  for servers reachable on the protocol's default port or behind a reverse proxy that doesn't
  expose one.
- example/listener/robotdashboardlistener.py is now a one-line re-export of the packaged module,
  kept for anyone who prefers a local file path over the dotted import.
- Add 50 unit tests (100% coverage) for the packaged listener, mocking urlopen instead of
  requests.
- Update docs/listener-integration.md, docs/installation-version-info.md, and
  .github/skills/listener-integration.md to lead with the packaged/dotted-path usage and
  document the no-port option; cross-link the docs page and the canonical source file both ways.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@timdegroot1996
timdegroot1996 merged commit 4e4b522 into main Sep 14, 2026
3 checks passed
@timdegroot1996
timdegroot1996 deleted the listener-in-package branch September 16, 2026 01:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Improvement] Robotframework Listener in package

1 participant