Skip to content

Updates tests for Isaac Sim CI pipeline#5403

Merged
kellyguo11 merged 4 commits intoisaac-sim:developfrom
kellyguo11:update-isaacsim-ci
Apr 26, 2026
Merged

Updates tests for Isaac Sim CI pipeline#5403
kellyguo11 merged 4 commits intoisaac-sim:developfrom
kellyguo11:update-isaacsim-ci

Conversation

@kellyguo11
Copy link
Copy Markdown
Contributor

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

  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@github-actions github-actions Bot added the isaac-mimic Related to Isaac Mimic team label Apr 25, 2026
Copy link
Copy Markdown

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Choose a reason for hiding this comment

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

🤖 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:

  1. Either the files already have pytestmark at module level (not visible in the truncated content)
  2. 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-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 25, 2026

Greptile Summary

This PR refines the set of tests tagged with pytest.mark.isaacsim_ci to better reflect what should run in the Isaac Sim CI pipeline. The main pattern across most files is replacing scattered per-function @pytest.mark.isaacsim_ci decorators with a single module-level pytestmark = pytest.mark.isaacsim_ci, while intentionally removing the mark entirely from Newton (isaaclab_newton) and Mimic (isaaclab_mimic) test suites so they no longer run in Isaac Sim CI.

Confidence Score: 5/5

Safe 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

Filename Overview
source/isaaclab/test/sensors/test_camera.py Migrates from per-function @pytest.mark.isaacsim_ci to module-level pytestmark, broadening CI coverage to all camera tests
source/isaaclab_newton/test/assets/test_articulation.py Removes isaacsim_ci marks from all ~20 test functions without adding a module-level mark, intentionally excluding Newton articulation tests from Isaac Sim CI
source/isaaclab_newton/test/assets/test_rigid_object.py Removes isaacsim_ci marks from all rigid object tests, intentionally excluding them from Isaac Sim CI (Newton physics backend)
source/isaaclab_mimic/test/test_generate_dataset_franka_state.py Removes isaacsim_ci marks from individual tests without a module-level replacement — intentionally excludes mimic dataset tests from Isaac Sim CI
source/isaaclab_physx/test/renderers/test_isaac_rtx_renderer_utils.py Adds module-level pytestmark to include RTX renderer utility tests in Isaac Sim CI
source/isaaclab_tasks/test/test_rendering_correctness.py Adds module-level pytestmark to include rendering correctness tests in Isaac Sim CI

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]
Loading

Reviews (1): Last reviewed commit: "Updates tests for Isaac Sim CI pipeline" | Re-trigger Greptile

Copy link
Copy Markdown

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Choose a reason for hiding this comment

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

🤖 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:

  1. Add pytestmark = pytest.mark.isaacsim_ci at module level (new marking)
  2. Remove individual @pytest.mark.isaacsim_ci decorators from tests that are now covered by the module-level mark
  3. Reorder existing markers for consistency (placing isaacsim_ci first)

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.

Copy link
Copy Markdown

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Choose a reason for hiding this comment

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

🤖 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.

@kellyguo11 kellyguo11 merged commit 4d58ce4 into isaac-sim:develop Apr 26, 2026
73 of 76 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

isaac-mimic Related to Isaac Mimic team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant