Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Chrome DevTools
  3. clj-chrome-devtools

clj-chrome-devtools

MITClojure

A Clojure library for controlling headless Chrome via the Chrome DevTools Protocol, with auto-generated low-level commands and higher-level automation utilities.

GitHubGitHub
134 stars20 forks0 contributors

What is clj-chrome-devtools?

clj-chrome-devtools is a Clojure library that provides an API for controlling headless Chrome via the Chrome DevTools Protocol. It solves the problem of browser automation, web scraping, and testing by offering auto-generated low-level protocol commands and higher-level automation utilities. The library enables Clojure developers to programmatically interact with web pages, inspect DOM elements, and run tests in a headless Chrome environment.

Target Audience

Clojure developers who need to automate headless Chrome for tasks like web scraping, browser testing, or ClojureScript test execution. It's particularly useful for those building automation scripts, testing frameworks, or data extraction tools.

Value Proposition

Developers choose clj-chrome-devtools because it provides a stable, auto-generated low-level API that stays in sync with Chrome DevTools Protocol updates, combined with practical higher-level utilities. Its integration with Clojure test fixtures and support for Babashka scripts make it versatile for both production automation and lightweight scripting.

Overview

Clojure API for controlling a Chrome DevTools remote

Use Cases

Best For

  • Automating headless Chrome for web scraping and data extraction
  • Running browser-based tests for Clojure or ClojureScript applications
  • Building automation scripts with Babashka for lightweight Chrome control
  • Programmatically inspecting and manipulating DOM elements via Clojure
  • Integrating Chrome DevTools Protocol into Clojure projects without manual protocol implementation
  • Creating custom testing frameworks that require headless browser interaction

Not Ideal For

  • Projects requiring mature, out-of-the-box browser testing frameworks with built-in assertions and reporting tools
  • Teams already using JavaScript-based automation tools like Puppeteer or Playwright and unwilling to switch to Clojure
  • Developers needing quick, high-level automation without dealing with low-level protocol details or event handling
  • Scenarios where real-time, low-latency browser interactions are critical, due to WebSocket overhead

Pros & Cons

Pros

Auto-generated Protocol Accuracy

All low-level commands are automatically generated from official Chrome DevTools Protocol JSON files, ensuring accuracy and easy updates as the protocol evolves, as stated in the README.

Clojure Test Integration

Includes a test fixture for running tests with headless Chrome, supporting both Clojure and ClojureScript test suites without extra plugins, demonstrated in the README example.

Babashka Scripting Ease

Provides a quick-start script for Babashka, enabling lightweight automation without a full Clojure environment, ideal for scripting tasks as highlighted in the README.

Dual API Flexibility

Functions support both explicit connection parameters and a global context, offering flexibility for REPL usage and production code, as shown in the connection examples.

Cons

Rudimentary High-level API

The README admits the automation utilities are 'rudimentary' and still under development, limiting out-of-the-box functionality for complex tasks.

Event Handling Complexity

Using the low-level API requires manually implementing event handlers for data Chrome sends, adding boilerplate and complexity compared to more abstracted libraries.

Limited Ecosystem and Adoption

Being Clojure-specific, it has a smaller user base and fewer resources than mainstream tools like Puppeteer, which can affect community support and integration options.

Frequently Asked Questions

Quick Stats

Stars134
Forks20
Contributors0
Open Issues4
Last commit1 year ago
CreatedSince 2017

Tags

#clojurescript#headless-chrome#babashka#websocket#testing#clojure#chrome-devtools-protocol#web-scraping#browser-automation

Built With

W
WebSocket
C
Clojure
C
Chrome DevTools Protocol
B
Babashka

Included in

Chrome DevTools6.9k
Auto-fetched 17 hours ago

Related Projects

chromedpchromedp

A faster, simpler way to drive browsers supporting the Chrome DevTools Protocol.

Stars13,205
Forks882
Last commit9 days ago
RodRod

A Chrome DevTools Protocol driver for web automation and scraping.

Stars7,036
Forks476
Last commit9 days ago
chrome-remote-interfacechrome-remote-interface

Chrome Debugging Protocol interface for Node.js

Stars4,547
Forks324
Last commit5 months ago
pyppeteerpyppeteer

Headless chrome/chromium automation library (unofficial port of puppeteer)

Stars3,944
Forks346
Last commit2 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub