code: def test_supports_trajectory_recording_wrapper():
      """
      Tests whether agent integration supports trajectory recording wrappers.
      """
  
      class TestWriter(TrajectoryWriter):
          """Mock writer for checking that trajectory recording goes through."""
  
          def __init__(self):
              self.step_count = 0
  
          def write(self, episode_record: StateTrajectoryRecord):
              """Count recorded steps"""
              self.step_count += len(episode_record.step_records)
              assert episode_record.renderer is not None
  
      step_count = 10
  
      writer = TestWriter()
      TrajectoryWriterRegistry.writers = (
          []
      )  # Ensure there is no other writer
      TrajectoryWriterRegistry.register_writer(writer)
  
      agent_deployment = AgentDeployment(
          policy=DummyGreedyPolicy(),
          env=TrajectoryRecordingWrapper.wrap(build_dummy_maze_env()),
      )
  
      # Step the environment manually here and query the agent integration wrapper for maze_actions
      test_core_env = build_dummy_maze_env().core_env
      maze_state = test_core_env.reset()
      reward, done, info = None, None, None
      for i in range(10):
          maze_action = agent_deployment.act(
              maze_state, reward, done, info
          )
          maze_state, reward, done, info = test_core_env.step(
              maze_action
          )
  
      # Rollout needs to be finished to notify the wrappers
      agent_deployment.close(maze_state, reward, done, info)
  
      assert writer.step_count == step_count + 1
  
imports: from typing import Tuple, Sequence, Optional
  import gym
  import numpy
  import pytest
  from maze.core.agent.random_policy import RandomPolicy
  from maze.core.agent_deployment.agent_deployment import AgentDeployment
  from maze.core.env.action_conversion import ActionType
  from maze.core.env.base_env import BaseEnv
  from maze.core.env.base_env_events import BaseEnvEvents
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.observation_conversion import ObservationType
  from maze.core.env.structured_env import ActorID
  from maze.core.log_events.episode_event_log import EpisodeEventLog
  from maze.core.log_events.log_events_writer import LogEventsWriter
  from maze.core.log_events.log_events_writer_registry import LogEventsWriterRegistry
  from maze.core.log_events.monitoring_events import RewardEvents
  from maze.core.log_stats.log_stats import LogStatsWriter, LogStats, LogStatsLevel
  from maze.core.log_stats.log_stats import register_log_stats_writer
  from maze.core.trajectory_recording.records.trajectory_record import StateTrajectoryRecord
  from maze.core.trajectory_recording.writers.trajectory_writer import TrajectoryWriter
  from maze.core.trajectory_recording.writers.trajectory_writer_registry import TrajectoryWriterRegistry
  from maze.core.utils.config_utils import EnvFactory, read_hydra_config
  from maze.core.wrappers.log_stats_wrapper import LogStatsWrapper
  from maze.core.wrappers.maze_gym_env_wrapper import GymMazeEnv
  from maze.core.wrappers.trajectory_recording_wrapper import TrajectoryRecordingWrapper
  from maze.test.shared_test_utils.dummy_wrappers.step_skip_in_step_wrapper import StepSkipInStepWrapper
  from maze.test.shared_test_utils.dummy_env.agents.dummy_policy import DummyGreedyPolicy
  from maze.test.shared_test_utils.helper_functions import build_dummy_maze_env, build_dummy_structured_env
label_desc: Use image node_id 2 for calling a global function with example usage: test_supports_trajectory_recording_wrapper() without return types