Skip to content

Select hosted e2e and native_e2e on Mac self-hosted-tests. - #4200

Open
bogwi wants to merge 3 commits into
mainfrom
danvi/feat/add-macos-e2e-to-mac-ci
Open

bogwi wants to merge 3 commits into
mainfrom
danvi/feat/add-macos-e2e-to-mac-ci

Conversation

@bogwi

@bogwi bogwi commented Sep 17, 2026

Copy link
Copy Markdown
Member

Run the coordinator, datacollection, daemon, viewer websocket, relay, and relay-bridge e2e tests, plus the livox native loopback, on Mac CI as well as on Linux. Introduce dedicated test marks - pytest.mark.macos_ci, and pytest.mark.skipif_macos_ci

@greptile-apps

greptile-apps Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

No blocking findings were identified; the change is safe to merge based on the available evidence.

What we checked:

  • Attempted collection of the CI-equivalent selector across the six newly macOS-marked end-to-end modules and the Livox loopback module. T-Rex
  • Dependency setup halted before pytest collection because PyAudio could not compile without portaudio.h, so no test list or runtime result was produced. T-Rex

Summary

  • Expands the experimental self-hosted macOS test selection to include selected hosted end-to-end suites and the existing native Livox loopback coverage.
  • Adds and applies a macos pytest marker for the hosted suites intended to run on the macOS runner.
  • No actionable issues were identified.

T-Rex validation blocked

  • The targeted macOS test collection could not start because the environment cannot build PyAudio without the PortAudio development header (portaudio.h); the available Linux host also cannot exercise macOS-specific behavior.

Reviews (1) · Last reviewed commit: "Select hosted e2e and native_e2e on Mac ..."

@codecov

codecov Bot commented Sep 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

@@            Coverage Diff             @@
##             main    #4200      +/-   ##
==========================================
+ Coverage   79.59%   79.63%   +0.03%     
==========================================
  Files        1500     1500              
  Lines      141760   141769       +9     
  Branches    12136    12136              
