Skip to content

test: Cover the Ubuntu shell contract in Docker E2E - #17

Merged
soulevilx merged 2 commits into
developfrom
feature/ubuntu-e2e-coverage
Sep 29, 2026
Merged

soulevilx merged 2 commits into
developfrom
feature/ubuntu-e2e-coverage

Conversation

@soulevilx

Copy link
Copy Markdown
Contributor

Summary

Expand the Docker Ubuntu E2E suite so the public shell contract is exercised against a real sshd, and keep a late ssh2 error from becoming an uncaught exception after client.end().

npm run test:e2e is the local runner and the CI e2e job. It now refuses to start unless Node is >=24.21.0 <25 and the Docker daemon is running.

Scope

  • e2e/client.e2e.test.ts, tools/e2e.sh, vitest.e2e.config.ts
  • src/session.ts and tests/session-races.test.ts for the post-close error listener
  • README.md, docs/usage.md, CHANGELOG.md

Out of scope: resync failure against a healthy bash (still a unit test), numeric option bounds, and publishing a release.

Acceptance criteria / DoD

  • npm run test:e2e runs locally against Ubuntu 24.04 sshd
  • The suite covers auth failure, host-key mismatch, skip-verify, ready and command timeouts, idle timeout, abort, output cap, pager, disconnect barrier, shell exit, and PTY TERM
  • A socket error emitted after end() does not escape as an uncaught exception

Test plan

  • npm run test:coverage (166 unit tests, per-file floor held)
  • npm run test:e2e on Node 24.21.0 (28 Docker Ubuntu tests passed)
  • CI jobs ci and e2e on this PR

ssh2 emits error after client.end() returns. Dropping the listener
made that late error an uncaught exception.
The local runner checks Node 24 and a running Docker daemon. The suite
exercises auth, timeouts, abort, pager, and disconnect against sshd.
@coderabbitai

coderabbitai Bot commented Sep 29, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 49 seconds.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 33f8a96e-9d5d-4c04-abb8-d4131b996fdc

📥 Commits

Reviewing files that changed from the base of the PR and between ba9d5c5 and 8cd5d4b.

📒 Files selected for processing (8)
  • CHANGELOG.md
  • README.md
  • docs/usage.md
  • e2e/client.e2e.test.ts
  • src/session.ts
  • tests/session-races.test.ts
  • tools/e2e.sh
  • vitest.e2e.config.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@soulevilx
soulevilx merged commit 095e0d9 into develop Sep 29, 2026
9 checks passed
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing

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.

1 participant