OpenHands / OpenHands/software-agent-sdk
Canvas Extensions: Phase 1 test matrix
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 539
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 137
Description
- Install sources: git ref, SHA, repo subpath, local path.
- Disabled-by-default, duplicate installs, invalid/malformed manifests, smuggled
enabled: truepayloads. - Traversal/symlink-escape adversarial cases (security-owned review, not routine QA).
- Untracked directory placed directly in the install root is discovered but never auto-enabled.
- Refresh check never mutates or deactivates the active bundle; refresh apply requires its own fresh reconfirmation rather than reusing the install-time or a prior refresh's confirmation.
- Persistence, rollback, uninstall, 404s, auth, multi-backend switching.
Reference test files to extend/mirror: tests/sdk/extensions/installation/test_installation_manager.py and test_installation_metadata.py already cover the generic framework's happy paths. The disabled-by-default and self-heal-auto-enable cases above are gaps in that existing suite too, not just a canvas-extensions gap — e.g. test_installation_manager.py:172-182 has to explicitly call .disable() before testing force-reinstall preservation, because there's no existing test asserting a bare fresh install defaults to disabled.
Blocked by: OpenHands/software-agent-sdk#4352
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
First review the blocker, OpenHands/software-agent-sdk#4352. Then extend or mirror tests/sdk/extensions/installation/test_installation_manager.py and test_installation_metadata.py, including the referenced lines 172-182. Run the installation test suite and consider the matrix complete when the listed source, disabled-by-default, security, refresh, persistence, rollback, uninstall, error, authentication, and backend-switching cases are covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- testing-qa
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100