What is testcafe-hammerhead?
testcafe-hammerhead is a core library used by TestCafe to provide a proxy server that can intercept and modify HTTP requests and responses. It is primarily used for browser automation and testing, allowing you to simulate user actions and handle various web interactions.
What are testcafe-hammerhead's main functionalities?
HTTP Request Interception
Intercepts HTTP requests and allows you to modify them, such as adding custom headers.
const hammerhead = require('testcafe-hammerhead');
hammerhead.onRequest((req, res) => {
if (req.url.includes('example.com')) {
res.setHeader('X-Custom-Header', 'CustomValue');
}
});
HTTP Response Modification
Intercepts HTTP responses and allows you to modify the response body.
const hammerhead = require('testcafe-hammerhead');
hammerhead.onResponse((req, res) => {
if (req.url.includes('example.com')) {
res.body = res.body.replace('old text', 'new text');
}
});
Cookie Management
Allows you to manage cookies by setting them in the HTTP response headers.
const hammerhead = require('testcafe-hammerhead');
hammerhead.onRequest((req, res) => {
if (req.url.includes('example.com')) {
res.setHeader('Set-Cookie', 'name=value; Path=/; HttpOnly');
}
});
Other packages similar to testcafe-hammerhead
puppeteer
Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. It can be used for browser automation and testing, similar to testcafe-hammerhead, but it operates at a higher level and provides more direct control over the browser.
selenium-webdriver
Selenium WebDriver is a tool for automating web application testing, and it allows you to control a browser programmatically. It is similar to testcafe-hammerhead in that it can be used for browser automation, but it supports a wider range of browsers and programming languages.
cypress
Cypress is a JavaScript end-to-end testing framework that aims to make testing fast, easy, and reliable. It provides a similar functionality to testcafe-hammerhead but with a more user-friendly API and built-in features for time travel and debugging.
testcafe-hammerhead
testcafe-hammerhead
is a powerful Web proxy used as a core for the TestCafe testing framework.
Core Concepts
testcafe-hammerhead
is a URL-rewriting proxy. This means that it rewrites all properties of the appropriate JavaScript objects that contain a URL value (Location
, HTMLLinkElement.href
, etc). You can see it if you open a proxied page, invoke the browser's DevTools and inspect any element.
In addition, the proxied web page does not know that it is opened under a proxy. The proxy intercepts access attempts to all URL-containing properties and provides the original values.
First Look
- Clone the Hammerhead repository
git clone https://github.com/DevExpress/testcafe-hammerhead.git
- Go to the
testcafe-hammerhead
folder
cd testcafe-hammerhead
- Install the dependencies
npm install
- Run the Hammerhead playground to see our proxy in action
node node_modules/gulp/bin/gulp http-playground
This opens a playground page where you can specify a webpage to proxy. Enter the page URL and hit Proxy!.
Features
- HTTP/HTTPS requests
- WebSockets, EventSource
- file upload
- request events (
onRequest
, onResponse
) - bypassing requests
- custom UI on a web page
Reporting Issues and Contributing
Read our Contributing Guide to learn how to contribute to the project.