75 / 108 · 03 Agentic Testing Architectures · The Dead Man's Switch Pattern← prev⊞ allnext →☰ Read as one page
10.3Process Cleanup
When a Dead Man's Switch triggers, it kills the process abruptly. This can leave zombie processes (Chrome instances, daemon processes, temp files). Always implement cleanup:
#!/usr/bin/env python3
"""cleanup_agent_processes.py — Run after agentic tests to clean up."""
import subprocess
import os
import signal
import glob
def cleanup():
# Kill any remaining Chrome processes started by tests
subprocess.run(["pkill", "-f", "chrome.*--test-type"], capture_output=True)
# Kill any lingering browser-session processes (playwright-cli sessions)
subprocess.run(["pkill", "-f", "playwright-cli"], capture_output=True)
# Kill any chromedriver processes
subprocess.run(["pkill", "-f", "chromedriver"], capture_output=True)
# Remove temporary screenshot files
for f in glob.glob("/tmp/agent_screenshot_*.png"):
os.remove(f)
# Remove stale lock files
for f in glob.glob("/tmp/agent_lock_*"):
os.remove(f)
# Remove shared state files from agent runs
for f in glob.glob("/tmp/agent_state_*.json"):
os.remove(f)
print("Agent cleanup complete")
if __name__ == "__main__":
cleanup()