async def METHOD_NAME() -> None:
    """Upload a python protocol and 2 custom labware files.
    Test that labware files are persisted on server restart.
    """
    port = "15556"
    async with RobotClient.make(
        base_url=f"http://localhost:{port}", version="*"
    ) as robot_client:
        assert (
            await robot_client.wait_until_dead()
        ), "Dev Robot is running and must not be."
        with DevServer(port=port) as server:
            server.start()
            assert (
                await robot_client.wait_until_alive()
            ), "Dev Robot never became available."
            protocol = await robot_client.post_protocol(
                [
                    Path("./tests/integration/protocols/cpx_4_6_tuberack_100ul.py"),
                    Path("./tests/integration/protocols/cpx_4_tuberack_100ul.json"),
                    Path("./tests/integration/protocols/cpx_6_tuberack_100ul.json"),
                ]
            )
            protocol_upload_json = protocol.json()
            protocol_id = protocol_upload_json["data"]["id"]
            result = await robot_client.get_protocol(protocol_id)
            protocol_detail = result.json()["data"]
            # The analysisSummaries field is nondeterministic because the observed
            # analysis statuses depend on request timing.
            # Since we already cover analysis persistence elsewhere in this file,
            # we can ignore the whole field in this test to avoid the nondeterminism.
            del protocol_detail["analysisSummaries"]
            server.stop()
            assert await robot_client.wait_until_dead(), "Dev Robot did not stop."
            server.start()
            assert (
                await robot_client.wait_until_alive()
            ), "Dev Robot never became available."
            result = await robot_client.get_protocol(protocol_id)
            restarted_protocol_detail = result.json()["data"]
            del restarted_protocol_detail["analysisSummaries"]
            protocol_detail["files"].sort(key=lambda n: n["name"])
            restarted_protocol_detail["files"].sort(key=lambda n: n["name"])
            assert restarted_protocol_detail == protocol_detail
            four_tuberack = Path(
                f"{server.persistence_directory}/protocols/{protocol_id}/cpx_4_tuberack_100ul.json"
            )
            six_tuberack = Path(
                f"{server.persistence_directory}/protocols/{protocol_id}/cpx_6_tuberack_100ul.json"
            )
            assert four_tuberack.is_file()
            assert six_tuberack.is_file()
            server.stop()