==========================================
+ Hits       112835   112895      +60     
+ Misses      25501    25451      -50     
+ Partials     3424     3423       -1     
Components Coverage Δ
Tests 95.46% <100.00%> (+0.08%) ⬆️
Flag Coverage Δ
OS-ubuntu-24.04-arm 75.17% <100.00%> (+<0.01%) ⬆️
OS-ubuntu-latest 76.00% <100.00%> (+<0.01%) ⬆️
Py-3.10 75.78% <100.00%> (+<0.01%) ⬆️
Py-3.11 75.98% <100.00%> (+<0.01%) ⬆️
Py-3.12 75.99% <100.00%> (+<0.01%) ⬆️
SelfHosted-Large 30.63% <100.00%> (+<0.01%) ⬆️
SelfHosted-Linux 36.70% <100.00%> (+<0.01%) ⬆️
SelfHosted-macOS 38.57% <100.00%> (+1.54%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/conftest.py 83.41% <100.00%> (+0.17%) ⬆️
dimos/core/test_e2e_daemon.py 98.62% <100.00%> (+<0.01%) ⬆️
dimos/e2e_tests/test_control_coordinator.py 100.00% <100.00%> (ø)
dimos/imitation/test_datacollection_e2e.py 96.42% <ø> (ø)
dimos/visualization/rerun/test_viewer_ws_e2e.py 88.76% <100.00%> (+0.12%) ⬆️
dimos/web/relay_bridge/test_relay_bridge_e2e.py 95.76% <100.00%> (+<0.01%) ⬆️
dimos/web/relay_bridge/test_relay_e2e.py 94.61% <100.00%> (+0.01%) ⬆️

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions github-actions Bot added ready-to-merge Required CI checks have passed on this PR and removed ready-to-merge Required CI checks have passed on this PR labels Sep 17, 2026
@bogwi
bogwi force-pushed the danvi/feat/add-macos-e2e-to-mac-ci branch from 0ddf9eb to 3100524 Compare September 17, 2026 13:27
@github-actions github-actions Bot added ready-to-merge Required CI checks have passed on this PR and removed ready-to-merge Required CI checks have passed on this PR labels Sep 17, 2026
@bogwi
bogwi added this pull request to stack #4205 September 17, 2026 14:31
@bogwi
bogwi force-pushed the danvi/feat/add-macos-e2e-to-mac-ci branch from 3100524 to 3d739a5 Compare September 18, 2026 02:46
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Sep 18, 2026
@bogwi
bogwi force-pushed the danvi/feat/add-macos-e2e-to-mac-ci branch from 3d739a5 to be9274c Compare September 18, 2026 03:55
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Sep 18, 2026
bogwi added 3 commits September 18, 2026 14:53
Register pytest.mark.macos and add it to Mac matrix.markers with native_e2e so Darwin-green hosted e2e stays on hosted Linux tests and also runs on Mac CI.
macos was easy to mix with skipif_macos and with Darwin itself. Mac self-hosted-tests still selects the same files via matrix.markers; hosted tests not (...) still omits the marker.
@bogwi
bogwi force-pushed the danvi/feat/add-macos-e2e-to-mac-ci branch from be9274c to 9c7abd1 Compare September 18, 2026 05:54
@github-actions github-actions Bot added ready-to-merge Required CI checks have passed on this PR and removed ready-to-merge Required CI checks have passed on this PR labels Sep 18, 2026
Comment thread .github/workflows/ci.yml
# web_browser: the cockpit browser e2e that Linux runs in the `web` job.
markers: "self_hosted or web_browser"
# native_e2e: livox live loopback that Linux runs in the rust job.
# macos_ci: hosted job tests also collected here; not in hosted not (...).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm still a little confused over this marker. It seems like it's meant to only run in CI, but I see nothing skipping it locally. It's called ci, but doesn't run in the normal CI job, only the self-hosted one.

Why not use the existing self_hosted marker with a normal OS skipif?

@bogwi bogwi Sep 18, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this PR puts pytestmark = pytest.mark.macos_ci on files that were already in hosted tests (daemon, coordinator, datacollection, viewer ws, relay).

Hosted Linux tests still collects them because they are not self_hosted / web_browser / native_e2e. Mac -m now includes macos_ci so Mac collects the same files.

Remarking files marked macos_ci with self_hosted would drop them from hosted tests -> (not (self_hosted or …)). Linux self-hosted would then pick them up.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But, don't we already have them running in #3681 then?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, it looks like some of these are the ones I've been skipping due to the runner not sleeping appropriately. I think I'd be more inclined to switch them to self_hosted if we can't get them working on the basic runner, rather than introducing more markers (we have too many already...).

Comment thread .github/workflows/ci.yml
container: null # run on host — `container:` is Linux-only
# web_browser: the cockpit browser e2e that Linux runs in the `web` job.
markers: "self_hosted or web_browser"
# native_e2e: livox live loopback that Linux runs in the rust job.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm also a little confused why we'd have a marker that is run in the rust job and one self_hosted job? If the tests work here, should it not be removed from the rust job, in which case the entire marker can be removed instead?

@bogwi bogwi Sep 18, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mixing a bit select markers (pytest -m) with skipif markers (pytest_collection_modifyitems).

It does not mean ci-only or move off the rust job.

Mac -m adding native_e2e is the same pattern as web_browser: Linux keeps the specialist job and Mac self-hosted-tests also selects that mark.


If native_e2e is removed from the rust job and the mark is deleted, Linux CI stops running test_live_loopback_handshake_and_stream unless that function is marked self_hosted (then Linux self-hosted would run it, rust would not).

Mac work is not a reason to drop the Linux rust step. We have the native_e2e mark so two jobs can name the same set without putting self_hosted on it which would also pull it into Linux self-hosted and out of hosted tests.

@Dreamsorcerer Dreamsorcerer Sep 19, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If native_e2e is removed from the rust job and the mark is deleted, Linux CI stops running test_live_loopback_handshake_and_stream unless that function is marked self_hosted (then Linux self-hosted would run it, rust would not).

Yeah, that's what I'm expecting. If the test can be run in self-hosted, why does it need to run in the rust job? I think the entire rust job needs to go.

My expectation going forward is that rust modules are built in one job (I'd assume they will all move into the cachix-build job in future), and then the built artifacts will be restored in our tests/self-hosted-tests jobs and used in the tests.

@bogwi bogwi Sep 19, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I agree with you but this PR stack inherited this marker.

This PR' main purpose is to enable remaining tests for mac ci not messing with old. These enabled test well pass green locally and should be run on the mac runner as well.

We aim for the full parity with linux ci.

But let's refactor those rust jobs in the consecutive PRs.

@bogwi
bogwi requested a review from Dreamsorcerer September 18, 2026 18:23

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PlzReview ready-to-merge Required CI checks have passed on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants