diff --git tests/all_tests.nut tests/all_tests.nut
index 189d19588..d9f904120 100644
--- tests/all_tests.nut
+++ tests/all_tests.nut
@@ -201,6 +201,7 @@ all_tests <- [
 	test_way_bridge_build_above_way,
 	test_way_bridge_build_above_runway,
 	test_way_bridge_planner,
+	test_way_bridge_renovate,
 	test_way_road_build_single_tile,
 	test_way_road_build_straight,
 	test_way_road_build_bend,
diff --git tests/tests/test_way_bridge.nut tests/tests/test_way_bridge.nut
index 234990f6c..047aef060 100644
--- tests/tests/test_way_bridge.nut
+++ tests/tests/test_way_bridge.nut
@@ -634,3 +634,69 @@ function test_way_bridge_planner()
 	ASSERT_EQUAL(pl.get_current_maintenance(), 0)
 	RESET_ALL_PLAYER_FUNDS()
 }
+
+
+function test_way_bridge_renovate()
+{
+	local pl          = player_x(0)
+	local bridge_desc = bridge_desc_x.get_available_bridges(wt_road)[0]
+	local bridge_desc_2 = bridge_desc_x.get_available_bridges(wt_road)[1]
+	local remover     = command_x(tool_remove_way)
+	ASSERT_TRUE(bridge_desc != null)
+	ASSERT_TRUE(bridge_desc_2 != null)
+
+	// build bridge on flat ground
+	ASSERT_EQUAL(command_x.build_bridge(pl, coord3d(3, 5, 0), coord3d(3, 2, 0), bridge_desc), null)
+
+	ASSERT_WAY_PATTERN(wt_road, coord3d(0, 0, 0),
+		[
+			"........",
+			"...4....",
+			"...5....",
+			"...0....",
+			"...0....",
+			"...5....",
+			"...1....",
+			"........"
+		])
+
+	ASSERT_WAY_PATTERN(wt_road, coord3d(0, 0, 1),
+		[
+			"........",
+			"...4....",
+			"...5....",
+			"...5....",
+			"...5....",
+			"...5....",
+			"...1....",
+			"........"
+		])
+
+	// renovate bridge
+	ASSERT_EQUAL(command_x.build_bridge(pl, coord3d(3, 1, 0), coord3d.invalid, bridge_desc_2), "")
+	ASSERT_WAY_PATTERN(wt_road, coord3d(0, 0, 1),
+		[
+			"........",
+			"...4....",
+			"...5....",
+			"...5....",
+			"...5....",
+			"...5....",
+			"...1....",
+			"........"
+		])
+
+	ASSERT_EQUAL(remover.work(pl, tile_x(3, 1, 0), tile_x(3, 6, 0), "" + wt_road), null)
+	ASSERT_WAY_PATTERN(wt_road, coord3d(0, 0, 0),
+		[
+			"........",
+			"........",
+			"........",
+			"........",
+			"........",
+			"........",
+			"........",
+			"........"
+		])
+	RESET_ALL_PLAYER_FUNDS()
+}
