diff --git a/testgres/node.py b/testgres/node.py
index 9a2f4e77..a019faf4 100644
--- a/testgres/node.py
+++ b/testgres/node.py
@@ -146,7 +146,7 @@ class PostgresNode(object):
     _port: typing.Optional[int]
     _should_free_port: bool
     _os_ops: OsOperations
-    _port_manager: PortManager
+    _port_manager: typing.Optional[PortManager]
 
     def __init__(self,
                  name=None,
@@ -313,6 +313,11 @@ def os_ops(self) -> OsOperations:
         assert isinstance(self._os_ops, OsOperations)
         return self._os_ops
 
+    @property
+    def port_manager(self) -> typing.Optional[PortManager]:
+        assert self._port_manager is None or isinstance(self._port_manager, PortManager)
+        return self._port_manager
+
     @property
     def name(self) -> str:
         if self._name is None:
diff --git a/tests/test_testgres_common.py b/tests/test_testgres_common.py
index cf203a67..72873a09 100644
--- a/tests/test_testgres_common.py
+++ b/tests/test_testgres_common.py
@@ -1503,6 +1503,88 @@ def test_try_to_start_node_after_free_manual_port(self, node_svc: PostgresNodeSe
                 ):
                     node2.start()
 
+    def test_node__os_ops(self, node_svc: PostgresNodeService):
+        assert type(node_svc) == PostgresNodeService  # noqa: E721
+
+        assert node_svc.os_ops is not None
+        assert isinstance(node_svc.os_ops, OsOperations)
+
+        with PostgresNode(name="node", os_ops=node_svc.os_ops, port_manager=node_svc.port_manager) as node:
+            # retest
+            assert node_svc.os_ops is not None
+            assert isinstance(node_svc.os_ops, OsOperations)
+
+            assert node.os_ops is node_svc.os_ops
+            # one more time
+            assert node.os_ops is node_svc.os_ops
+
+    def test_node__port_manager(self, node_svc: PostgresNodeService):
+        assert type(node_svc) == PostgresNodeService  # noqa: E721
+
+        assert node_svc.port_manager is not None
+        assert isinstance(node_svc.port_manager, PortManager)
+
+        with PostgresNode(name="node", os_ops=node_svc.os_ops, port_manager=node_svc.port_manager) as node:
+            # retest
+            assert node_svc.port_manager is not None
+            assert isinstance(node_svc.port_manager, PortManager)
+
+            assert node.port_manager is node_svc.port_manager
+            # one more time
+            assert node.port_manager is node_svc.port_manager
+
+    def test_node__port_manager_and_explicit_port(self, node_svc: PostgresNodeService):
+        assert type(node_svc) == PostgresNodeService  # noqa: E721
+
+        assert isinstance(node_svc.os_ops, OsOperations)
+        assert node_svc.port_manager is not None
+        assert isinstance(node_svc.port_manager, PortManager)
+
+        port = node_svc.port_manager.reserve_port()
+        assert type(port) == int  # noqa: E721
+
+        try:
+            with PostgresNode(name="node", port=port, os_ops=node_svc.os_ops) as node:
+                # retest
+                assert isinstance(node_svc.os_ops, OsOperations)
+                assert node_svc.port_manager is not None
+                assert isinstance(node_svc.port_manager, PortManager)
+
+                assert node.port_manager is None
+                assert node.os_ops is node_svc.os_ops
+
+                # one more time
+                assert node.port_manager is None
+                assert node.os_ops is node_svc.os_ops
+        finally:
+            node_svc.port_manager.release_port(port)
+
+    def test_node__no_port_manager(self, node_svc: PostgresNodeService):
+        assert type(node_svc) == PostgresNodeService  # noqa: E721
+
+        assert isinstance(node_svc.os_ops, OsOperations)
+        assert node_svc.port_manager is not None
+        assert isinstance(node_svc.port_manager, PortManager)
+
+        port = node_svc.port_manager.reserve_port()
+        assert type(port) == int  # noqa: E721
+
+        try:
+            with PostgresNode(name="node", port=port, os_ops=node_svc.os_ops, port_manager=None) as node:
+                # retest
+                assert isinstance(node_svc.os_ops, OsOperations)
+                assert node_svc.port_manager is not None
+                assert isinstance(node_svc.port_manager, PortManager)
+
+                assert node.port_manager is None
+                assert node.os_ops is node_svc.os_ops
+
+                # one more time
+                assert node.port_manager is None
+                assert node.os_ops is node_svc.os_ops
+        finally:
+            node_svc.port_manager.release_port(port)
+
     @staticmethod
     def helper__get_node(
         node_svc: PostgresNodeService,