Updates tests for Isaac Sim CI pipeline#5403
Conversation
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
This PR refactors CI test markers by replacing per-test @pytest.mark.isaacsim_ci decorators with module-level pytestmark = pytest.mark.isaacsim_ci assignments. It also removes 35 lines of @pytest.mark.isaacsim_ci decorators from isaaclab_newton test files entirely. The change is mechanical and consistent across 30 files, consolidating test markers for Isaac Sim CI pipeline integration.
Architecture Impact
Self-contained. This is a test infrastructure change that affects how pytest discovers and filters tests for the Isaac Sim CI pipeline. No production code is modified. The change simplifies marker management by applying the marker at module scope rather than per-test.
Implementation Verdict
Ship it — with one clarification needed on the Newton test marker removal.
Test Coverage
This PR modifies test files themselves, not production code. The changes ensure tests are correctly tagged for the Isaac Sim CI pipeline. No new functionality requires additional tests.
CI Status
No CI checks available yet. This PR specifically affects which tests run in the Isaac Sim CI pipeline, so CI results would be essential to verify the intended behavior.
Findings
🟡 Warning: isaaclab_newton tests — Marker removal inconsistency
In source/isaaclab_newton/test/assets/test_articulation.py (lines 386, 435, 484, etc.) and source/isaaclab_newton/test/assets/test_rigid_object.py (lines 124, 195, 212, etc.), the @pytest.mark.isaacsim_ci markers are being removed entirely rather than consolidated to module-level like all other files.
Looking at the diff for test_articulation.py:
-@pytest.mark.isaacsim_ci
def test_initialization_floating_base_non_root(...)Unlike all other modified files which add pytestmark = pytest.mark.isaacsim_ci at module level, these Newton test files have no such addition shown. This means:
- Either the files already have
pytestmarkat module level (not visible in the truncated content) - Or these tests are intentionally being excluded from the Isaac Sim CI
The PR description states "Refines the list of CI tests that also get triggered in Isaac Sim CI" and "Ensures we are including tests covering rendering and physx" — Newton is neither of these, so this may be intentional. However, this should be explicitly confirmed.
🔵 Improvement: source/isaaclab/test/envs/test_video_recorder.py:17 — Marker placement
pytestmark = pytest.mark.isaacsim_ci
_BLANK_720p = np.zeros((720, 1280, 3), dtype=np.uint8)The marker is placed between imports and module constants without a blank line separator. While functional, adding a blank line after the pytestmark assignment would improve readability and match the pattern in other modified files (e.g., test_camera.py:32 has proper spacing).
🔵 Improvement: Consistency verification
The changes correctly consolidate markers in the following files:
test_pink_ik.py:34✓test_pink_ik_components.py:22✓test_env_rendering_logic.py:34✓test_camera.py:32✓test_tiled_camera_env.py:44✓test_cloner.py:28✓test_mjcf_converter.py:25✓- All spawn tests ✓
- All PhysX tests ✓
test_record_video.py:31✓test_rendering_correctness.py:40✓
The removals in test_camera.py lines 832, 873, 950, 980, 1009, 1042 are correct since the module-level marker now covers these tests.
🔵 Improvement: Mimic test files consistency
Files test_generate_dataset_franka_state.py, test_generate_dataset_franka_visuomotor.py, test_generate_dataset_gr1t2_nutpour.py, and test_generate_dataset_gr1t2_pickplace.py have markers removed but no module-level pytestmark added. Checking the full context would confirm if these already have the module-level marker. If not, this would exclude these tests from Isaac Sim CI.
Greptile SummaryThis PR refines the set of tests tagged with Confidence Score: 5/5Safe to merge — purely CI marker configuration with no logic changes All changes are mechanical pytest marker adjustments. Per-function marks are consolidated to module-level pytestmark where appropriate, and marks are intentionally removed from Newton and Mimic test files. No test logic, assertions, or functional code is modified. No files require special attention Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[pytest -m isaacsim_ci] --> B{Module type}
B -->|isaaclab sim/sensors/envs/controllers| C[pytestmark = pytest.mark.isaacsim_ci\nAll tests in module run]
B -->|isaaclab_physx sim/renderers| D[pytestmark = pytest.mark.isaacsim_ci\nAll tests in module run]
B -->|isaaclab_tasks tests| E[pytestmark = pytest.mark.isaacsim_ci\nAll tests in module run]
B -->|isaaclab_newton assets| F[isaacsim_ci marks removed\nTests excluded from Isaac Sim CI]
B -->|isaaclab_mimic tests| G[isaacsim_ci marks removed\nTests excluded from Isaac Sim CI]
Reviews (1): Last reviewed commit: "Updates tests for Isaac Sim CI pipeline" | Re-trigger Greptile |
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
This PR refactors the CI test marking strategy by replacing per-test @pytest.mark.isaacsim_ci decorators with module-level pytestmark = pytest.mark.isaacsim_ci assignments. This is a purely mechanical change that consolidates test marking at the module level for consistency. The change also reorders some existing markers to place @pytest.mark.isaacsim_ci first (before @pytest.mark.parametrize), which has no functional impact but improves consistency.
Architecture Impact
Self-contained. This change affects test discovery and CI filtering only. No production code is modified. The behavior of which tests run under the isaacsim_ci marker remains identical—all tests in the modified modules will be marked, matching the previous per-test marking pattern.
Implementation Verdict
Ship it
The change is correct and consistent. All modified test files either:
- Add
pytestmark = pytest.mark.isaacsim_ciat module level (new marking) - Remove individual
@pytest.mark.isaacsim_cidecorators from tests that are now covered by the module-level mark - Reorder existing markers for consistency (placing
isaacsim_cifirst)
Test Coverage
This PR modifies test infrastructure only. No new tests are needed—this is a CI configuration refinement. The existing tests will continue to run with the same marking, just applied at module level instead of per-test.
CI Status
Most CI jobs are still pending. Key jobs that have passed:
- ✅ pre-commit (formatting/linting)
- ✅ Build Wheel
- ✅ Installation Tests
- ✅ Build Base Docker Image
The pending jobs (isaaclab (core), isaaclab_tasks, isaaclab_newton, isaaclab_physx, isaaclab_mimic) are exactly the ones that will exercise the modified test files. Should verify these pass before merging.
Findings
🔵 Improvement: source/isaaclab_physx/test/sim/test_cloner.py:26 — Unnecessary wp.init() addition
This file adds wp.init() but the corresponding source/isaaclab/test/sim/test_cloner.py (the non-PhysX version at line 28) already has it. Both files import warp at module level. While not incorrect (warp handles duplicate init gracefully), this appears to be copy-paste from the core cloner test and may have been unintentionally included in this PR's scope. The PhysX cloner tests don't directly use warp kernels—they use PhysX views. Consider whether this is intentional.
🔵 Improvement: source/isaaclab_newton/test/assets/test_articulation.py — Marker ordering inconsistency
The reordering places @pytest.mark.isaacsim_ci first in most places, but one test at line 888 (test_joint_effort_limits) had its @pytest.mark.isaacsim_ci marker removed entirely rather than moved to first position. Looking at the diff:
@pytest.mark.parametrize("device", ["cuda:0", "cpu"])
@pytest.mark.parametrize("add_ground_plane", [True])
@pytest.mark.parametrize("articulation_type", ["panda"])
-@pytest.mark.isaacsim_ci
def test_joint_effort_limits(...)This test will still be marked via pytestmark at module level (if one exists), but the module doesn't have a pytestmark assignment. However, examining the full file content provided, I don't see a pytestmark = pytest.mark.isaacsim_ci line at module level for this file. The diff only shows the removal of individual markers without adding a module-level mark.
Wait—re-examining: The diff for test_articulation.py shows markers being reordered (moving isaacsim_ci to first position) but NOT adding a pytestmark. The removals at lines 888, 2337, 2547, 2571 appear to be accidental deletions that will cause those tests to NOT run in Isaac Sim CI.
🔴 Critical: source/isaaclab_newton/test/assets/test_articulation.py — Missing isaacsim_ci markers on 4 tests
The following tests had their @pytest.mark.isaacsim_ci markers removed without a module-level pytestmark being added:
test_joint_effort_limits(line 888)test_write_joint_frictions_to_sim(line 2337)test_randomize_rigid_body_com(line 2547)test_randomize_rigid_body_collider_offsets(line 2571)
This file does NOT have pytestmark = pytest.mark.isaacsim_ci at module level, so these 4 tests will be excluded from Isaac Sim CI runs.
🔴 Critical: source/isaaclab_newton/test/assets/test_rigid_object.py:1212 — Test marker ordering error
@pytest.mark.isaacsim_ci
@pytest.mark.skip(reason="PhysX-specific warmup test")
def test_warmup_attach_stage_not_called_for_cpu():The markers were swapped so isaacsim_ci comes first, but this test is in a Newton-specific file and is skipped as "PhysX-specific". This is correct but highlights that the file lacks a module-level pytestmark, making the marker reordering necessary. The file also doesn't have pytestmark at module level, but individual tests still have their markers.
🔵 Improvement: Inconsistent module-level marking strategy
Some files get pytestmark added (e.g., test_camera.py, test_env_rendering_logic.py), while others have individual markers reordered without module-level marking (e.g., test_articulation.py, test_rigid_object.py). A consistent strategy would be cleaner—either all files use pytestmark or maintain per-test markers.
There was a problem hiding this comment.
🤖 Isaac Lab Review Bot
Summary
This PR refines the CI test marker strategy by consolidating test file markers using pytestmark = pytest.mark.isaacsim_ci at the module level instead of per-test decorators. It also includes a minor performance threshold adjustment for robot load tests. The changes are mechanical and consistent, improving maintainability by reducing decorator duplication.
Architecture Impact
Self-contained. The changes only affect test file metadata (pytest markers) and one performance threshold. No production code is modified, and no public APIs are changed. The marker consolidation ensures all tests in affected files run in the Isaac Sim CI pipeline uniformly.
Implementation Verdict
Ship it | Minor fixes needed
Test Coverage
This PR modifies test infrastructure rather than adding new tests. The marker consolidation ensures existing tests are properly tagged for the Isaac Sim CI pipeline. The performance threshold adjustment in test_robot_load_performance.py acknowledges a known regression with a TODO comment.
CI Status
Several checks are still pending (Deploy Docs, license-check, Installation Tests, Build Latest Docs). Pre-commit, Build Wheel, and labeler have passed. Full CI results should be verified before merge.
Findings
🔵 Improvement: source/isaaclab_newton/test/assets/test_articulation.py:2544-2571 — Inconsistent marker placement
Three tests (test_write_joint_frictions_to_sim, test_randomize_rigid_body_com, test_randomize_rigid_body_collider_offsets) had their @pytest.mark.isaacsim_ci decorators removed but don't have them re-added. However, since pytestmark is NOT added to this file at module level, these tests will no longer be marked with isaacsim_ci. This appears inconsistent with the PR's intent:
# Line 2339 - decorator removed but no module-level pytestmark exists in this file
@pytest.mark.parametrize("num_articulations", [1, 2])
@pytest.mark.parametrize("device", ["cuda:0", "cpu"])
@pytest.mark.parametrize("articulation_type", ["panda"])
def test_write_joint_frictions_to_sim(sim, num_articulations, device, add_ground_plane, articulation_type):The Newton test files (test_articulation.py and test_rigid_object.py) are having their per-test markers reordered (moved to top of decorator stack) rather than consolidated to module level. This is correct for these files since they use fixtures that supply sim.
🔵 Improvement: source/isaaclab/test/performance/test_robot_load_performance.py:34-37 — TODO comment without tracking
The threshold regression from 10s to 15s is documented but not tracked:
# TODO: regression - this used to be 10
({"name": "Cartpole", "robot_cfg": CARTPOLE_CFG, "expected_load_time": 15.0}, "cuda:0"),Consider creating an issue to track this performance regression and referencing it in the comment.
🔵 Improvement: source/isaaclab_mimic/test/*.py — Marker removal without module-level replacement
In the four mimic test files, individual @pytest.mark.isaacsim_ci decorators are removed from test functions, but no pytestmark = pytest.mark.isaacsim_ci is added at module level. Checking the full file content reveals these files already have pytestmark defined, so the removal is correct - the existing module-level marker will cover all tests.
🔵 Improvement: source/isaaclab_physx/test/sim/test_cloner.py:26 — Redundant wp.init() call
wp.init()This wp.init() was added but the base isaaclab/test/sim/test_cloner.py doesn't have it. Looking at the file, warp is imported but wp.init() may be called elsewhere during import or fixture setup. Verify this is necessary - it may be harmless but adds inconsistency between the two cloner test files.
🟡 Warning: source/isaaclab/test/sensors/test_camera.py:32 — Module marker removes explicit test control
Adding pytestmark = pytest.mark.isaacsim_ci means ALL tests in this file (including any future tests) will automatically be marked. The previous approach with individual decorators allowed selective marking. This is intentional per the PR description but worth noting that any test added to these files will automatically run in Isaac Sim CI.
Description
Refines the list of CI tests that also get triggered in Isaac Sim CI.
Ensures we are including tests covering rendering and physx that can be impacted by Isaac Sim and OV side changes.
Type of change
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there